Jelajahi Sumber

ci: publish each manager APK as its own artifact via staged zip matrix

TheWildJames 3 minggu lalu
induk
melakukan
2dc614ab65
1 mengubah file dengan 58 tambahan dan 13 penghapusan
  1. 58 13
      .github/workflows/main.yml

+ 58 - 13
.github/workflows/main.yml

@@ -376,7 +376,7 @@ jobs:
           if-no-files-found: error
           compression-level: 9
 
-  upload-manager-artifacts:
+  stage-manager-zips:
     needs: resolve-sources
     if: ${{ needs.resolve-sources.outputs.manager_list != '' }}
     runs-on: ubuntu-latest
@@ -395,13 +395,58 @@ jobs:
           run_id: ${{ matrix.manager.run_id }}
           want: ${{ matrix.manager.want }}
           token: ${{ secrets.MY_GITHUB_TOKEN }}
-          output_dir: ${{ github.workspace }}/manager-art/${{ matrix.manager.repo }}
+          output_dir: ${{ github.workspace }}/manager-zips/${{ matrix.manager.repo }}
+      - name: Upload staged manager zips for ${{ matrix.manager.repo }}
+        uses: actions/upload-artifact@v4
+        with:
+          name: manager-zip-${{ matrix.manager.repo }}
+          path: manager-zips/${{ matrix.manager.repo }}/
+          if-no-files-found: error
+
+  upload-manager-artifacts:
+    needs: stage-manager-zips
+    if: ${{ always() && needs.stage-manager-zips.result == 'success' }}
+    runs-on: ubuntu-latest
+    outputs:
+      zip_list: ${{ steps.list.outputs.zip_list }}
+    steps:
+      - uses: actions/checkout@v7
+      - name: Download all staged manager zips
+        uses: actions/download-artifact@v7
+        with:
+          path: manager-zips
+          pattern: 'manager-zip-*'
+          merge-multiple: true
+      - name: List all manager APK zips
+        id: list
+        shell: bash
+        run: |
+          set -euo pipefail
+          ZIPS="$(find manager-zips -type f -iname '*.zip' -printf '%f\n' \
+            | jq -R -s -c 'split("\n") | map(select(. != ""))')"
+          echo "zip_list=${ZIPS}" >> "$GITHUB_OUTPUT"
 
-      - name: Upload manager APKs for ${{ matrix.manager.repo }} as own artifact
+  publish-manager-artifacts:
+    needs: upload-manager-artifacts
+    if: ${{ needs.upload-manager-artifacts.result == 'success' }}
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        zip: ${{ fromJson(needs.upload-manager-artifacts.outputs.zip_list) }}
+    steps:
+      - uses: actions/checkout@v7
+      - name: Download manager-zips bundle
+        uses: actions/download-artifact@v7
+        with:
+          path: manager-zips
+          pattern: 'manager-zip-*'
+          merge-multiple: true
+      - name: Upload ${{ matrix.zip }} as its own artifact
         uses: actions/upload-artifact@v4
         with:
-          name: manager-${{ matrix.manager.repo }}
-          path: manager-art/${{ matrix.manager.repo }}/
+          name: manager-apk-${{ matrix.zip }}
+          path: manager-zips/${{ matrix.zip }}
           if-no-files-found: error
 
   build-nomount-module:
@@ -510,7 +555,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android12-5.10') }}
     strategy:
       fail-fast: false
@@ -536,7 +581,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.10') }}
     strategy:
       fail-fast: false
@@ -562,7 +607,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.15') }}
     strategy:
       fail-fast: false
@@ -588,7 +633,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-5.15') }}
     strategy:
       fail-fast: false
@@ -614,7 +659,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-6.1') }}
     strategy:
       fail-fast: false
@@ -640,7 +685,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android15-6.6') }}
     strategy:
       fail-fast: false
@@ -666,7 +711,7 @@ jobs:
     needs:
     - prepare-ccache
     - resolve-sources
-    - upload-manager-artifacts
+    - publish-manager-artifacts
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android16-6.12') }}
     strategy:
       fail-fast: false
@@ -1088,7 +1133,7 @@ jobs:
       uses: actions/download-artifact@v7
       with:
         path: release-assets/manager
-        pattern: 'manager-*'
+        pattern: 'manager-apk-*'
         merge-multiple: true
         if-no-files-found: ignore