main.yml 7.0 KB

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