main.yml 8.6 KB

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