Преглед изворни кода

ci(workflows): enhance build workflow and artifact management

Refactor the build workflow to improve disk space management and streamline environment variable settings. Consolidate environment variable definitions into a single step for clarity. Update artifact naming conventions and ensure consistent handling of kernel image files across different Android versions. Additionally, implement parallel processing for artifact zipping and uploading to optimize performance during release processes.
TheWildJames пре 9 месеци
родитељ
комит
4d409564b0
2 измењених фајлова са 244 додато и 369 уклоњено
  1. 171 304
      .github/workflows/build.yml
  2. 73 65
      .github/workflows/main.yml

+ 171 - 304
.github/workflows/build.yml

@@ -38,42 +38,31 @@ jobs:
         build_type: ${{ fromJSON(inputs.variant == 'vTomsonek' && '["vTomsonek"]' || inputs.variant == 'TheWildJames' && '["TheWildJames"]' || inputs.variant == 'MarionKernel' && '["MarionKernel"]' || '["Normal","Bypass"]') }}
 
     steps:
-      - name: Check Initial Disk Space
-        run: |
-          echo "===== Initial Total Disk Space in GB ====="
-          df -BG
-          
-      - name: Download Apache Arrow's util_free_space.sh
+      - name: Maximize Build Space
         run: |
           curl -Ls https://raw.githubusercontent.com/apache/arrow/main/ci/scripts/util_free_space.sh | bash
           
-      - name: Check Disk Space After Cleanup
-        run: |
-          echo "===== Total Disk Space After Cleanup in GB ====="
-          df -BG
-          
-      - name: Set CONFIG Environment Variable
+      - name: Set Environment Variables
         run: |
-          # Set CONFIG dynamically based on inputs values
           CONFIG="${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.sub_level }}"
-
-          # Set CONFIG as an environment variable for future steps
-          echo "CONFIG=$CONFIG" >> $GITHUB_ENV
-
-      - name: Set Path Environment Variables
-        run: |
           ROOT="$GITHUB_WORKSPACE"
           KERNEL_ROOT="$ROOT/$CONFIG"
-          SUSFS4KSU="$ROOT/susfs4ksu"
-          KERNEL_PATCHES="$ROOT/kernel_patches"
-          ANYKERNEL3="$ROOT/AnyKernel3"
-
-          echo "ROOT=$ROOT" >> $GITHUB_ENV
-          echo "KERNEL_ROOT=$KERNEL_ROOT" >> $GITHUB_ENV
-          echo "SUSFS4KSU=$SUSFS4KSU" >> $GITHUB_ENV
-          echo "KERNEL_PATCHES=$KERNEL_PATCHES" >> $GITHUB_ENV
-          echo "ANYKERNEL3=$ANYKERNEL3" >> $GITHUB_ENV
-
+          
+          cat >> $GITHUB_ENV << EOF
+          CONFIG=$CONFIG
+          ROOT=$ROOT
+          KERNEL_ROOT=$KERNEL_ROOT
+          SUSFS4KSU=$ROOT/susfs4ksu
+          KERNEL_PATCHES=$ROOT/kernel_patches
+          ANYKERNEL3=$ROOT/AnyKernel3
+          AVBTOOL=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool
+          MKBOOTIMG=$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py
+          UNPACK_BOOTIMG=$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py
+          BOOT_SIGN_KEY_PATH=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem
+          REPO=$GITHUB_WORKSPACE/git-repo/repo
+          EOF
+          
+          echo "PATH=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin:$PATH" >> $GITHUB_ENV
           mkdir -p "$KERNEL_ROOT"
 
       - name: Setup Build Environment
@@ -137,7 +126,8 @@ jobs:
         run: |
           FORMATTED_BRANCH="${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.os_patch_level }}"
           
-          $REPO init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${FORMATTED_BRANCH} --repo-rev=v2.16
+          $REPO init --depth=1 -u https://android.googlesource.com/kernel/manifest \
+            -b common-${FORMATTED_BRANCH} --repo-rev=v2.16 --no-clone-bundle
           
           REMOTE_BRANCH=$(git ls-remote https://android.googlesource.com/kernel/common ${FORMATTED_BRANCH})
           DEFAULT_MANIFEST_PATH=.repo/manifests/default.xml
@@ -145,37 +135,18 @@ jobs:
             sed -i "s/\"${FORMATTED_BRANCH}\"/\"deprecated\/${FORMATTED_BRANCH}\"/g" $DEFAULT_MANIFEST_PATH
           fi
           
-          $REPO --trace sync -c -j$(nproc --all) --no-tags --fail-fast
+          $REPO --trace sync -c -j$(nproc --all) --no-tags --no-clone-bundle --fail-fast
           
-      - name: Check Directory Space Usage
+      - name: Extract Sublevel and Set File Name
         run: |
-          echo "===== Total Disk Space After Kernel Download in GB ====="
-          df -BG
-          
-          echo "===== Directory Space Usage in GB ====="
-          du -BG -d 1 | sort -nr
-          
-          echo "===== $KERNEL_ROOT Directory Space Usage in GB ====="
-          du -BG -d 2 "$KERNEL_ROOT" | sort -nr
-
-      - name: Extract Actual Sublevel
-        working-directory: ${{ env.KERNEL_ROOT }}/common
-        run: |
-          
-          if [ -f "Makefile" ]; then
-            ACTUAL_SUBLEVEL=$(grep '^SUBLEVEL = ' Makefile | awk '{print $3}')
-            
-            if [ -n "$ACTUAL_SUBLEVEL" ]; then
-              echo "ACTUAL_SUBLEVEL=$ACTUAL_SUBLEVEL" >> $GITHUB_ENV
-              echo "Extracted ACTUAL_SUBLEVEL=$ACTUAL_SUBLEVEL; no directory changes performed."
-            else
-              echo "Warning: SUBLEVEL not found in Makefile; continuing with inputs.sub_level."
-            fi
+          ACTUAL_SUBLEVEL="${{ inputs.sub_level }}"
+          if [ -f "$KERNEL_ROOT/common/Makefile" ]; then
+            EXTRACTED=$(grep '^SUBLEVEL = ' "$KERNEL_ROOT/common/Makefile" | awk '{print $3}')
+            [ -n "$EXTRACTED" ] && ACTUAL_SUBLEVEL="$EXTRACTED"
           fi
-
-      - name: Set file name
-        run: |
+          
           ARTIFACT_BASE="${{ inputs.kernel_version }}.$ACTUAL_SUBLEVEL-${{ inputs.android_version }}-${{ inputs.os_patch_level }}-${{ matrix.build_type }}"
+          echo "ACTUAL_SUBLEVEL=$ACTUAL_SUBLEVEL" >> $GITHUB_ENV
           echo "ARTIFACT_BASE=$ARTIFACT_BASE" >> $GITHUB_ENV
           echo "FILE_NAME=$ARTIFACT_BASE" >> $GITHUB_ENV
 
@@ -394,8 +365,7 @@ jobs:
       - name: Add BBG
         working-directory: ${{ env.KERNEL_ROOT }}
         run: |
-          echo "Adding BBG..."
-          wget -O- https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh | bash
+          curl -LSs https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh | bash
           echo "CONFIG_BBG=y" >> common/arch/x86/configs/x86_64_defconfig
           sed -i '/^config LSM$/,/^help$/{ /^[[:space:]]*default/ { /baseband_guard/! s/lockdown/lockdown,baseband_guard/ } }' common/security/Kconfig
 
@@ -439,91 +409,69 @@ jobs:
             sed -i 's/check_defconfig//' ./common/build.config.gki
           fi
 
-      - name: Configure KernelSU Core
+      - name: Configure Kernel Options
         working-directory: ${{ env.KERNEL_ROOT }}
         run: |
+          cat >> "${{ env.DEFCONFIG }}" << 'EOF'
           # KernelSU Configuration
-          echo "# KernelSU Configuration" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_KPROBES_HOOK=n" >> "${{ env.DEFCONFIG }}"
-
-      - name: Configure Mountify Support
-        working-directory: ${{ env.KERNEL_ROOT }}
-        run: |
+          CONFIG_KSU=y
+          CONFIG_KSU_KPROBES_HOOK=n
+          
           # Mountify Support
-          echo "# Mountify Support" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TMPFS_XATTR=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TMPFS_POSIX_ACL=y" >> "${{ env.DEFCONFIG }}"
-
-      - name: Configure Networking
-        working-directory: ${{ env.KERNEL_ROOT }}
-        run: |
+          CONFIG_TMPFS_XATTR=y
+          CONFIG_TMPFS_POSIX_ACL=y
+          
           # Networking Configuration
-          echo "# Networking Configuration" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_NF_TARGET_TTL=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP6_NF_TARGET_HL=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP6_NF_MATCH_HL=y" >> "${{ env.DEFCONFIG }}"
-
-      - name: Configure TCP Congestion Control
-        working-directory: ${{ env.KERNEL_ROOT }}
-        run: |
+          CONFIG_IP_NF_TARGET_TTL=y
+          CONFIG_IP6_NF_TARGET_HL=y
+          CONFIG_IP6_NF_MATCH_HL=y
+          
           # BBR TCP Congestion Control
-          echo "# BBR TCP Congestion Control" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TCP_CONG_ADVANCED=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TCP_CONG_BBR=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_NET_SCH_FQ=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TCP_CONG_BIC=n" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TCP_CONG_WESTWOOD=n" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_TCP_CONG_HTCP=n" >> "${{ env.DEFCONFIG }}"
-
-      - name: Configure IPSet Support
-        working-directory: ${{ env.KERNEL_ROOT }}
-        run: |
-          # IPSet support
-          echo "# IPSet Support" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_MAX=65534" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_BITMAP_IP=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_BITMAP_PORT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IP=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IPMARK=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IPPORT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_IPMAC=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_MAC=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_NET=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_NETNET=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_NETPORT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_IP_SET_LIST_SET=y" >> "${{ env.DEFCONFIG }}"
-
-      - name: Configure SUSFS
-        working-directory: ${{ env.KERNEL_ROOT }}
-        run: |
+          CONFIG_TCP_CONG_ADVANCED=y
+          CONFIG_TCP_CONG_BBR=y
+          CONFIG_NET_SCH_FQ=y
+          CONFIG_TCP_CONG_BIC=n
+          CONFIG_TCP_CONG_WESTWOOD=n
+          CONFIG_TCP_CONG_HTCP=n
+          
+          # IPSet Support
+          CONFIG_IP_SET=y
+          CONFIG_IP_SET_MAX=65534
+          CONFIG_IP_SET_BITMAP_IP=y
+          CONFIG_IP_SET_BITMAP_IPMAC=y
+          CONFIG_IP_SET_BITMAP_PORT=y
+          CONFIG_IP_SET_HASH_IP=y
+          CONFIG_IP_SET_HASH_IPMARK=y
+          CONFIG_IP_SET_HASH_IPPORT=y
+          CONFIG_IP_SET_HASH_IPPORTIP=y
+          CONFIG_IP_SET_HASH_IPPORTNET=y
+          CONFIG_IP_SET_HASH_IPMAC=y
+          CONFIG_IP_SET_HASH_MAC=y
+          CONFIG_IP_SET_HASH_NETPORTNET=y
+          CONFIG_IP_SET_HASH_NET=y
+          CONFIG_IP_SET_HASH_NETNET=y
+          CONFIG_IP_SET_HASH_NETPORT=y
+          CONFIG_IP_SET_HASH_NETIFACE=y
+          CONFIG_IP_SET_LIST_SET=y
+          
           # SUSFS Configuration
-          echo "# SUSFS Configuration" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS=y" >> "${{ env.DEFCONFIG }}"
-          echo "#CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_TRY_UMOUNT=y" >> "${{ env.DEFCONFIG }}"
-
-          echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_MOUNT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=y" >> "${{ env.DEFCONFIG }}"
-
-          echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SUS_OVERLAYFS=n" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> "${{ env.DEFCONFIG }}"
-
-          echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> "${{ env.DEFCONFIG }}"
-          echo "CONFIG_KSU_SUSFS_SUS_SU=n" >> "${{ env.DEFCONFIG }}"
+          CONFIG_KSU_SUSFS=y
+          #CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT=y
+          CONFIG_KSU_SUSFS_SUS_PATH=y
+          CONFIG_KSU_SUSFS_SUS_MOUNT=y
+          CONFIG_KSU_SUSFS_TRY_UMOUNT=y
+          CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y
+          CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_MOUNT=y
+          CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=y
+          CONFIG_KSU_SUSFS_SUS_KSTAT=y
+          CONFIG_KSU_SUSFS_SUS_OVERLAYFS=n
+          CONFIG_KSU_SUSFS_SPOOF_UNAME=y
+          CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y
+          CONFIG_KSU_SUSFS_OPEN_REDIRECT=y
+          CONFIG_KSU_SUSFS_ENABLE_LOG=y
+          CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y
+          CONFIG_KSU_SUSFS_SUS_SU=n
+          EOF
 
       - name: Configure SND
         if: ${{ inputs.variant == 'vTomsonek' && inputs.android_version == 'android12' && inputs.kernel_version == '5.10' && inputs.sub_level == '226' && inputs.os_patch_level == '2024-11' }}
@@ -681,7 +629,6 @@ jobs:
         working-directory: ${{ env.KERNEL_ROOT }}
         run : |
           set -ex
-          echo "Building the kernel..."
           export KBUILD_BUILD_TIMESTAMP="$(date -u)"
           if [ -f "build/build.sh" ]; then
             LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh || exit 1
@@ -705,100 +652,72 @@ jobs:
            sed -i 's|^do\.modules=.*|do.modules=1|' ./AnyKernel3/anykernel.sh
           fi
 
-      - name: Copy snd-aloop module for Android 12-13
-        if: ${{ (inputs.android_version == 'android12' || inputs.android_version == 'android13') && inputs.variant == 'vTomsonek' }}
-        run: |
-          mkdir -p AnyKernel3/modules/data/adb/lkm
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/snd-aloop.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/g_audio.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
-
-      - name: Copy snd-aloop module for Android 14-15
-        if: ${{ (inputs.android_version == 'android14' || inputs.android_version == 'android15') && inputs.variant == 'vTomsonek' }}
+      - name: Copy snd-aloop module
+        if: ${{ inputs.variant == 'vTomsonek' }}
         run: |
           mkdir -p AnyKernel3/modules/data/adb/lkm
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/snd-aloop.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/g_audio.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
-
-      - name: Create Bootimgs Folder and Copy Images for Android 12/13
-        if: ${{ inputs.android_version == 'android12' || inputs.android_version == 'android13' }}
-        run: |
-          mkdir bootimgs
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image" ./bootimgs
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4" ./bootimgs
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image" ./${{ env.FILE_NAME }}-Image
-          cp "$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4" ./${{ env.FILE_NAME }}-Image.lz4
-
-          # Create gzip of the Image file
-          gzip -n -k -f -9 ./${{ env.FILE_NAME }}-Image > ./${{ env.FILE_NAME }}-Image.gz
-          gzip -n -k -f -9 ./bootimgs/Image > ./bootimgs/Image.gz
+          
+          if [[ "${{ inputs.android_version }}" == "android12" || "${{ inputs.android_version }}" == "android13" ]]; then
+            SRC_DIR="$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist"
+          else
+            SRC_DIR="$KERNEL_ROOT/bazel-bin/common/kernel_aarch64"
+          fi
+          
+          cp "$SRC_DIR/snd-aloop.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
+          cp "$SRC_DIR/g_audio.ko" "$ANYKERNEL3/modules/data/adb/lkm/"
 
-      - name: Create Bootimgs Folder and Copy Images for Android 14/15
-        if: ${{ inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
+      - name: Create Bootimgs Folder and Copy Images
         run: |
           mkdir bootimgs
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/Image" ./bootimgs
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/Image.lz4" ./bootimgs
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/Image" ./${{ env.FILE_NAME }}-Image
-          cp "$KERNEL_ROOT/bazel-bin/common/kernel_aarch64/Image.lz4" ./${{ env.FILE_NAME }}-Image.lz4
-
-          # Create gzip of the Image file
-          gzip -n -k -f -9 ./${{ env.FILE_NAME }}-Image > ./${{ env.FILE_NAME }}-Image.gz
-          gzip -n -k -f -9 ./bootimgs/Image > ./bootimgs/Image.gz
-
-      - name: Android 12 boot image build script
-        if: ${{ inputs.android_version == 'android12' }}
-        working-directory: bootimgs
-        run: |
-          
-          GKI_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-"${{ inputs.os_patch_level }}"_r1.zip
-          FALLBACK_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip
-          
-          # Check if the GKI URL is available
-          status=$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null)
           
-          if [ "$status" = "200" ]; then
-              curl -Lo gki-kernel.zip "$GKI_URL"
+          # Determine source directory based on Android version
+          if [[ "${{ inputs.android_version }}" == "android12" || "${{ inputs.android_version }}" == "android13" ]]; then
+            SRC_DIR="$KERNEL_ROOT/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist"
           else
-              curl -Lo gki-kernel.zip "$FALLBACK_URL"
+            SRC_DIR="$KERNEL_ROOT/bazel-bin/common/kernel_aarch64"
           fi
           
-          # Unzip the downloaded kernel and remove the zip
-          unzip gki-kernel.zip && rm gki-kernel.zip
-          
-          FULL_PATH=$(pwd)/boot-5.10.img
-          $UNPACK_BOOTIMG --boot_img="$FULL_PATH"
+          cp "$SRC_DIR/Image" ./bootimgs/
+          cp "$SRC_DIR/Image.lz4" ./bootimgs/
+          cp "$SRC_DIR/Image" "./${{ env.FILE_NAME }}-Image"
+          cp "$SRC_DIR/Image.lz4" "./${{ env.FILE_NAME }}-Image.lz4"
           
-          $MKBOOTIMG --header_version 4 --kernel Image --output boot.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot.img"
-          
-          $MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot-gz.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot-gz.img"
-          
-          $MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot-lz4.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot-lz4.img"
+          # Create gzip of the Image files
+          gzip -n -k -f -9 "./${{ env.FILE_NAME }}-Image"
+          gzip -n -k -f -9 ./bootimgs/Image
 
-      - name: Android 13/14/15 boot image build script
-        if: ${{ inputs.android_version == 'android13' || inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
+      - name: Build Boot Images
         working-directory: bootimgs
         run: |
+          RAMDISK_ARGS=""
           
-          echo "Building boot.img"
-          $MKBOOTIMG --header_version 4 --kernel Image --output boot.img
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot.img"
-          
-          echo "Building boot-gz.img"
-          $MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot-gz.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot-gz.img"
+          # Android 12 needs ramdisk from GKI certified boot
+          if [[ "${{ inputs.android_version }}" == "android12" ]]; then
+            GKI_URL="https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-${{ inputs.os_patch_level }}_r1.zip"
+            FALLBACK_URL="https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip"
+            
+            if curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null | grep -q 200; then
+              curl -Lo gki-kernel.zip "$GKI_URL"
+            else
+              curl -Lo gki-kernel.zip "$FALLBACK_URL"
+            fi
+            
+            unzip -q gki-kernel.zip && rm gki-kernel.zip
+            $UNPACK_BOOTIMG --boot_img="$(pwd)/boot-5.10.img"
+            RAMDISK_ARGS="--ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level ${{ inputs.os_patch_level }}"
+          fi
           
-          echo "Building boot-lz4.img"
-          $MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img
-          $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
-          cp ./boot-lz4.img "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-boot-lz4.img"
+          # Build all three boot image variants
+          for suffix in "" ".gz" ".lz4"; do
+            kernel="Image${suffix}"
+            output="boot${suffix//./-}.img"
+            [ -z "$suffix" ] && output="boot.img"
+            
+            $MKBOOTIMG --header_version 4 --kernel "$kernel" --output "$output" $RAMDISK_ARGS
+            $AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) \
+              --image "$output" --algorithm SHA256_RSA2048 --key "$BOOT_SIGN_KEY_PATH"
+            cp "./$output" "$GITHUB_WORKSPACE/${{ env.FILE_NAME }}-$output"
+          done
           
       - name: Scan and collect patch rejects
         if: ${{ always() }}
@@ -833,95 +752,44 @@ jobs:
       - name: Generate Build Summary
         if: ${{ always() }}
         run: |
-          # Create build summary file for inclusion in Misc artifact
-          echo "# Kernel Build Summary" > build_summary.md
-          
-          # Add build variant header
-          echo "## ${{ env.FILE_NAME }}" >> build_summary.md
-          
-          # Add build info
-          echo "## Build Information" >> build_summary.md
-          echo "- **Android Version**: ${{ inputs.android_version }}" >> build_summary.md
-          echo "- **Kernel Version**: ${{ inputs.kernel_version }}.${{ inputs.sub_level }}" >> build_summary.md
-          echo "- **BBG**: Installed" >> build_summary.md
-          echo "- **Build Type**: ${{ matrix.build_type }}" >> build_summary.md
-          echo "" >> build_summary.md
-
-          # Get Wild_KSU commit
-          if [ -d "$KERNEL_ROOT/Wild_KSU" ]; then
-            WKSU_COMMIT=$(git -C "$KERNEL_ROOT/Wild_KSU" rev-parse HEAD)
-            WKSU_URL="https://github.com/WildKernels/Wild_KSU/commit/$WKSU_COMMIT"
-            echo "- **Wild_KSU**: [$WKSU_COMMIT]($WKSU_URL)" >> "$GITHUB_WORKSPACE/build_summary.md"
-          else
-            echo "- **Wild_KSU**: not present" >> build_summary.md
-          fi
+          cat > build_summary.md << EOF
+          # Kernel Build Summary
+          ## ${{ env.FILE_NAME }}
           
-          # Get Baseband-guard commit
-          if [ -d "$KERNEL_ROOT/Baseband-guard" ]; then
-            BBG_COMMIT=$(git -C "$KERNEL_ROOT/Baseband-guard" rev-parse HEAD)
-            BBG_URL="https://github.com/vc-teahouse/Baseband-guard/commit/$BBG_COMMIT"
-            echo "- **Baseband-guard**: [$BBG_COMMIT]($BBG_URL)" >> "$GITHUB_WORKSPACE/build_summary.md"
-          else
-            echo "- **Baseband-guard**: not present" >> build_summary.md
-          fi
-          
-          # Get SUSFS4KSU commit
-          if [ -d "$SUSFS4KSU" ]; then
-            SUSFS_COMMIT=$(git -C "$SUSFS4KSU" rev-parse HEAD)
-            SUSFS_URL="https://gitlab.com/simonpunk/susfs4ksu/-/commit/$SUSFS_COMMIT"
-            echo "- **SUSFS4KSU (v1.5.12)**: [$SUSFS_COMMIT]($SUSFS_URL)" >> "$GITHUB_WORKSPACE/build_summary.md"
-          else
-            echo "- **SUSFS4KSU (v1.5.12)**: not present" >> build_summary.md
-          fi
-          echo "" >> build_summary.md
+          ## Build Information
+          - **Android Version**: ${{ inputs.android_version }}
+          - **Kernel Version**: ${{ inputs.kernel_version }}.$ACTUAL_SUBLEVEL
+          - **Build Type**: ${{ matrix.build_type }}
+          - **BBG**: Installed
+          EOF
           
-          # Add artifact summary with presence verification
-          echo "## Build Artifacts" >> build_summary.md
-
-          # Verify AnyKernel3 contents - check if kernel Image was actually copied (indicates successful build)
-          if [ -d "AnyKernel3" ] && [ -f "AnyKernel3/Image" ]; then
-            AK3_STATUS="✅"
-          else
-            AK3_STATUS="❌"
-          fi
-          echo "- **AnyKernel3**: $AK3_STATUS ${{ env.FILE_NAME }}-AnyKernel3" >> build_summary.md
-
-          echo "### Misc (uploaded files)" >> build_summary.md
-          FILES_PRESENT=0
-          for f in "${{ env.FILE_NAME }}-Image" "${{ env.FILE_NAME }}-Image.gz" "${{ env.FILE_NAME }}-Image.lz4" "${{ env.FILE_NAME }}-boot.img" "${{ env.FILE_NAME }}-boot-gz.img" "${{ env.FILE_NAME }}-boot-lz4.img"; do
-            if [ -f "$f" ]; then FILES_PRESENT=$((FILES_PRESENT+1)); fi
-          done
-          if [ "$FILES_PRESENT" -gt 0 ]; then
-            MISC_STATUS="✅"
-          else
-            MISC_STATUS="❌"
-          fi
-          echo "- **Set**: $MISC_STATUS ${{ env.FILE_NAME }}-Misc" >> build_summary.md
-          if [ "$MISC_STATUS" = "✅" ]; then
-            echo "  Included:" >> build_summary.md
-            for f in "${{ env.FILE_NAME }}-Image" "${{ env.FILE_NAME }}-Image.gz" "${{ env.FILE_NAME }}-Image.lz4" "${{ env.FILE_NAME }}-boot.img" "${{ env.FILE_NAME }}-boot-gz.img" "${{ env.FILE_NAME }}-boot-lz4.img"; do
-              if [ -f "$f" ]; then
-                echo "  - $f" >> build_summary.md
-              fi
-            done
-          fi
-
-          echo "### Diagnostics" >> build_summary.md
-          echo "- **Rejected Patches**: ${{ env.FILE_NAME }}-Rejected-Patches" >> build_summary.md
-          if [ -f patch-rejects/index.txt ]; then
-            if [ -s patch-rejects/index.txt ]; then
-              echo "  Rejected files:" >> build_summary.md
-              while IFS= read -r line; do
-                echo "    - $line" >> build_summary.md
-              done < patch-rejects/index.txt
-            else
-              echo "  Rejected file list is empty." >> build_summary.md
+          # Add component commits
+          for repo in "$KERNEL_ROOT/Wild_KSU:Wild_KSU:github.com/WildKernels/Wild_KSU" \
+                      "$KERNEL_ROOT/KernelSU:KernelSU:github.com/tiann/KernelSU" \
+                      "$KERNEL_ROOT/Baseband-guard:Baseband-guard:github.com/vc-teahouse/Baseband-guard" \
+                      "$SUSFS4KSU:SUSFS4KSU:gitlab.com/simonpunk/susfs4ksu/-"; do
+            IFS=: read -r path name url <<< "$repo"
+            if [ -d "$path" ]; then
+              commit=$(git -C "$path" rev-parse --short HEAD 2>/dev/null || echo "unknown")
+              echo "- **$name**: [$commit](https://$url/commit/$commit)" >> build_summary.md
             fi
-          else
-            echo "  No rejected patches found." >> build_summary.md
+          done
+          
+          # Artifact status
+          echo -e "\n## Build Artifacts" >> build_summary.md
+          [ -f "AnyKernel3/Image" ] && echo "- ✅ AnyKernel3" >> build_summary.md || echo "- ❌ AnyKernel3" >> build_summary.md
+          
+          # Count artifacts
+          artifacts=$(ls -1 "${{ env.FILE_NAME }}-"* 2>/dev/null | wc -l)
+          [ "$artifacts" -gt 0 ] && echo "- ✅ Misc ($artifacts files)" >> build_summary.md || echo "- ❌ Misc" >> build_summary.md
+          
+          # Rejected patches
+          if [ -s patch-rejects/index.txt ]; then
+            echo -e "\n## ⚠️ Rejected Patches" >> build_summary.md
+            cat patch-rejects/index.txt >> build_summary.md
           fi
 
-      - name: Upload AnyKernel3
+      - name: Upload Artifacts
         if: ${{ always() }}
         uses: actions/upload-artifact@v4
         with:
@@ -930,14 +798,13 @@ jobs:
           if-no-files-found: ignore
           compression-level: 9
 
-      - name: Upload Misc
+      - name: Upload Misc Files
         if: ${{ always() }}
         uses: actions/upload-artifact@v4
         with:
           name: ${{ env.FILE_NAME }}-Misc
           path: |
-            *-Image*
-            *.img
+            ${{ env.FILE_NAME }}-*
             patch-rejects/**
             build_summary.md
           if-no-files-found: ignore

+ 73 - 65
.github/workflows/main.yml

@@ -5,59 +5,63 @@ permissions:
   actions: write
 
 on:
-  # push:
-  #   branches:
-  #     - main
-  #   paths:
-  #     - '.github/workflows/**'
-  # pull_request:
-  #   branches:
-  #     - main
-  #   paths:
-  #     - '.github/workflows/**'
   workflow_dispatch:
     inputs:
+      # === Release Settings ===
       release_type:
-        description: "Choose Release Type"
-        required: true
+        description: "📦 Release Type"
         type: choice
-        options:
-          - Actions
-          - Pre-Release
-          - Release
+        options: [Actions, Pre-Release, Release]
         default: Actions
-      build_selection:
-        description: "Choose which kernels to build"
-        required: true
-        type: choice
-        options:
-          - All
-          - Android12-5.10
-          - Android13-5.10
-          - Android13-5.15
-          - Android14-5.15
-          - Android14-6.1
-          - Android15-6.6
-          - Android16-6.12
-          - Custom
-        default: Android16-6.12
+
+      # === KernelSU Settings ===
       ksu_variant:
-        description: "Choose KernelSU variant"
-        required: true
+        description: "🔧 KernelSU Variant"
         type: choice
-        options:
-          - KSU
-          - WKSU
+        options: [KSU, WKSU]
         default: KSU
       ksu_commit:
-        description: "Optional KernelSU commit SHA"
-        required: false
+        description: "📝 KSU Commit (optional)"
         type: string
+        required: false
 
-jobs:
+      # === Build Selection (check multiple!) ===
+      build_a12_5_10:
+        description: "🤖 Android 12 - 5.10"
+        type: boolean
+        default: false
+      build_a13_5_10:
+        description: "🤖 Android 13 - 5.10"
+        type: boolean
+        default: false
+      build_a13_5_15:
+        description: "🤖 Android 13 - 5.15"
+        type: boolean
+        default: false
+      build_a14_5_15:
+        description: "🤖 Android 14 - 5.15"
+        type: boolean
+        default: false
+      build_a14_6_1:
+        description: "🤖 Android 14 - 6.1"
+        type: boolean
+        default: false
+      build_a15_6_6:
+        description: "🤖 Android 15 - 6.6"
+        type: boolean
+        default: false
+      build_a16_6_12:
+        description: "🤖 Android 16 - 6.12"
+        type: boolean
+        default: false
+      build_custom:
+        description: "⚙️ Custom Builds"
+        type: boolean
+        default: false
 
+jobs:
   build-a12-5-10:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android12-5.10')
+    if: inputs.build_a12_5_10
     uses: ./.github/workflows/kernel-a12-5-10.yml
     secrets: inherit
     with:
@@ -65,34 +69,31 @@ jobs:
       ksu_commit: ${{ inputs.ksu_commit }}
 
   build-a13-5-10:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android13-5.10')
+    if: inputs.build_a13_5_10
     uses: ./.github/workflows/kernel-a13-5-10.yml
     secrets: inherit
     with:
       ksu_variant: ${{ inputs.ksu_variant }}
       ksu_commit: ${{ inputs.ksu_commit }}
 
-
   build-a13-5-15:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android13-5.15')
+    if: inputs.build_a13_5_15
     uses: ./.github/workflows/kernel-a13-5-15.yml
     secrets: inherit
     with:
       ksu_variant: ${{ inputs.ksu_variant }}
       ksu_commit: ${{ inputs.ksu_commit }}
 
-
   build-a14-5-15:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android14-5.15')
+    if: inputs.build_a14_5_15
     uses: ./.github/workflows/kernel-a14-5-15.yml
     secrets: inherit
     with:
       ksu_variant: ${{ inputs.ksu_variant }}
       ksu_commit: ${{ inputs.ksu_commit }}
 
-
   build-a14-6-1:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android14-6.1')
+    if: inputs.build_a14_6_1
     uses: ./.github/workflows/kernel-a14-6-1.yml
     secrets: inherit
     with:
@@ -100,7 +101,7 @@ jobs:
       ksu_commit: ${{ inputs.ksu_commit }}
 
   build-a15-6-6:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android15-6.6')
+    if: inputs.build_a15_6_6
     uses: ./.github/workflows/kernel-a15-6-6.yml
     secrets: inherit
     with:
@@ -108,16 +109,15 @@ jobs:
       ksu_commit: ${{ inputs.ksu_commit }}
 
   build-a16-6-12:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Android16-6.12')
+    if: inputs.build_a16_6_12
     uses: ./.github/workflows/kernel-a16-612.yml
     secrets: inherit
     with:
       ksu_variant: ${{ inputs.ksu_variant }}
       ksu_commit: ${{ inputs.ksu_commit }}
 
-
   build-custom:
-    if: (inputs.build_selection == 'All' || inputs.build_selection == 'Custom')
+    if: inputs.build_custom
     uses: ./.github/workflows/kernel-custom.yml
     secrets: inherit
     with:
@@ -134,6 +134,7 @@ jobs:
       - build-a14-5-15
       - build-a14-6-1
       - build-a15-6-6
+      - build-a16-6-12
       - build-custom
 
     env:
@@ -231,22 +232,29 @@ jobs:
       - name: Upload Release Assets
         run: |
           shopt -s nullglob
-          anykernel_dirs=(./downloaded-artifacts/*/)
+          anykernel_dirs=(./downloaded-artifacts/*-AnyKernel3/)
+          
           if [ ${#anykernel_dirs[@]} -eq 0 ]; then
-            echo "No artifact directories found under ./downloaded-artifacts; skipping upload."
-          else
-            for dir in "${anykernel_dirs[@]}"; do
-              # Check if this is an AnyKernel3 artifact directory
-              if [[ "$(basename "$dir")" == *"-AnyKernel3" ]]; then
-                artifact_name=$(basename "$dir")
-                echo "Creating ZIP for $artifact_name..."
-                # Navigate into the directory and zip its contents directly
-                (cd "$dir" && zip -r -9 "$GITHUB_WORKSPACE/${artifact_name}.zip" ./*)
-                echo "Uploading ${artifact_name}.zip..."
-                gh release upload ${{ env.NEW_TAG }} "${artifact_name}.zip"
-              fi
-            done
+            echo "No AnyKernel3 artifact directories found; skipping upload."
+            exit 0
           fi
+          
+          echo "Found ${#anykernel_dirs[@]} artifacts to process"
+          
+          # Create all ZIPs in parallel
+          for dir in "${anykernel_dirs[@]}"; do
+            artifact_name=$(basename "$dir")
+            echo "Creating ZIP for $artifact_name..."
+            (cd "$dir" && zip -r -q -9 "$GITHUB_WORKSPACE/${artifact_name}.zip" ./*) &
+          done
+          wait
+          
+          # Upload all ZIPs
+          for dir in "${anykernel_dirs[@]}"; do
+            artifact_name=$(basename "$dir")
+            echo "Uploading ${artifact_name}.zip..."
+            gh release upload "${{ env.NEW_TAG }}" "${artifact_name}.zip" --clobber
+          done
             
       - name: Send Telegram Notification
         if: inputs.release_type != 'Actions'