Build and Release OnePlus Kernels #416
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Release OnePlus Kernels | |
permissions: | |
contents: write | |
actions: write | |
on: | |
workflow_dispatch: | |
inputs: | |
make_release: | |
description: 'Do you want to create a release?' | |
required: true | |
type: boolean | |
default: false | |
ksun_branch: | |
description: "Choose KernelSU Next Branch" | |
required: true | |
type: choice | |
options: | |
- stable | |
- next | |
default: next | |
android12-5_10_susfs_branch: | |
description: "Choose SusFS Branch for android12-5.10" | |
type: string | |
default: "gki-android12-5.10" | |
android13-5_10_susfs_branch: | |
description: "Choose SusFS Branch for android13-5.10" | |
type: string | |
default: "gki-android13-5.10" | |
android13-5_15_susfs_branch: | |
description: "Choose SusFS Branch for android13-5.15" | |
type: string | |
default: "gki-android13-5.15" | |
android14-5_15_susfs_branch: | |
description: "Choose SusFS Branch for android14-5.15" | |
type: string | |
default: "gki-android14-5.15" | |
android14-6_1_susfs_branch: | |
description: "Choose SusFS Branch for android14-6.1" | |
type: string | |
default: "gki-android14-6.1" | |
android15-6_6_susfs_branch: | |
description: "Choose SusFS Branch for android15-6.6" | |
type: string | |
default: "gki-android15-6.6" | |
jobs: | |
build-batch-1: # Non Bazel Builds | |
name: build-batch-1 (${{ matrix.model }}, ${{ matrix.soc }}, ${{ matrix.branch }}, ${{ matrix.manifest }}, ${{ matrix.android_version }}, ${{ matrix.kernel_version }}, ${{ inputs.ksun_branch }}) | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- model: OP11 | |
soc: kalama | |
branch: oneplus/sm8550 | |
manifest: oneplus_11_v.xml | |
android_version: android13 | |
kernel_version: "5.15" | |
- model: OP11r | |
soc: waipio | |
branch: oneplus/sm8475 | |
manifest: oneplus_11r_v.xml | |
android_version: android12 | |
kernel_version: "5.10" | |
- model: OP-OPEN | |
soc: kalama | |
branch: oneplus/sm8550 | |
manifest: oneplus_open_v.xml | |
android_version: android13 | |
kernel_version: "5.15" | |
- model: OP-ACE-2 | |
soc: waipio | |
branch: oneplus/sm8475 | |
manifest: oneplus_ace2_v.xml | |
android_version: android12 | |
kernel_version: "5.10" | |
- model: OP10t | |
soc: waipio | |
branch: oneplus/sm8475 | |
manifest: oneplus_10t_v.xml | |
android_version: android12 | |
kernel_version: "5.10" | |
- model: OP10pro | |
soc: waipio | |
branch: oneplus/sm8450 | |
manifest: oneplus_10_pro_v.xml | |
android_version: android12 | |
kernel_version: "5.10" | |
- model: OP-ACE-2-PRO | |
soc: kalama | |
branch: oneplus/sm8550 | |
manifest: oneplus_ace2_pro_v.xml | |
android_version: android13 | |
kernel_version: "5.15" | |
- model: OP12r | |
soc: kalama | |
branch: oneplus/sm8550 | |
manifest: oneplus_12r_v.xml | |
android_version: android13 | |
kernel_version: "5.15" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Select Appropriate SusFS Branch | |
id: get-susfs-branch | |
run: | | |
KERNEL_STRING="${{ matrix.android_version }}-${{ matrix.kernel_version }}" | |
case "$KERNEL_STRING" in | |
"android12-5.10") | |
SUSFS_BRANCH="${{ inputs.android12-5_10_susfs_branch }}" | |
;; | |
"android13-5.10") | |
SUSFS_BRANCH="${{ inputs.android13-5_10_susfs_branch }}" | |
;; | |
"android13-5.15") | |
SUSFS_BRANCH="${{ inputs.android13-5_15_susfs_branch }}" | |
;; | |
"android14-5.15") | |
SUSFS_BRANCH="${{ inputs.android14-5_15_susfs_branch }}" | |
;; | |
"android14-6.1") | |
SUSFS_BRANCH="${{ inputs.android14-6_1_susfs_branch }}" | |
;; | |
"android15-6.6") | |
SUSFS_BRANCH="${{ inputs.android15-6_6_susfs_branch }}" | |
;; | |
*) | |
echo "Invalid kernel version or unsupported: $KERNEL_STRING" | |
exit 1 | |
;; | |
esac | |
if [[ -z "$SUSFS_BRANCH" ]]; then | |
SUSFS_BRANCH="gki-${{ matrix.android_version }}-${{ matrix.kernel_version }}" | |
fi | |
echo "susfs_branch=$SUSFS_BRANCH" >> $GITHUB_OUTPUT | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Build Kernel | |
uses: ./.github/actions/ | |
with: | |
model: ${{ matrix.model }} | |
soc: ${{ matrix.soc }} | |
branch: ${{ matrix.branch }} | |
manifest: ${{ matrix.manifest }} | |
android_version: ${{ matrix.android_version }} | |
kernel_version: ${{ matrix.kernel_version }} | |
ksun_branch: ${{ inputs.ksun_branch }} | |
susfs_branch: ${{ steps.get-susfs-branch.outputs.susfs_branch }} | |
build-batch-2: | |
# needs: build-batch-1 | |
name: build-batch-2 (${{ matrix.model }}, ${{ matrix.soc }}, ${{ matrix.branch }}, ${{ matrix.manifest }}, ${{ matrix.android_version }}, ${{ matrix.kernel_version }}, ${{ inputs.ksun_branch }}) | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- model: OP13 | |
soc: sun | |
branch: oneplus/sm8750 | |
manifest: oneplus_13.xml | |
android_version: android15 | |
kernel_version: "6.6" | |
- model: OPAce5Pro | |
soc: sun | |
branch: oneplus/sm8750 | |
manifest: oneplus_ace5_pro.xml | |
android_version: android15 | |
kernel_version: "6.6" | |
- model: OP12 | |
soc: pineapple | |
branch: oneplus/sm8650 | |
manifest: oneplus12_v.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP13r | |
soc: pineapple | |
branch: oneplus/sm8650 | |
manifest: oneplus_13r.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP-ACE-5 | |
soc: pineapple | |
branch: oneplus/sm8650 | |
manifest: oneplus_ace5.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP-ACE-3V | |
soc: pineapple | |
branch: oneplus/sm7675 | |
manifest: oneplus_ace_3v_v.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP-NORD-4 | |
soc: pineapple | |
branch: oneplus/sm7675 | |
manifest: oneplus_nord_4_v.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP-PAD-2 | |
soc: pineapple | |
branch: oneplus/sm8650 | |
manifest: oneplus_pad2_v.xml | |
android_version: android14 | |
kernel_version: "6.1" | |
- model: OP13S | |
soc: sun | |
branch: oneplus/sm8750 | |
manifest: oneplus_13s.xml | |
android_version: android15 | |
kernel_version: "6.6" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Select Appropriate SusFS Branch | |
id: get-susfs-branch | |
run: | | |
KERNEL_STRING="${{ matrix.android_version }}-${{ matrix.kernel_version }}" | |
case "$KERNEL_STRING" in | |
"android12-5.10") | |
SUSFS_BRANCH="${{ inputs.android12-5_10_susfs_branch }}" | |
;; | |
"android13-5.10") | |
SUSFS_BRANCH="${{ inputs.android13-5_10_susfs_branch }}" | |
;; | |
"android13-5.15") | |
SUSFS_BRANCH="${{ inputs.android13-5_15_susfs_branch }}" | |
;; | |
"android14-5.15") | |
SUSFS_BRANCH="${{ inputs.android14-5_15_susfs_branch }}" | |
;; | |
"android14-6.1") | |
SUSFS_BRANCH="${{ inputs.android14-6_1_susfs_branch }}" | |
;; | |
"android15-6.6") | |
SUSFS_BRANCH="${{ inputs.android15-6_6_susfs_branch }}" | |
;; | |
*) | |
echo "Invalid kernel version or unsupported: $KERNEL_STRING" | |
exit 1 | |
;; | |
esac | |
if [[ -z "$SUSFS_BRANCH" ]]; then | |
SUSFS_BRANCH="gki-${{ matrix.android_version }}-${{ matrix.kernel_version }}" | |
fi | |
echo "susfs_branch=$SUSFS_BRANCH" >> $GITHUB_OUTPUT | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Build Kernel | |
uses: ./.github/actions | |
with: | |
model: ${{ matrix.model }} | |
soc: ${{ matrix.soc }} | |
branch: ${{ matrix.branch }} | |
manifest: ${{ matrix.manifest }} | |
android_version: ${{ matrix.android_version }} | |
kernel_version: ${{ matrix.kernel_version }} | |
ksun_branch: ${{ inputs.ksun_branch }} | |
susfs_branch: ${{ steps.get-susfs-branch.outputs.susfs_branch }} | |
trigger-release: | |
needs: | |
- build-batch-1 | |
- build-batch-2 | |
runs-on: ubuntu-latest | |
if: ${{ inputs.make_release }} | |
env: | |
REPO_OWNER: ${{ github.repository_owner }} | |
REPO_NAME: ${{ github.event.repository.name }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RELEASE_NAME: "*TEST BUILD* OnePlus Kernels With KernelSU Next & SUSFS v1.5.9 *TEST BUILD*" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Generate and Create New Tag | |
run: | | |
BASE_TAG="v1.5.9-r0" | |
LATEST_TAG=$(gh api repos/$REPO_OWNER/$REPO_NAME/tags --jq '.[0].name') | |
if [ -z "$LATEST_TAG" ]; then | |
LATEST_TAG="$BASE_TAG" | |
else | |
LATEST_TAG=$(printf "%s\n%s\n" "$LATEST_TAG" "$BASE_TAG" | sort -rV | head -n1) | |
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 | |
git tag $NEW_TAG | |
git push origin $NEW_TAG | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./downloaded-artifacts | |
- name: Generate Device List and Final Release Notes | |
id: generate-notes | |
run: | | |
echo "=== Start building the release notes ===" | |
cat << EOF > release_notes.md | |
This release contains KernelSU Next and SUSFS v1.5.9 | |
Module: | |
-> https://github.com/sidex15/ksu_module_susfs | |
Non-Official Managers: | |
-> https://github.com/KernelSU-Next/KernelSU-Next | |
### Built Devices | |
| Model | Kernel Version | | |
|-------|----------------| | |
EOF | |
# === Generate table rows === | |
while IFS= read -r file; do | |
if [ -f "$file" ]; then | |
model=$(basename "$file" .txt) | |
version=$(cat "$file") | |
printf "| %-7s | %-16s |\n" "$model" "$version" >> release_notes.md | |
fi | |
done < <(find downloaded-artifacts -name "*.txt" -type f | sort) | |
# === Add features and finalize === | |
cat << 'EOF' >> release_notes.md | |
### Features | |
- [+] KernelSU-Next | |
- [+] SUSFS v1.5.9 | |
- [+] Wireguard Support | |
- [+] Maphide LineageOS Detections | |
- [+] Futile Maphide for jit-zygote-cache Detections | |
- [+] Magic Mount Support | |
- [+] Ptrace message leak fix for kernels < 5.16 | |
- [+] Manual Hooks [scope_min_manual_hooks_v1.4] | |
- [+] CONFIG_TMPFS_XATTR Support [Mountify Support] | |
- [+] BBR v1 Support. | |
- [+] HMBIRD scx support for OnePlus 13 & OnePlus Ace 5 Pro. | |
EOF | |
# === Output for debugging === | |
echo "--- Final Release Notes ---" | |
cat release_notes.md | |
- name: Create GitHub Release | |
run: | | |
gh release create "${{ env.NEW_TAG }}" \ | |
--repo "${{ env.REPO_OWNER }}/${{ env.REPO_NAME }}" \ | |
--title "${{ env.RELEASE_NAME }}" \ | |
--notes-file release_notes.md \ | |
--prerelease | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload Release Assets Dynamically | |
run: | | |
for file in ./downloaded-artifacts/kernel-*/*.zip; do | |
if [ -d "$file" ]; then | |
continue | |
fi | |
echo "Uploading $file..." | |
gh release upload ${{ env.NEW_TAG }} "$file" | |
done | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NEW_TAG: ${{ env.NEW_TAG }} | |
- name: Display Files Uploaded | |
run: | | |
echo "GitHub release created with the following files:" | |
ls ./downloaded-artifacts/**/* |