| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- name: Test Build
- on:
- push:
- branches:
- - master
- - main
- pull_request:
- paths-ignore:
- - '**.md'
- jobs:
- build:
- name: Test ${{ matrix.arch }}
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- include:
- - arch: arm_cortex-a9_vfpv3-d16
- target: mvebu-cortexa9
- - arch: mips_24kc
- target: ath79-generic
- - arch: mipsel_24kc
- target: mt7621
- - arch: aarch64_cortex-a53
- target: mvebu-cortexa53
- - arch: arm_cortex-a15_neon-vfpv4
- target: armvirt-32
- - arch: i386_pentium-mmx
- target: x86-geode
- - arch: x86_64
- target: x86-64
- steps:
- - name: Free Disk Space
- uses: jlumbroso/free-disk-space@main
- with:
- tool-cache: true
- android: true
- dotnet: true
- haskell: true
- large-packages: true
- docker-images: true
- swap-storage: true
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Determine branch name
- run: |
- if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
- BRANCH="${GITHUB_BASE_REF#refs/heads/}"
- else
- BRANCH="${GITHUB_REF#refs/heads/}"
- fi
- echo "Building for $BRANCH"
- echo "BRANCH=$BRANCH" >> $GITHUB_ENV
- - name: Determine changed packages
- run: |
- # only detect packages with changes
- PKG_ROOTS=$(find . -name Makefile | \
- grep -v ".*/src/Makefile" | \
- sed -e 's@./\(.*\)/Makefile@\1/@')
-
- if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
- BASE_REF="origin/${BRANCH}"
- else
- BASE_REF="HEAD^"
- fi
-
- CHANGES=$(git diff --diff-filter=d --name-only $BASE_REF HEAD)
- PACKAGES=""
- for ROOT in $PKG_ROOTS; do
- for CHANGE in $CHANGES; do
- if [[ "$CHANGE" == "$ROOT"* ]]; then
- PACKAGE_NAME=$(echo "$ROOT" | sed -e 's@\(.*\)/@\1@')
- PACKAGES="$PACKAGES $PACKAGE_NAME"
- break
- fi
- done
- done
-
- # fallback to test packages if nothing explicitly changes
- PACKAGES="${PACKAGES:-luci-app-ssr-plus}"
- # clear spaces
- PACKAGES=$(echo $PACKAGES | xargs)
- echo "Building $PACKAGES"
- echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
- - name: Build
- uses: immortalwrt/gh-action-sdk@v7
- env:
- ARCH: ${{ matrix.arch }}
- FEEDNAME: packages_ci
- V: s
- target: ${{ matrix.target }}
- packages: ${{ env.PACKAGES }}
- - name: Move created packages to project dir
- run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || true
- - name: Collect metadata
- run: |
- MERGE_ID=$(git rev-parse --short HEAD)
-
- if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
- BASE_ID=$(git rev-parse --short origin/$BRANCH)
- HEAD_ID=$(git rev-parse --short HEAD)
- PRNUMBER=${GITHUB_REF_NAME%/merge}
- else
- BASE_ID=$(git rev-parse --short HEAD^)
- HEAD_ID=$MERGE_ID
- PRNUMBER="push-$MERGE_ID"
- fi
-
- echo "MERGE_ID=$MERGE_ID" >> $GITHUB_ENV
- echo "BASE_ID=$BASE_ID" >> $GITHUB_ENV
- echo "HEAD_ID=$HEAD_ID" >> $GITHUB_ENV
- echo "PRNUMBER=$PRNUMBER" >> $GITHUB_ENV
- echo "ARCHIVE_NAME=${{ matrix.arch }}-$PRNUMBER" >> $GITHUB_ENV
- - name: Generate metadata
- run: |
- shopt -s nullglob
- IPKS=( *.ipk )
-
- cat << EOF > PKG-INFO
- Metadata-Version: 2.1
- Name: ${{ env.ARCHIVE_NAME }}
- Version: $BRANCH
- Author: $GITHUB_ACTOR
- Home-page: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY
- Download-URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
- Summary: $PACKAGES
- Platform: ${{ matrix.arch }}
- Packages for ImmortalWrt $BRANCH running on ${{ matrix.arch }}, built from $PRNUMBER
- at commit $HEAD_ID, against $BRANCH at commit $BASE_ID.
- Modified packages:
- EOF
-
- for p in $PACKAGES; do
- echo " $p" >> PKG-INFO
- done
- echo >> PKG-INFO
- echo "Package count: ${#IPKS[@]}" >> PKG-INFO
- echo "Package size summary:" >> PKG-INFO
- for f in "${IPKS[@]}"; do
- du -sh "$f" >> PKG-INFO
- done
- if [ ${#IPKS[@]} -eq 0 ]; then
- echo "No packages built." >> PKG-INFO
- fi
- cat PKG-INFO
- - name: Store packages
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.ARCHIVE_NAME }}-packages
- path: |
- Packages
- Packages.*
- *.ipk
- PKG-INFO
- - name: Store logs
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.ARCHIVE_NAME }}-logs
- path: |
- logs/
- PKG-INFO
|