main.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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. wksu:
  18. description: "Build with WKSU?"
  19. required: true
  20. type: choice
  21. options:
  22. - yes
  23. - no
  24. default: yes
  25. susfs:
  26. description: "Build with SUSFS?"
  27. required: true
  28. type: choice
  29. options:
  30. - yes
  31. - no
  32. default: yes
  33. bbg:
  34. description: "Build with BBG?"
  35. required: true
  36. type: choice
  37. options:
  38. - yes
  39. - no
  40. default: yes
  41. zeromount:
  42. description: "Add Zeromount?"
  43. required: true
  44. type: choice
  45. options:
  46. - yes
  47. - no
  48. default: no
  49. unicodefix:
  50. description: "Add unicode fix?"
  51. required: true
  52. type: choice
  53. options:
  54. - yes
  55. - no
  56. default: yes
  57. jobs:
  58. build-samsung:
  59. uses: ./.github/workflows/kernel-samsung.yml
  60. secrets: inherit
  61. with:
  62. susfs: ${{ inputs.susfs }}
  63. bbg: ${{ inputs.bbg }}
  64. unicodefix: ${{ inputs.unicodefix }}
  65. zeromount: ${{ inputs.zeromount }}
  66. wksu: ${{ inputs.wksu }}
  67. release:
  68. runs-on: ubuntu-latest
  69. if: inputs.release_type != 'Actions'
  70. needs:
  71. - build-samsung
  72. env:
  73. GH_TOKEN: ${{ github.token }}
  74. RELEASE_NAME: "Samsung GKI Kernels With WKSU v3.1.2 & SUSFS v2.1.0"
  75. RELEASE_BODY: ""
  76. steps:
  77. - name: Free Disk Space
  78. if: true
  79. uses: endersonmenezes/free-disk-space@v3 # Use @main for latest, @v3 for stable
  80. with:
  81. remove_android: true
  82. remove_dotnet: true
  83. remove_haskell: true
  84. remove_tool_cache: true
  85. remove_swap: true
  86. remove_packages: "azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox postgresql* temurin-* *llvm* mysql* dotnet-sdk-*"
  87. remove_packages_one_command: true
  88. remove_folders: "/usr/share/swift /usr/share/miniconda /usr/share/az* /usr/local/lib/node_modules /usr/local/share/chromium /usr/local/share/powershell /usr/local/julia /usr/local/aws-cli /usr/local/aws-sam-cli /usr/share/gradle"
  89. rm_cmd: "rmz" # Use 'rmz' for faster deletion (default: 'rm')
  90. rmz_version: "3.1.1" # Required when rm_cmd is 'rmz'
  91. testing: false
  92. - name: Checkout code
  93. uses: actions/checkout@v4
  94. - name: Generate New Tag
  95. if: inputs.release_type != 'Actions'
  96. run: |
  97. LATEST_TAG=$(gh api repos/${{ github.repository }}/tags --jq '.[0].name' 2>/dev/null || echo "")
  98. if [ -z "$LATEST_TAG" ]; then
  99. LATEST_TAG="v2.1.0-r0"
  100. fi
  101. NEW_TAG=$(echo "$LATEST_TAG" | awk -F'-r' '{suffix=$2; if (!suffix) suffix=0; suffix++; printf "%s-r%d", $1, suffix}')
  102. echo "New tag: $NEW_TAG"
  103. echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
  104. - name: Download Artifacts
  105. uses: actions/download-artifact@v4
  106. with:
  107. path: ./downloaded-artifacts
  108. pattern: '*-AnyKernel3'
  109. - name: Set release body
  110. run: |
  111. cat << 'EOF' > release_body.md
  112. **IMPORTANT DISCLAIMER**
  113. This software is provided for testing and educational purposes only. Use at your own risk.
  114. The developers are not responsible for any damage, data loss, or issues that may occur.
  115. Please ensure you have proper backups before installation.
  116. Features:
  117. -> Wild KSU v3.1.2
  118. -> SUSFS ඞ v2.1.0
  119. -> SUSFS Inline hooks
  120. -> BBG: https://github.com/vc-teahouse/Baseband-guard
  121. -> unicode fix
  122. 🔹 BBG (Baseband-guard)
  123. - A lightweight LSM (Linux Security Module) for Android kernel
  124. - Blocks unauthorized writes to critical partitions/device nodes
  125. - Prevents malicious tampering with baseband and boot chain
  126. - Kernel-level protection via LSM hooks
  127. - Reduces risk of soft-brick/hard-brick issues
  128. Notes:
  129. - The only modifications to Samsung Kernels at this time are WKSU and SUSFS. Everything else is left at default settings.
  130. - Currently no support for KernelPatch-Next for the time being.
  131. Module:
  132. -> https://github.com/sidex15/ksu_module_susfs
  133. Managers:
  134. -> WKSU: https://github.com/WildKernels/Wild_KSU
  135. EOF
  136. - name: Create GitHub Release
  137. uses: softprops/action-gh-release@v2
  138. with:
  139. tag_name: ${{ env.NEW_TAG }}
  140. prerelease: ${{ inputs.release_type == 'Pre-Release' }}
  141. files: ""
  142. name: ${{ env.RELEASE_NAME }}
  143. body_path: release_body.md
  144. - name: Upload Release Assets
  145. run: |
  146. shopt -s nullglob
  147. anykernel_dirs=(./downloaded-artifacts/*/)
  148. if [ ${#anykernel_dirs[@]} -eq 0 ]; then
  149. echo "No artifact directories found under ./downloaded-artifacts; skipping upload."
  150. else
  151. for dir in "${anykernel_dirs[@]}"; do
  152. # Check if this is an AnyKernel3 artifact directory
  153. if [[ "$(basename "$dir")" == *"-AnyKernel3" ]]; then
  154. artifact_name=$(basename "$dir")
  155. echo "Creating ZIP for $artifact_name..."
  156. # Navigate into the directory and zip its contents directly
  157. cd "$dir"
  158. zip -r -9 "../../${artifact_name}.zip" ./*
  159. cd - > /dev/null
  160. echo "Uploading ${artifact_name}.zip..."
  161. gh release upload ${{ env.NEW_TAG }} "${artifact_name}.zip"
  162. fi
  163. done
  164. fi
  165. # - name: Send Telegram Notification
  166. # if: inputs.release_type != 'Actions'
  167. # run: |
  168. # RELEASE_TYPE_TEXT=""
  169. # if [ "${{ inputs.release_type }}" == "Pre-Release" ]; then
  170. # RELEASE_TYPE_TEXT="🧪 *Pre-Release*"
  171. # else
  172. # RELEASE_TYPE_TEXT="🚀 *Release*"
  173. # fi
  174. #
  175. # curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
  176. # -F chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \
  177. # -F message_thread_id="${{ secrets.TELEGRAM_TOPIC_ID_GKI }}" \
  178. # -F text="
  179. # 🌽 *New Kernel $RELEASE_TYPE_TEXT Uploaded*
  180. # 📦 *Repository:* [${{ github.repository }}](https://github.com/${{ github.repository }})
  181. # ✏️ *Commit:* [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
  182. # [🔗 View GitHub Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.NEW_TAG }})" \
  183. # -F parse_mode="Markdown"