Sfoglia il codice sorgente

Merge pull request #1794 from zxlhhyccc/custom

update CI
zxl hhyccc 1 mese fa
parent
commit
c32322fe38
1 ha cambiato i file con 70 aggiunte e 45 eliminazioni
  1. 70 45
      .github/workflows/multi-arch-test-build.yml

+ 70 - 45
.github/workflows/multi-arch-test-build.yml

@@ -15,22 +15,16 @@ jobs:
         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
 
@@ -45,6 +39,9 @@ jobs:
           large-packages: true
           docker-images: true
           swap-storage: true
+          apt: true
+          brew: true
+          port: true
 
       - uses: actions/checkout@v3
         with:
@@ -52,77 +49,105 @@ jobs:
 
       - name: Determine branch name
         run: |
-          BRANCH="${GITHUB_BASE_REF#refs/heads/}"
+          if [ -n "$GITHUB_BASE_REF" ]; 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
+          if [ -n "$GITHUB_BASE_REF" ]; then
+            BASE_REF="origin/$GITHUB_BASE_REF"
+          else
+            BASE_REF="HEAD^"
+          fi
+          
           PKG_ROOTS=$(find . -name Makefile | \
-            grep -v ".*/src/Makefile" | \
-            sed -e 's@./\(.*\)/Makefile@\1/@')
-          CHANGES=$(git diff --diff-filter=d --name-only origin/$BRANCH)
-
+            grep -E "/(src)?/Makefile" | \
+            sed -e 's@/Makefile@@' -e 's@^\./@@' | \
+            sort -u)
+          
+          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
-                PACKAGES+=$(echo "$ROOT" | sed -e 's@\(.*\)/@\1 @')
+              if [[ "$CHANGE" == "$ROOT/"* ]] || [[ "$CHANGE" == "$ROOT/Makefile" ]]; then
+                PACKAGE_NAME=$(echo "$ROOT" | awk -F/ '{print $NF}')
+                PACKAGES+="$PACKAGE_NAME "
                 break
               fi
             done
           done
-          # fallback to test packages if nothing explicitly changes this is
-          # should run if other mechanics in packages.git changed
+          
           PACKAGES="${PACKAGES:-luci-app-ssr-plus}"
-
-          echo "Building $PACKAGES"
+          
+          echo "Building packages: $PACKAGES"
           echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
 
       - name: Build
-        uses: immortalwrt/gh-action-sdk@v4
+        uses: immortalwrt/gh-action-sdk@v5
         env:
           ARCH: ${{ matrix.arch }}
           FEEDNAME: packages_ci
           V: s
+        with:
+          target: ${{ matrix.target }}
+          packages: ${{ env.PACKAGES }}
 
       - name: Move created packages to project dir
-        run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || true
+        run: |
+          mkdir -p artifacts/packages
+          cp -f bin/packages/${{ matrix.arch }}/packages_ci/*.ipk artifacts/packages/ 2>/dev/null || true
+          cp -f bin/packages/${{ matrix.arch }}/packages_ci/Packages* artifacts/ 2>/dev/null || true
+
+      - name: Collect build logs
+        run: |
+          mkdir -p artifacts/logs
+          cp -f logs/* artifacts/logs/ 2>/dev/null || true
+          cp -f .config artifacts/ 2>/dev/null || true
+          cp -f tmp/.config* artifacts/ 2>/dev/null || true
 
       - name: Collect metadata
         run: |
+          if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
+            PRNUMBER=$(echo $GITHUB_REF | awk -F/ '{print $3}')
+          else
+            PRNUMBER=""
+          fi
+          
           MERGE_ID=$(git rev-parse --short HEAD)
           echo "MERGE_ID=$MERGE_ID" >> $GITHUB_ENV
-          echo "BASE_ID=$(git rev-parse --short HEAD^1)" >> $GITHUB_ENV
-          echo "HEAD_ID=$(git rev-parse --short HEAD^2)" >> $GITHUB_ENV
-          PRNUMBER=${GITHUB_REF_NAME%/merge}
           echo "PRNUMBER=$PRNUMBER" >> $GITHUB_ENV
-          echo "ARCHIVE_NAME=${{matrix.arch}}-PR$PRNUMBER-$MERGE_ID" >> $GITHUB_ENV
+          echo "ARCHIVE_NAME=${{matrix.arch}}-PR${PRNUMBER}-$MERGE_ID" >> $GITHUB_ENV
 
       - name: Generate metadata
         run: |
           cat << _EOF_ > PKG-INFO
-          Metadata-Version: 2.1
-          Name: ${{env.ARCHIVE_NAME}}
-          Version: $BRANCH
-          Author: $GITHUB_ACTOR
-          Home-page: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/$PRNUMBER
-          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 PR $PRNUMBER
-          at commit $HEAD_ID, against $BRANCH at commit $BASE_ID, with merge SHA $MERGE_ID.
-
-          Modified packages:
-          _EOF_
+Metadata-Version: 2.1
+Name: ${{env.ARCHIVE_NAME}}
+Version: $BRANCH
+Author: $GITHUB_ACTOR
+Home-page: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/$PRNUMBER
+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 PR $PRNUMBER
+at commit $HEAD_ID, against $BRANCH at commit $BASE_ID, with merge SHA $MERGE_ID.
+
+Modified packages:
+_EOF_
           for p in $PACKAGES
           do
-            echo "  "$p >> PKG-INFO
+            echo "  $p" >> PKG-INFO
           done
           echo >> PKG-INFO
-          echo Full file listing: >> PKG-INFO
-          ls -al *.ipk >> PKG-INFO || true
+          echo "Full file listing:" >> PKG-INFO
+          ls -al artifacts/packages/*.ipk 2>/dev/null || echo "No packages built" >> PKG-INFO
           cat PKG-INFO
 
       - name: Store packages
@@ -130,9 +155,8 @@ jobs:
         with:
           name: ${{env.ARCHIVE_NAME}}-packages
           path: |
-            Packages
-            Packages.*
-            *.ipk
+            artifacts/packages/
+            artifacts/Packages*
             PKG-INFO
 
       - name: Store logs
@@ -140,5 +164,6 @@ jobs:
         with:
           name: ${{env.ARCHIVE_NAME}}-logs
           path: |
-            logs/
+            artifacts/logs/
+            artifacts/.config*
             PKG-INFO