Parcourir la source

ci: resolve all component commits and clone shared sources once (resolve-sources)

TheWildJames il y a 3 semaines
Parent
commit
f3711c37c1
1 fichiers modifiés avec 109 ajouts et 25 suppressions
  1. 109 25
      .github/workflows/main.yml

+ 109 - 25
.github/workflows/main.yml

@@ -122,27 +122,111 @@ jobs:
           retention-days: 1
           retention-days: 1
           if-no-files-found: warn
           if-no-files-found: warn
 
 
-  resolve-nomount:
+  resolve-sources:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     outputs:
     outputs:
       nomount_commit: ${{ steps.resolve.outputs.nomount_commit }}
       nomount_commit: ${{ steps.resolve.outputs.nomount_commit }}
+      kernelsu_commit: ${{ steps.resolve.outputs.kernelsu_commit }}
+      kernelsu_branch: ${{ steps.resolve.outputs.kernelsu_branch }}
+      susfs_commit_android12_5_10: ${{ steps.resolve.outputs.susfs_commit_android12_5_10 }}
+      susfs_commit_android13_5_10: ${{ steps.resolve.outputs.susfs_commit_android13_5_10 }}
+      susfs_commit_android13_5_15: ${{ steps.resolve.outputs.susfs_commit_android13_5_15 }}
+      susfs_commit_android14_5_15: ${{ steps.resolve.outputs.susfs_commit_android14_5_15 }}
+      susfs_commit_android14_6_1: ${{ steps.resolve.outputs.susfs_commit_android14_6_1 }}
+      susfs_commit_android15_6_6: ${{ steps.resolve.outputs.susfs_commit_android15_6_6 }}
+      susfs_commit_android16_6_12: ${{ steps.resolve.outputs.susfs_commit_android16_6_12 }}
     steps:
     steps:
-      - name: Resolve latest NoMount dev commit
+      - name: Resolve latest component commits
         id: resolve
         id: resolve
-        if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
         shell: bash
         shell: bash
         run: |
         run: |
           set -euo pipefail
           set -euo pipefail
-          sha="$(git ls-remote https://github.com/maxsteeel/nomount.git refs/heads/dev | awk '{print $1}')"
-          if [ -z "$sha" ] || ! [[ "$sha" =~ ^[0-9a-f]{40}$ ]]; then
-            echo "Failed to resolve NoMount dev branch tip." >&2
-            exit 1
+
+          retry() {
+            local n=0
+            until [ "$n" -ge 5 ]; do
+              "$@" && return 0
+              n=$((n+1))
+              echo "retry $n/5 failed for: $*" >&2
+              sleep 5
+            done
+            return 1
+          }
+
+          resolve_sha() { # repo ref
+            retry git ls-remote "$1" "$2" | awk '{print $1; exit}'
+          }
+
+          emit() { # key value
+            if [ -z "$2" ] || ! [[ "$2" =~ ^[0-9a-f]{40}$ ]]; then
+              echo "Failed to resolve $1 (got: ${2:-empty})" >&2
+              exit 1
+            fi
+            echo "$1=$2" >> "$GITHUB_OUTPUT"
+          }
+
+          # NoMount (dev tip)
+          emit nomount_commit "$(resolve_sha https://github.com/maxsteeel/nomount.git refs/heads/dev)"
+
+          # KernelSU-Next (pershoot dev-susfs; fall back to official dev for the manager)
+          KSU_INPUT="${{ inputs.ksu_branch }}"
+          if [ -z "$KSU_INPUT" ]; then
+            KSU_INPUT="dev-susfs"
+          fi
+          KSU_REF="refs/heads/$KSU_INPUT"
+          if ! retry git ls-remote --heads https://github.com/KernelSU-Next/KernelSU-Next.git "$KSU_INPUT" | grep -q .; then
+            # Treat the input as an official-dev commit SHA when it's not a fork branch
+            official_sha="$(resolve_sha https://github.com/KernelSU-Next/KernelSU-Next.git refs/heads/dev)"
+            emit kernelsu_commit "$official_sha"
+            emit kernelsu_branch "dev"
+          else
+            emit kernelsu_commit "$(resolve_sha https://github.com/KernelSU-Next/KernelSU-Next.git "$KSU_REF")"
+            emit kernelsu_branch "$KSU_INPUT"
           fi
           fi
-          echo "nomount_commit=$sha" >> "$GITHUB_OUTPUT"
-          echo "Resolved NoMount dev commit: $sha"
+
+          # SUSFS per supported Android/kernel branch (gitlab simonpunk/susfs4ksu)
+          declare -A SUSFS_BRANCHES=(
+            [susfs_commit_android12_5_10]="gki-android12-5.10"
+            [susfs_commit_android13_5_10]="gki-android13-5.10"
+            [susfs_commit_android13_5_15]="gki-android13-5.15"
+            [susfs_commit_android14_5_15]="gki-android14-5.15"
+            [susfs_commit_android14_6_1]="gki-android14-6.1"
+            [susfs_commit_android15_6_6]="gki-android15-6.6"
+            [susfs_commit_android16_6_12]="gki-android16-6.12"
+          )
+          for key in "${!SUSFS_BRANCHES[@]}"; do
+            emit "$key" "$(resolve_sha https://gitlab.com/simonpunk/susfs4ksu.git refs/heads/${SUSFS_BRANCHES[$key]})"
+          done
+
+          echo "Resolved:"
+          env | grep -E '^(nomount_commit|kernelsu_commit|kernelsu_branch|susfs_commit_)' | sort
+
+      - name: Clone shared source repos once
+        if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
+        shell: bash
+        run: |
+          set -euo pipefail
+          mkdir -p sources
+
+          # NoMount kernel sources at the resolved dev tip
+          git clone --depth=1 --branch dev https://github.com/maxsteeel/nomount.git sources/nomount
+          [ "$(git -C sources/nomount rev-parse HEAD)" = "${{ steps.resolve.outputs.nomount_commit }}" ] || \
+            { echo "NoMount clone HEAD mismatch" >&2; exit 1; }
+
+          echo "sources_dir=$PWD/sources" >> "$GITHUB_ENV"
+
+      - name: Upload sources artifact
+        if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
+        uses: actions/upload-artifact@v7
+        with:
+          name: sources
+          path: sources
+          retention-days: 1
+          if-no-files-found: error
+          compression-level: 9
 
 
   build-nomount-module:
   build-nomount-module:
-    needs: resolve-nomount
+    needs: resolve-sources
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
       - uses: actions/checkout@v7
       - uses: actions/checkout@v7
@@ -153,7 +237,7 @@ jobs:
         if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
         if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
         uses: ./.github/actions/nomount-metamodule
         uses: ./.github/actions/nomount-metamodule
         with:
         with:
-          commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+          commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
 
 
       - name: Upload NoMount metamodule
       - name: Upload NoMount metamodule
         if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
         if: ${{ contains(inputs.feature_set, 'NOMOUNT') || inputs.feature_set == 'FULL' }}
@@ -167,7 +251,7 @@ jobs:
   build-android12-5-10:
   build-android12-5-10:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android12-5.10') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android12-5.10') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -175,13 +259,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android12-5-10 }}
       susfs_commit: ${{ inputs.susfs_commit_android12-5-10 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android13-5-10:
   build-android13-5-10:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.10') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.10') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -189,13 +273,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android13-5-10 }}
       susfs_commit: ${{ inputs.susfs_commit_android13-5-10 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android13-5-15:
   build-android13-5-15:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.15') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android13-5.15') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -203,13 +287,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android13-5-15 }}
       susfs_commit: ${{ inputs.susfs_commit_android13-5-15 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android14-5-15:
   build-android14-5-15:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-5.15') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-5.15') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -217,13 +301,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android14-5-15 }}
       susfs_commit: ${{ inputs.susfs_commit_android14-5-15 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android14-6-1:
   build-android14-6-1:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-6.1') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android14-6.1') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -231,13 +315,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android14-6-1 }}
       susfs_commit: ${{ inputs.susfs_commit_android14-6-1 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android15-6-6:
   build-android15-6-6:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android15-6.6') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android15-6.6') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -245,13 +329,13 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android15-6-6 }}
       susfs_commit: ${{ inputs.susfs_commit_android15-6-6 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   build-android16-6-12:
   build-android16-6-12:
     needs:
     needs:
     - prepare-ccache
     - prepare-ccache
-    - resolve-nomount
+    - resolve-sources
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android16-6.12') }}
     if: ${{ !inputs.test_release_notes && (inputs.kernel_build_version == 'All' || inputs.kernel_build_version == 'android16-6.12') }}
     uses: ./.github/workflows/prepare.yml
     uses: ./.github/workflows/prepare.yml
     with:
     with:
@@ -259,7 +343,7 @@ jobs:
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       feature_set: ${{ inputs.feature_set || 'FULL' }}
       ksu_branch: ${{ inputs.ksu_branch }}
       ksu_branch: ${{ inputs.ksu_branch }}
       susfs_commit: ${{ inputs.susfs_commit_android16-6-12 }}
       susfs_commit: ${{ inputs.susfs_commit_android16-6-12 }}
-      nomount_commit: ${{ needs.resolve-nomount.outputs.nomount_commit }}
+      nomount_commit: ${{ needs.resolve-sources.outputs.nomount_commit }}
     secrets: inherit
     secrets: inherit
 
 
   rej:
   rej: