name: Build Kernels permissions: contents: write actions: write on: workflow_dispatch: inputs: release_type: description: "Choose Release Type" required: true type: choice options: - Actions - Pre-Release - Release default: Actions susfs: description: "Build with SUSFS?" required: true type: choice options: - yes - no default: yes bbg: description: "Build with BBG?" required: true type: choice options: - yes - no default: yes bbrv3: description: "Add BBR?" required: true type: choice options: - yes - no default: no unicodefix: description: "Add unicode fix?" required: true type: choice options: - yes - no default: yes optimizations: description: "Add kernel optimizations?" required: true type: choice options: - yes - no default: no jobs: build-samsung: uses: ./.github/workflows/kernel-samsung.yml secrets: inherit with: SUSFS: ${{ inputs.SUSFS }} BBG: ${{ inputs.BBG }} BBRv3: ${{ inputs.BBRv3 }} unicodefix: ${{ inputs.unicodefix }} release: runs-on: ubuntu-latest if: inputs.release_type != 'Actions' needs: - build-samsung env: GH_TOKEN: ${{ github.token }} RELEASE_NAME: "Samsung GKI Kernels With WKSU v3.0.0 & SUSFS v2.0.0" RELEASE_BODY: "" steps: - name: Free Disk Space if: true uses: endersonmenezes/free-disk-space@v3 # Use @main for latest, @v3 for stable with: remove_android: true remove_dotnet: true remove_haskell: true remove_tool_cache: true remove_swap: true remove_packages: "azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox postgresql* temurin-* *llvm* mysql* dotnet-sdk-*" remove_packages_one_command: true 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" rm_cmd: "rmz" # Use 'rmz' for faster deletion (default: 'rm') rmz_version: "3.1.1" # Required when rm_cmd is 'rmz' testing: false - name: Checkout code uses: actions/checkout@v4 - name: Generate New Tag if: inputs.release_type != 'Actions' run: | LATEST_TAG=$(gh api repos/${{ github.repository }}/tags --jq '.[0].name' 2>/dev/null || echo "") if [ -z "$LATEST_TAG" ]; then LATEST_TAG="v2.0.0-r0" fi NEW_TAG=$(echo "$LATEST_TAG" | awk -F'-r' '{suffix=$2; if (!suffix) suffix=0; suffix++; printf "%s-r%d", $1, suffix}') echo "New tag: $NEW_TAG" echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV - name: Download Artifacts uses: actions/download-artifact@v4 with: path: ./downloaded-artifacts pattern: '*-AnyKernel3' - name: Set release body run: | cat << 'EOF' > release_body.md **IMPORTANT DISCLAIMER** This software is provided for testing and educational purposes only. Use at your own risk. The developers are not responsible for any damage, data loss, or issues that may occur. Please ensure you have proper backups before installation. Features: -> Wild KSU Manager Support, Also Compatible with KernelSU-Next Manager -> SUSFS เถž v2.0.0 -> SUSFS Inline hooks -> BBG: https://github.com/vc-teahouse/Baseband-guard ๐Ÿ”น BBG (Baseband-guard) - A lightweight LSM (Linux Security Module) for Android kernel - Blocks unauthorized writes to critical partitions/device nodes - Prevents malicious tampering with baseband and boot chain - Kernel-level protection via LSM hooks - Reduces risk of soft-brick/hard-brick issues Notes: - The only modifications to Samsung Kernels at this time are WKSU and SUSFS. Everything else is left at default settings. - Currently no support for KernelPatch-Next for the time being. Module: -> https://github.com/sidex15/ksu_module_susfs Managers: -> WKSU: https://github.com/WildKernels/Wild_KSU -> Next: https://github.com/KernelSU-Next/KernelSU-Next EOF - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.NEW_TAG }} prerelease: ${{ inputs.release_type == 'Pre-Release' }} files: "" name: ${{ env.RELEASE_NAME }} body_path: release_body.md - name: Upload Release Assets run: | shopt -s nullglob anykernel_dirs=(./downloaded-artifacts/*/) if [ ${#anykernel_dirs[@]} -eq 0 ]; then echo "No artifact directories found under ./downloaded-artifacts; skipping upload." else for dir in "${anykernel_dirs[@]}"; do # Check if this is an AnyKernel3 artifact directory if [[ "$(basename "$dir")" == *"-AnyKernel3" ]]; then artifact_name=$(basename "$dir") echo "Creating ZIP for $artifact_name..." # Navigate into the directory and zip its contents directly cd "$dir" zip -r -9 "../../${artifact_name}.zip" ./* cd - > /dev/null echo "Uploading ${artifact_name}.zip..." gh release upload ${{ env.NEW_TAG }} "${artifact_name}.zip" fi done fi # - name: Send Telegram Notification # if: inputs.release_type != 'Actions' # run: | # RELEASE_TYPE_TEXT="" # if [ "${{ inputs.release_type }}" == "Pre-Release" ]; then # RELEASE_TYPE_TEXT="๐Ÿงช *Pre-Release*" # else # RELEASE_TYPE_TEXT="๐Ÿš€ *Release*" # fi # # curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \ # -F chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \ # -F message_thread_id="${{ secrets.TELEGRAM_TOPIC_ID_GKI }}" \ # -F text=" # ๐ŸŒฝ *New Kernel $RELEASE_TYPE_TEXT Uploaded* # ๐Ÿ“ฆ *Repository:* [${{ github.repository }}](https://github.com/${{ github.repository }}) # โœ๏ธ *Commit:* [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) # [๐Ÿ”— View GitHub Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.NEW_TAG }})" \ # -F parse_mode="Markdown"