main.yml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. name: Build Kernels
  2. permissions:
  3. contents: write
  4. actions: write
  5. on:
  6. workflow_dispatch:
  7. inputs:
  8. use_make:
  9. description: 'Build with MAKE?'
  10. required: true
  11. type: boolean
  12. default: true
  13. kernel_variant:
  14. description: 'Choose KernelSU Variant'
  15. required: true
  16. type: choice
  17. options:
  18. - WKSU
  19. - KSU
  20. - Both
  21. default: WKSU
  22. release_type:
  23. description: "Choose Release Type"
  24. required: true
  25. type: choice
  26. options:
  27. - Actions
  28. - Pre-Release
  29. - Release
  30. default: Pre-Release
  31. jobs:
  32. # WKSU builds
  33. build-a12-5-10-wksu:
  34. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  35. uses: ./.github/workflows/kernel-a12-5-10.yml
  36. secrets: inherit
  37. with:
  38. kernelsu_variant: WKSU
  39. use_make: ${{ inputs.use_make }}
  40. build-a13-5-10-wksu:
  41. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  42. uses: ./.github/workflows/kernel-a13-5-10.yml
  43. secrets: inherit
  44. with:
  45. kernelsu_variant: WKSU
  46. use_make: ${{ inputs.use_make }}
  47. build-a13-5-15-wksu:
  48. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  49. uses: ./.github/workflows/kernel-a13-5-15.yml
  50. secrets: inherit
  51. with:
  52. kernelsu_variant: WKSU
  53. use_make: ${{ inputs.use_make }}
  54. build-a14-5-15-wksu:
  55. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  56. uses: ./.github/workflows/kernel-a14-5-15.yml
  57. secrets: inherit
  58. with:
  59. kernelsu_variant: WKSU
  60. use_make: ${{ inputs.use_make }}
  61. build-a14-6-1-wksu:
  62. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  63. uses: ./.github/workflows/kernel-a14-6-1.yml
  64. secrets: inherit
  65. with:
  66. kernelsu_variant: WKSU
  67. use_make: ${{ inputs.use_make }}
  68. build-a15-6-6-wksu:
  69. if: ${{ inputs.kernel_variant == 'WKSU' || inputs.kernel_variant == 'Both' }}
  70. uses: ./.github/workflows/kernel-a15-6-6.yml
  71. secrets: inherit
  72. with:
  73. kernelsu_variant: WKSU
  74. use_make: ${{ inputs.use_make }}
  75. # KSU builds
  76. build-a12-5-10-ksu:
  77. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  78. uses: ./.github/workflows/kernel-a12-5-10.yml
  79. secrets: inherit
  80. with:
  81. kernelsu_variant: KSU
  82. use_make: ${{ inputs.use_make }}
  83. build-a13-5-10-ksu:
  84. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  85. uses: ./.github/workflows/kernel-a13-5-10.yml
  86. secrets: inherit
  87. with:
  88. kernelsu_variant: KSU
  89. use_make: ${{ inputs.use_make }}
  90. build-a13-5-15-ksu:
  91. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  92. uses: ./.github/workflows/kernel-a13-5-15.yml
  93. secrets: inherit
  94. with:
  95. kernelsu_variant: KSU
  96. use_make: ${{ inputs.use_make }}
  97. build-a14-5-15-ksu:
  98. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  99. uses: ./.github/workflows/kernel-a14-5-15.yml
  100. secrets: inherit
  101. with:
  102. kernelsu_variant: KSU
  103. use_make: ${{ inputs.use_make }}
  104. build-a14-6-1-ksu:
  105. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  106. uses: ./.github/workflows/kernel-a14-6-1.yml
  107. secrets: inherit
  108. with:
  109. kernelsu_variant: KSU
  110. use_make: ${{ inputs.use_make }}
  111. build-a15-6-6-ksu:
  112. if: ${{ inputs.kernel_variant == 'KSU' || inputs.kernel_variant == 'Both' }}
  113. uses: ./.github/workflows/kernel-a15-6-6.yml
  114. secrets: inherit
  115. with:
  116. kernelsu_variant: KSU
  117. use_make: ${{ inputs.use_make }}
  118. release:
  119. if: ${{ always() && (inputs.release_type == 'Release' || inputs.release_type == 'Pre-Release') && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
  120. runs-on: ubuntu-latest
  121. needs:
  122. - build-a12-5-10-wksu
  123. - build-a13-5-10-wksu
  124. - build-a13-5-15-wksu
  125. - build-a14-5-15-wksu
  126. - build-a14-6-1-wksu
  127. - build-a15-6-6-wksu
  128. - build-a12-5-10-ksu
  129. - build-a13-5-10-ksu
  130. - build-a13-5-15-ksu
  131. - build-a14-5-15-ksu
  132. - build-a14-6-1-ksu
  133. - build-a15-6-6-ksu
  134. env:
  135. GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
  136. RELEASE_NAME: "GKI Kernels With WKSU & SUSFS v1.5.9"
  137. RELEASE_BODY:
  138. steps:
  139. - name: Checkout code
  140. uses: actions/checkout@v4
  141. - name: Get commit hashes and generate commit URLs
  142. run: |
  143. GITLAB_OWNER="simonpunk"
  144. GITLAB_REPO="susfs4ksu"
  145. declare -A BRANCH_MAP=(
  146. ["gki_android12_5_10"]="gki-android12-5.10"
  147. ["gki_android13_5_10"]="gki-android13-5.10"
  148. ["gki_android13_5_15"]="gki-android13-5.15"
  149. ["gki_android14_5_15"]="gki-android14-5.15"
  150. ["gki_android14_6_1"]="gki-android14-6.1"
  151. ["gki_android15_6_6"]="gki-android15-6.6"
  152. )
  153. for var_name in "${!BRANCH_MAP[@]}"; do
  154. branch_name="${BRANCH_MAP[$var_name]}"
  155. COMMIT_HASH=$(git ls-remote https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO.git refs/heads/$branch_name | awk '{ print $1 }')
  156. if [[ -n "$COMMIT_HASH" ]]; then
  157. COMMIT_URL="https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO/-/commit/$COMMIT_HASH"
  158. echo "$branch_name Commit: $COMMIT_HASH"
  159. echo "$branch_name Commit URL: $COMMIT_URL"
  160. echo "COMMIT_HASH_${var_name}=$COMMIT_HASH" >> "$GITHUB_ENV"
  161. echo "COMMIT_URL_${var_name}=$COMMIT_URL" >> "$GITHUB_ENV"
  162. fi
  163. done
  164. - name: Get KernelSU variant refs and links
  165. run: |
  166. # Get WKSU latest commit from wild branch
  167. WKSU_REF=$(git ls-remote "https://github.com/WildKernels/Wild_KSU.git" refs/heads/wild | awk '{print $1}')
  168. WKSU_URL="https://github.com/WildKernels/Wild_KSU/commit/$WKSU_REF"
  169. echo "WKSU_REF=$WKSU_REF" >> $GITHUB_ENV
  170. echo "WKSU_URL=$WKSU_URL" >> $GITHUB_ENV
  171. # Get KSU latest tag
  172. KSU_REF=$(git ls-remote --tags --sort=-v:refname "https://github.com/tiann/KernelSU.git" | grep -o 'refs/tags/.*' | cut -d/ -f3 | head -n1)
  173. KSU_URL="https://github.com/tiann/KernelSU/releases/tag/$KSU_REF"
  174. echo "KSU_REF=$KSU_REF" >> $GITHUB_ENV
  175. echo "KSU_URL=$KSU_URL" >> $GITHUB_ENV
  176. - name: Generate and Create New Tag
  177. run: |
  178. LATEST_TAG=$(gh api repos/${{ github.repository }}/tags --jq '.[0].name')
  179. if [ -z "$LATEST_TAG" ]; then
  180. LATEST_TAG="v1.5.9-r0"
  181. fi
  182. NEW_TAG=$(echo "$LATEST_TAG" | awk -F'-r' '{suffix=$2; if (!suffix) suffix=0; suffix++; printf "%s-r%d", $1, suffix}')
  183. echo "New tag: $NEW_TAG"
  184. echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
  185. git tag $NEW_TAG
  186. git push origin $NEW_TAG
  187. - name: Download Artifacts
  188. uses: actions/download-artifact@v4
  189. with:
  190. path: ./downloaded-artifacts
  191. - name: Set release body
  192. run: |
  193. cat << 'EOF' > release_body.md
  194. Features:
  195. -> WKSU Kernels & Others
  196. -> Multi Manager Support for WKSU Manager & KernelSU Manager (Only Install One)
  197. -> SUSFS ඞ v1.5.9
  198. -> Scope-Minimized Manual hooks v1.4
  199. -> Magic Mount Support
  200. -> Simple Maphide for LineageOS Detections
  201. -> Futile Maphide for jit-zygote-cache Detections
  202. -> Ptrace Patch Support for Older Kernels (<5.16)
  203. -> IPSet Support for Advanced Network Filtering
  204. -> Wireguard Support
  205. -> BBR Support
  206. Notes:
  207. -> WKSU, SUS SU Mode 2 will show as disabled or not compatble due to non-kprobe hooks and is not needed anymore!
  208. -> Official Kernel Flasher is broken with latest susfs, try https://github.com/fatalcoder524/KernelFlasher/
  209. Module:
  210. -> https://github.com/sidex15/ksu_module_susfs
  211. Managers:
  212. -> WKSU: https://github.com/WildKernels/Wild_KSU
  213. -> KernelSU: https://github.com/tiann/KernelSU
  214. Commit Hashes (at the time of release):
  215. -> WKSU: [${{ env.WKSU_REF }}](${{ env.WKSU_URL }})
  216. -> KernelSU: [${{ env.KSU_REF }}](${{ env.KSU_URL }})
  217. -> SUSFS4KSU:
  218. -> gki-android12-5.10: [${{ env.COMMIT_HASH_gki_android12_5_10 }}](${{ env.COMMIT_URL_gki_android12_5_10 }})
  219. -> gki-android13-5.10: [${{ env.COMMIT_HASH_gki_android13_5_10 }}](${{ env.COMMIT_URL_gki_android13_5_10 }})
  220. -> gki-android13-5.15: [${{ env.COMMIT_HASH_gki_android13_5_15 }}](${{ env.COMMIT_URL_gki_android13_5_15 }})
  221. -> gki-android14-5.15: [${{ env.COMMIT_HASH_gki_android14_5_15 }}](${{ env.COMMIT_URL_gki_android14_5_15 }})
  222. -> gki-android14-6.1: [${{ env.COMMIT_HASH_gki_android14_6_1 }}](${{ env.COMMIT_URL_gki_android14_6_1 }})
  223. -> gki-android15-6.6: [${{ env.COMMIT_HASH_gki_android15_6_6 }}](${{ env.COMMIT_URL_gki_android15_6_6 }})
  224. EOF
  225. - name: Create GitHub Release
  226. uses: softprops/action-gh-release@v2
  227. with:
  228. tag_name: ${{ env.NEW_TAG }}
  229. prerelease: ${{ inputs.release_type == 'Pre-Release' }}
  230. files: ""
  231. name: ${{ env.RELEASE_NAME }}
  232. body_path: release_body.md
  233. - name: Upload Release Assets
  234. run: |
  235. for file in ./downloaded-artifacts/*-kernel-*/*; do
  236. if [ -d "$file" ]; then
  237. continue
  238. fi
  239. echo "Uploading $file..."
  240. gh release upload ${{ env.NEW_TAG }} "$file"
  241. done
  242. - name: Display Files Uploaded
  243. run: |
  244. echo "GitHub release created with the following files:"
  245. ls ./downloaded-artifacts/**/*
  246. - name: Send Telegram Notification
  247. run: |
  248. curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
  249. -F chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \
  250. -F message_thread_id="${{ secrets.TELEGRAM_TOPIC_ID_GKI }}" \
  251. -F text="
  252. 🌽 *New Kernel Release Uploaded*
  253. 📦 *Repository:* [${{ github.repository }}](https://github.com/${{ github.repository }})
  254. ✏️ *Commit:* [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
  255. 📋 *Release Information:*
  256. 🔧 *KernelSU Variant:* ${{ inputs.kernel_variant }}
  257. [🔗 View GitHub Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.NEW_TAG }})" \
  258. -F parse_mode="Markdown"