main.yml 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. name: Build Kernels
  2. permissions:
  3. contents: write
  4. actions: write
  5. on:
  6. workflow_dispatch:
  7. inputs:
  8. release_type:
  9. description: "Choose Release Type"
  10. required: true
  11. type: choice
  12. options:
  13. - Actions
  14. - Pre-Release
  15. - Release
  16. default: Actions
  17. jobs:
  18. build-a12-5-10:
  19. uses: ./.github/workflows/kernel-a12-5-10.yml
  20. secrets: inherit
  21. build-a13-5-10:
  22. uses: ./.github/workflows/kernel-a13-5-10.yml
  23. secrets: inherit
  24. build-a13-5-15:
  25. uses: ./.github/workflows/kernel-a13-5-15.yml
  26. secrets: inherit
  27. build-a14-5-15:
  28. uses: ./.github/workflows/kernel-a14-5-15.yml
  29. secrets: inherit
  30. build-a14-6-1:
  31. uses: ./.github/workflows/kernel-a14-6-1.yml
  32. secrets: inherit
  33. build-a15-6-6:
  34. uses: ./.github/workflows/kernel-a15-6-6.yml
  35. secrets: inherit
  36. release:
  37. runs-on: ubuntu-latest
  38. needs:
  39. - build-a12-5-10
  40. - build-a13-5-10
  41. - build-a13-5-15
  42. - build-a14-5-15
  43. - build-a14-6-1
  44. - build-a15-6-6
  45. env:
  46. GH_TOKEN: ${{ github.token }}
  47. RELEASE_NAME: "!!TESTING!! GKI Kernels With WKSU & SUSFS v1.5.11 !!!TESTING!!!"
  48. RELEASE_BODY:
  49. steps:
  50. # # - name: Maximize Build Space
  51. # uses: AdityaGarg8/remove-unwanted-software@v5
  52. # with:
  53. # remove-dotnet: 'true' # Frees ~2 GB
  54. # remove-android: 'true' # Frees ~9 GB
  55. # remove-haskell: 'true' # Frees ~5.2 GB
  56. # remove-codeql: 'true' # Frees ~5.4 GB
  57. # remove-docker-images: 'true' # Frees ~3.2 GB
  58. # remove-large-packages: 'true' # Frees ~3.1 GB
  59. # remove-swapfile: 'true' # Frees ~4 GB
  60. # remove-cached-tools: 'false' # Avoid unless confirmed safe
  61. # verbose: 'true' # Enable detailed logging
  62. - name: Checkout code
  63. uses: actions/checkout@v4
  64. - name: Get commit hashes and generate commit URLs
  65. run: |
  66. GITLAB_OWNER="simonpunk"
  67. GITLAB_REPO="susfs4ksu"
  68. declare -A BRANCH_MAP=(
  69. ["gki_android12_5_10"]="gki-android12-5.10"
  70. ["gki_android13_5_10"]="gki-android13-5.10"
  71. ["gki_android13_5_15"]="gki-android13-5.15"
  72. ["gki_android14_5_15"]="gki-android14-5.15"
  73. ["gki_android14_6_1"]="gki-android14-6.1"
  74. ["gki_android15_6_6"]="gki-android15-6.6"
  75. )
  76. for var_name in "${!BRANCH_MAP[@]}"; do
  77. branch_name="${BRANCH_MAP[$var_name]}"
  78. COMMIT_HASH=$(git ls-remote https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO.git refs/heads/$branch_name | awk '{ print $1 }')
  79. if [[ -n "$COMMIT_HASH" ]]; then
  80. COMMIT_URL="https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO/-/commit/$COMMIT_HASH"
  81. echo "$branch_name Commit: $COMMIT_HASH"
  82. echo "$branch_name Commit URL: $COMMIT_URL"
  83. echo "COMMIT_HASH_${var_name}=$COMMIT_HASH" >> "$GITHUB_ENV"
  84. echo "COMMIT_URL_${var_name}=$COMMIT_URL" >> "$GITHUB_ENV"
  85. fi
  86. done
  87. - name: Get KernelSU variant refs and links
  88. run: |
  89. # Get WKSU latest commit from wild branch
  90. WKSU_REF=$(git ls-remote "https://github.com/WildKernels/Wild_KSU.git" refs/heads/wild | awk '{print $1}')
  91. WKSU_URL="https://github.com/WildKernels/Wild_KSU/commit/$WKSU_REF"
  92. echo "WKSU_REF=$WKSU_REF" >> $GITHUB_ENV
  93. echo "WKSU_URL=$WKSU_URL" >> $GITHUB_ENV
  94. # Get Baseband-guard latest commit from main branch
  95. BBG_REF=$(git ls-remote "https://github.com/vc-teahouse/Baseband-guard.git" refs/heads/main | awk '{print $1}')
  96. BBG_URL="https://github.com/vc-teahouse/Baseband-guard/commit/$BBG_REF"
  97. echo "BBG_REF=$BBG_REF" >> $GITHUB_ENV
  98. echo "BBG_URL=$BBG_URL" >> $GITHUB_ENV
  99. - name: Generate and Create New Tag
  100. if: inputs.release_type != 'Actions'
  101. run: |
  102. LATEST_TAG=$(gh api repos/${{ github.repository }}/tags --jq '.[0].name')
  103. if [ -z "$LATEST_TAG" ]; then
  104. LATEST_TAG="v1.5.11-r0"
  105. fi
  106. NEW_TAG=$(echo "$LATEST_TAG" | awk -F'-r' '{suffix=$2; if (!suffix) suffix=0; suffix++; printf "%s-r%d", $1, suffix}')
  107. echo "New tag: $NEW_TAG"
  108. echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
  109. git tag $NEW_TAG
  110. git push origin $NEW_TAG
  111. - name: Set tag for Actions only
  112. if: inputs.release_type == 'Actions'
  113. run: |
  114. echo "NEW_TAG=actions-$(date +%Y%m%d-%H%M%S)" >> $GITHUB_ENV
  115. - name: Download Artifacts
  116. uses: actions/download-artifact@v5
  117. with:
  118. path: ./downloaded-artifacts
  119. pattern: 'WKSU-*-AnyKernel3'
  120. - name: Set release body
  121. run: |
  122. cat << 'EOF' > release_body.md
  123. **IMPORTANT DISCLAIMER**
  124. This software is provided for testing and educational purposes only. Use at your own risk.
  125. The developers are not responsible for any damage, data loss, or issues that may occur.
  126. Please ensure you have proper backups before installation.
  127. NEW:
  128. -> **Module Check Bypass Variant**: Normal build with additional hack for compatibility, if you encounter any issues with the normal build try this!
  129. Features:
  130. -> Wild KSU
  131. -> Multi Manager Support for WKSU, KernelSU-Next! Needs Testing: KSU, MKSU RKSU, xxKSU, KowSU and SukiSU (Best compatibility with WKSU, no support will be provided for other managers)
  132. -> SUSFS ඞ v1.5.11
  133. -> Scope-Minimized Manual hooks v1.4
  134. -> Ptrace Patch Support for Older Kernels (<5.16)
  135. -> IPSet Support for Advanced Network Filtering
  136. -> Wireguard Support
  137. -> BBR v1 Support
  138. -> Added BBG support to prevent unauthorised writes to certain partitions: https://github.com/vc-teahouse/Baseband-guard
  139. Notes:
  140. -> SUS SU Mode 2 will show as disabled or not compatble due to non-kprobe hooks and is not needed anymore!
  141. -> Official Kernel Flasher is broken with latest susfs, try https://github.com/fatalcoder524/KernelFlasher/
  142. -> **boot.img files**: Available as CI artifacts only (not included in releases) - download from the Actions tab
  143. -> **Warning**: boot.img files may not boot on some Android 16 devices
  144. Module:
  145. -> https://github.com/sidex15/ksu_module_susfs
  146. Managers:
  147. -> WKSU: https://github.com/WildKernels/Wild_KSU
  148. -> Next: https://github.com/KernelSU-Next/KernelSU-Next
  149. Commit Hashes (at the time of release):
  150. -> WKSU: [${{ env.WKSU_REF }}](${{ env.WKSU_URL }})
  151. -> Baseband-guard: [${{ env.BBG_REF }}](${{ env.BBG_URL }})
  152. -> SUSFS4KSU:
  153. -> gki-android12-5.10: [${{ env.COMMIT_HASH_gki_android12_5_10 }}](${{ env.COMMIT_URL_gki_android12_5_10 }})
  154. -> gki-android13-5.10: [${{ env.COMMIT_HASH_gki_android13_5_10 }}](${{ env.COMMIT_URL_gki_android13_5_10 }})
  155. -> gki-android13-5.15: [${{ env.COMMIT_HASH_gki_android13_5_15 }}](${{ env.COMMIT_URL_gki_android13_5_15 }})
  156. -> gki-android14-5.15: [${{ env.COMMIT_HASH_gki_android14_5_15 }}](${{ env.COMMIT_URL_gki_android14_5_15 }})
  157. -> gki-android14-6.1: [${{ env.COMMIT_HASH_gki_android14_6_1 }}](${{ env.COMMIT_URL_gki_android14_6_1 }})
  158. -> gki-android15-6.6: [${{ env.COMMIT_HASH_gki_android15_6_6 }}](${{ env.COMMIT_URL_gki_android15_6_6 }})
  159. EOF
  160. - name: Create GitHub Release
  161. if: inputs.release_type != 'Actions'
  162. uses: softprops/action-gh-release@v2
  163. with:
  164. tag_name: ${{ env.NEW_TAG }}
  165. prerelease: ${{ inputs.release_type == 'Pre-Release' }}
  166. files: ""
  167. name: ${{ env.RELEASE_NAME }}
  168. body_path: release_body.md
  169. - name: Upload Release Assets
  170. if: inputs.release_type != 'Actions'
  171. run: |
  172. for file in ./downloaded-artifacts/*/*; do
  173. if [ -d "$file" ]; then
  174. continue
  175. fi
  176. echo "Uploading $file..."
  177. gh release upload ${{ env.NEW_TAG }} "$file"
  178. done
  179. - name: Display Files Uploaded
  180. if: inputs.release_type != 'Actions'
  181. run: |
  182. echo "GitHub release created with the following files:"
  183. ls ./downloaded-artifacts/**/*
  184. - name: Send Telegram Notification
  185. if: inputs.release_type != 'Actions'
  186. run: |
  187. RELEASE_TYPE_TEXT=""
  188. if [ "${{ inputs.release_type }}" == "Pre-Release" ]; then
  189. RELEASE_TYPE_TEXT="🧪 *Pre-Release*"
  190. else
  191. RELEASE_TYPE_TEXT="🚀 *Release*"
  192. fi
  193. curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
  194. -F chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \
  195. -F message_thread_id="${{ secrets.TELEGRAM_TOPIC_ID_GKI }}" \
  196. -F text="
  197. 🌽 *New Kernel $RELEASE_TYPE_TEXT Uploaded*
  198. 📦 *Repository:* [${{ github.repository }}](https://github.com/${{ github.repository }})
  199. ✏️ *Commit:* [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
  200. [🔗 View GitHub Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.NEW_TAG }})" \
  201. -F parse_mode="Markdown"