소스 검색

ci: replace dependency caching with dynamic commit fetching

This change removes the static dependency download workflow and introduces a new approach where commits for Wild KSU, AnyKernel3, Kernel Patches, and SUSFS are fetched dynamically at runtime. This eliminates the need to cache large artifacts and ensures builds always use the latest available versions of dependencies unless a specific commit is provided.

- Add new `fetch-commits` composite action to retrieve latest commit hashes
- Update `wksu` action to accept a commit parameter and download setup script directly
- Modify `susfs` action to accept a commit map and clone specific commits
- Update all workflow files to pass commit parameters through the pipeline
- Remove `dependencies.yml` workflow that previously downloaded and cached artifacts
TheWildJames 6 달 전
부모
커밋
2d019edf6c

+ 88 - 0
.github/actions/fetch-commits/action.yml

@@ -0,0 +1,88 @@
+name: Fetch Latest Commits
+description: "Fetches the latest commit hashes for Wild KSU, AnyKernel3, Kernel Patches, and SUSFS"
+inputs:
+  ksu_commit:
+    description: "Optional: Specific Wild KSU commit to use"
+    required: false
+    default: ""
+outputs:
+  ksu_commit:
+    description: "Wild KSU Commit"
+    value: ${{ steps.commits.outputs.ksu_commit }}
+  anykernel_commit:
+    description: "AnyKernel3 Commit"
+    value: ${{ steps.commits.outputs.anykernel_commit }}
+  patches_commit:
+    description: "Kernel Patches Commit"
+    value: ${{ steps.commits.outputs.patches_commit }}
+  susfs_commit:
+    description: "SUSFS Commit (Map)"
+    value: ${{ steps.commits.outputs.susfs_commit }}
+
+runs:
+  using: "composite"
+  steps:
+    - name: Get Latest Commits
+      id: commits
+      shell: bash
+      run: |
+        # Helper to get latest commit from remote without cloning full repo
+        get_commit() {
+          git ls-remote "$1" "$2" | awk '{print $1}'
+        }
+
+        echo "Fetching latest commits..."
+        
+        # Wild KSU
+        if [ -n "${{ inputs.ksu_commit }}" ]; then
+          ksu_commit="${{ inputs.ksu_commit }}"
+          echo "Using provided Wild KSU commit: $ksu_commit"
+        else
+          ksu_commit=$(get_commit "https://github.com/WildKernels/Wild_KSU.git" "HEAD")
+          echo "Wild KSU: $ksu_commit"
+        fi
+        echo "ksu_commit=$ksu_commit" >> $GITHUB_OUTPUT
+        
+        # AnyKernel3
+        AK3_COMMIT=$(get_commit "https://github.com/WildKernels/AnyKernel3.git" "refs/heads/gki-2.0")
+        echo "AnyKernel3: $AK3_COMMIT"
+        echo "anykernel_commit=$AK3_COMMIT" >> $GITHUB_OUTPUT
+        
+        # Kernel Patches
+        PATCHES_COMMIT=$(get_commit "https://github.com/WildKernels/kernel_patches.git" "HEAD")
+        echo "Kernel Patches: $PATCHES_COMMIT"
+        echo "patches_commit=$PATCHES_COMMIT" >> $GITHUB_OUTPUT
+        
+        # SUSFS (using gitlab) - Fetch all relevant branches
+        SUSFS_REPO="https://gitlab.com/simonpunk/susfs4ksu.git"
+        echo "Fetching SUSFS commits for all branches..."
+        
+        # We need to construct a JSON object or a simple string map
+        # Format: branch1:commit1,branch2:commit2,...
+        
+        BRANCHES=(
+          "gki-android12-5.10"
+          "gki-android13-5.10"
+          "gki-android13-5.15"
+          "gki-android14-5.15"
+          "gki-android14-6.1"
+          "gki-android15-6.6"
+          "gki-android16-6.12"
+        )
+        
+        SUSFS_MAP=""
+        for branch in "${BRANCHES[@]}"; do
+          COMMIT=$(get_commit "$SUSFS_REPO" "refs/heads/$branch")
+          if [ -n "$COMMIT" ]; then
+             echo "  $branch: $COMMIT"
+             if [ -z "$SUSFS_MAP" ]; then
+               SUSFS_MAP="$branch:$COMMIT"
+             else
+               SUSFS_MAP="$SUSFS_MAP,$branch:$COMMIT"
+             fi
+          else
+             echo "  $branch: Not found"
+          fi
+        done
+        
+        echo "susfs_commit=$SUSFS_MAP" >> $GITHUB_OUTPUT

+ 31 - 8
.github/actions/susfs/action.yml

@@ -13,6 +13,9 @@ inputs:
   sublevel:
     description: 'Kernel sublevel'
     required: true
+  susfs_commit:
+    description: 'Commit map (branch:commit,branch:commit...)'
+    required: false
 
 runs:
   using: composite
@@ -21,16 +24,36 @@ runs:
       shell: bash
       run: |
         SUSFS_BRANCH="gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}"
+        SUSFS_REPO="https://gitlab.com/simonpunk/susfs4ksu.git"
         
-        # Use downloaded SUSFS artifact
-        if [ -d "susfs_cache/$SUSFS_BRANCH" ]; then
-          # Use cached SUSFS branch
-          cp -r "susfs_cache/$SUSFS_BRANCH" susfs4ksu
+        echo "Preparing SUSFS for branch: $SUSFS_BRANCH"
+        
+        # Parse commit map to find the commit for this branch
+        COMMIT_MAP="${{ inputs.susfs_commit }}"
+        TARGET_COMMIT=""
+        
+        if [ -n "$COMMIT_MAP" ]; then
+          # Split by comma
+          IFS=',' read -ra ENTRIES <<< "$COMMIT_MAP"
+          for entry in "${ENTRIES[@]}"; do
+            # Split by colon
+            IFS=':' read -r branch commit <<< "$entry"
+            if [ "$branch" == "$SUSFS_BRANCH" ]; then
+              TARGET_COMMIT="$commit"
+              break
+            fi
+          done
+        fi
+        
+        if [ -n "$TARGET_COMMIT" ]; then
+          echo "Found specific commit for $SUSFS_BRANCH: $TARGET_COMMIT"
+          git clone "$SUSFS_REPO" -b "$SUSFS_BRANCH" susfs4ksu
+          cd susfs4ksu
+          git checkout "$TARGET_COMMIT"
+          cd ..
         else
-          echo "ERROR: SUSFS branch $SUSFS_BRANCH not found in downloaded artifacts"
-          echo "Available branches:"
-          ls -d susfs_cache/* 2>/dev/null || echo "No branches found"
-          exit 1
+          echo "No specific commit found for $SUSFS_BRANCH, cloning latest..."
+          git clone "$SUSFS_REPO" -b "$SUSFS_BRANCH" --depth=1 susfs4ksu
         fi
         
         SUSFS_VERSION="2.0.0"

+ 6 - 3
.github/actions/wksu/action.yml

@@ -1,5 +1,10 @@
 name: Setup Wild KSU
 description: Download and configure Wild KSU with version tracking
+inputs:
+  ksu_commit:
+    description: "KSU Commit"
+    required: true
+    type: string
 
 runs:
   using: composite
@@ -8,9 +13,7 @@ runs:
       shell: bash
       working-directory: ${{ github.workspace }}/kernel
       run: |
-        mv "$GITHUB_WORKSPACE/Wild_KSU" ./
-        chmod +x ./Wild_KSU/kernel/setup.sh
-        ./Wild_KSU/kernel/setup.sh
+        curl -LSs "https://raw.githubusercontent.com/WildKernels/Wild_KSU/stable/kernel/setup.sh" | bash -s ${{ inputs.ksu_commit }}
 
     - name: Enable KernelSU Config
       shell: bash

+ 22 - 0
.github/workflows/build.yml

@@ -15,6 +15,15 @@ on:
       ksu_commit:
         required: false
         type: string
+      anykernel_commit:
+        required: false
+        type: string
+      patches_commit:
+        required: false
+        type: string
+      susfs_commit:
+        required: false
+        type: string
       feature_set:
         required: true
         type: string
@@ -280,6 +289,19 @@ jobs:
 
     - name: Prepare AnyKernel3 Zip
       run: |
+        # Use specific commit if provided
+        if [ -n "${{ inputs.anykernel_commit }}" ]; then
+          echo "Cloning AnyKernel3 at commit ${{ inputs.anykernel_commit }}"
+          if [ -d "$GITHUB_WORKSPACE/AnyKernel3" ]; then rm -rf "$GITHUB_WORKSPACE/AnyKernel3"; fi
+          git clone https://github.com/WildKernels/AnyKernel3.git "$GITHUB_WORKSPACE/AnyKernel3"
+          cd "$GITHUB_WORKSPACE/AnyKernel3"
+          git checkout "${{ inputs.anykernel_commit }}"
+          cd "$GITHUB_WORKSPACE"
+        elif [ ! -d "$GITHUB_WORKSPACE/AnyKernel3" ]; then
+           # Fallback if not downloaded
+           git clone https://github.com/WildKernels/AnyKernel3.git -b gki-2.0 "$GITHUB_WORKSPACE/AnyKernel3"
+        fi
+
         # Copy Image from normal build locations
         if [ -f "$GITHUB_WORKSPACE/kernel/out/$ANDROID_VERSION-$KERNEL_VERSION/dist/Image" ]; then
           cp "$GITHUB_WORKSPACE/kernel/out/$ANDROID_VERSION-$KERNEL_VERSION/dist/Image" "$GITHUB_WORKSPACE/AnyKernel3/Image"

+ 0 - 72
.github/workflows/dependencies.yml

@@ -1,72 +0,0 @@
-name: Download Build Dependencies
-
-permissions:
-  contents: read
-  actions: write
-
-on:
-  workflow_call:
-
-jobs:
-  download-dependencies:
-    name: Download Dependencies
-    runs-on: ubuntu-latest
-    timeout-minutes: 20
-    permissions:
-      contents: read
-      actions: write
-    steps:
-    - name: Download Wild KSU
-      shell: bash
-      run: |
-        # Download and run KSU setup
-        git clone "https://github.com/WildKernels/Wild_KSU.git" -b "canary" --depth=1
-
-        git clone https://github.com/WildKernels/AnyKernel3.git -b gki-2.0 --depth=1
-        echo "AnyKernel3 commit: $(cd AnyKernel3 && git rev-parse --short HEAD)"
-        
-        git clone https://github.com/WildKernels/kernel_patches.git --depth=1
-        echo "Kernel Patches commit: $(cd kernel_patches && git rev-parse --short HEAD)"
-        
-        mkdir -p susfs_cache
-
-        # List of all SUSFS branches we support
-        BRANCHES=(
-          "gki-android12-5.10"
-          "gki-android13-5.10"
-          "gki-android13-5.15"
-          "gki-android14-5.15"
-          "gki-android14-6.1"
-          "gki-android15-6.6"
-          "gki-android16-6.12"
-        )
-
-        for BRANCH in "${BRANCHES[@]}"; do
-          # Clone SUSFS branch
-          git clone https://gitlab.com/simonpunk/susfs4ksu.git -b "$BRANCH" --depth=1 "susfs_cache/$BRANCH" || {
-            echo "Warning: Failed to clone branch $BRANCH (may not exist yet)"
-            continue
-          }
-          COMMIT=$(cd "susfs_cache/$BRANCH" && git rev-parse --short HEAD 2>/dev/null || echo "N/A")
-          echo "  └─ Commit: $COMMIT"
-        done
-
-        BRANCH_COUNT=$(ls -d susfs_cache/* 2>/dev/null | wc -l)
-        echo "SUSFS branches downloaded: $BRANCH_COUNT"
-
-        mkdir -p git-repo
-        curl -L https://storage.googleapis.com/git-repo-downloads/repo -o git-repo/repo
-        chmod 0755 git-repo/repo
-
-    - name: Upload Build Dependencies
-      uses: actions/upload-artifact@v4
-      with:
-        name: build-dependencies
-        path: |
-          AnyKernel3/
-          kernel_patches/
-          susfs_cache/
-          git-repo/
-          Wild_KSU/
-          Baseband-guard/
-        compression-level: 9

+ 75 - 29
.github/workflows/main.yml

@@ -12,11 +12,6 @@ on:
         type: choice
         options: [ Actions, Pre-Release, Release ]
         default: Actions
-      ksu_commit:
-        description: "KSU Commit (optional)"
-        type: string
-        default: ""
-        required: false
       kernel_build_version:
         description: "Kernel Version to Build"
         type: choice
@@ -44,121 +39,172 @@ on:
           - BBG
           - None
         default: WKSU+SUSFS+BBG
+      ksu_commit:
+        description: "KSU Commit (optional)"
+        type: string
+        default: ""
+        required: false
   push:
     branches:
       - main
 
 jobs:
-  download-dependencies:
-    uses: ./.github/workflows/dependencies.yml
+  fetch-latest-commits:
+    runs-on: ubuntu-latest
+    outputs:
+      ksu_commit: ${{ steps.fetch.outputs.ksu_commit }}
+      anykernel_commit: ${{ steps.fetch.outputs.anykernel_commit }}
+      patches_commit: ${{ steps.fetch.outputs.patches_commit }}
+      susfs_commit: ${{ steps.fetch.outputs.susfs_commit }}
+    steps:
+      - name: Checkout Repository
+        uses: actions/checkout@v4
+      - name: Fetch Commits
+        id: fetch
+        uses: ./.github/actions/fetch-commits
+        with:
+          ksu_commit: ${{ inputs.ksu_commit }}
 
   build-a12-5-10:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a12-5-10' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a12-5.10.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a13-5-10:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a13-5-10' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a13-5.10.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a13-5-15:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a13-5-15' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a13-5.15.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a14-5-15:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a14-5-15' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a14-5.15.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a14-6-1:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a14-6-1' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a14-6.1.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a15-6-6:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a15-6-6' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a15-6.6.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-a16-6-12:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'a16-6-12' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/a16-6.12.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-lts:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'lts' || github.event_name == 'push' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/lts.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-custom:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'custom' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/custom.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-testing:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'testing' || github.event_name == 'push' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/testing.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 
   build-bypass:
     if: ${{ inputs.kernel_build_version == 'all' || inputs.kernel_build_version == 'bypass' }}
-    needs: download-dependencies
+    needs: fetch-latest-commits
     uses: ./.github/workflows/prepare.yml
     with:
       config_file: .github/kernel-config/bypass.json
-      ksu_commit: ${{ inputs.ksu_commit || '' }}
+      ksu_commit: ${{ inputs.ksu_commit || needs.fetch-latest-commits.outputs.ksu_commit }}
+      anykernel_commit: ${{ needs.fetch-latest-commits.outputs.anykernel_commit }}
+      patches_commit: ${{ needs.fetch-latest-commits.outputs.patches_commit }}
+      susfs_commit: ${{ needs.fetch-latest-commits.outputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set || 'WKSU+SUSFS+BBG' }}
     secrets: inherit
 

+ 15 - 0
.github/workflows/prepare.yml

@@ -11,6 +11,18 @@ on:
         description: "KSU Commit"
         required: false
         type: string
+      anykernel_commit:
+        description: "AnyKernel3 Commit"
+        required: false
+        type: string
+      patches_commit:
+        description: "Kernel Patches Commit"
+        required: false
+        type: string
+      susfs_commit:
+        description: "SUSFS Commit"
+        required: false
+        type: string
       feature_set:
         description: "Feature Set"
         required: false
@@ -59,5 +71,8 @@ jobs:
       kernel_version: ${{ matrix.kernel_version }}
       variant: ${{ matrix.variant }}
       ksu_commit: ${{ inputs.ksu_commit }}
+      anykernel_commit: ${{ inputs.anykernel_commit }}
+      patches_commit: ${{ inputs.patches_commit }}
+      susfs_commit: ${{ inputs.susfs_commit }}
       feature_set: ${{ inputs.feature_set }}
     secrets: inherit