Compile beta general kernel #345
This file contains 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
#========================================================================== | |
# Description: Compile beta general kernel | |
# Copyright (C) 2021 https://github.com/unifreq/openwrt_packit | |
# Copyright (C) 2021 https://github.com/ophub/kernel | |
#========================================================================== | |
name: Compile beta general kernel | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
kernel_source: | |
description: "Select the kernel source" | |
required: false | |
default: "unifreq" | |
type: choice | |
options: | |
- unifreq | |
kernel_version: | |
description: "Select kernel version" | |
required: false | |
default: "6.6.y" | |
type: choice | |
options: | |
- 5.4.y | |
- 5.10.y | |
- 5.15.y | |
- 6.1.y | |
- 6.6.y | |
- 6.1.y_6.6.y | |
- 5.15.y_5.10.y | |
kernel_auto: | |
description: "Auto use the latest kernel" | |
required: false | |
default: true | |
type: boolean | |
kernel_package: | |
description: "Select compile package list" | |
required: false | |
default: "all" | |
type: choice | |
options: | |
- all | |
- dtbs | |
kernel_config: | |
description: "Set the path of kernel .config" | |
required: false | |
default: "kernel-config/release/general" | |
type: choice | |
options: | |
- kernel-config/release/general | |
- false | |
kernel_patch: | |
description: "Set the directory for kernel patches" | |
required: false | |
default: "kernel-patch/beta" | |
type: choice | |
options: | |
- kernel-patch/beta | |
- false | |
auto_patch: | |
description: "Set whether to use kernel patches" | |
required: false | |
default: "true" | |
type: choice | |
options: | |
- true | |
- false | |
kernel_toolchain: | |
description: "Select the compilation toolchain" | |
required: false | |
default: "gcc" | |
type: choice | |
options: | |
- clang | |
- gcc | |
- gcc-11.3 | |
- gcc-12.2 | |
- gcc-12.3 | |
- gcc-13.2 | |
- gcc-13.3 | |
compress_format: | |
description: "Set the initrd compression format" | |
required: false | |
default: "xz" | |
type: choice | |
options: | |
- xz | |
- gzip | |
- zstd | |
- lzma | |
kernel_sign: | |
description: "Set the kernel custom signature" | |
required: false | |
default: "-beta" | |
type: choice | |
options: | |
- -beta | |
- -happy-new-year | |
- -dragon-boat-festival | |
- -mid-autumn-festival | |
- -happy-national-day | |
- -merry-christmas | |
- -spring-plowing | |
- -summer-growing | |
- -autumn-harvesting | |
- -winter-storing | |
- -yourname | |
env: | |
TZ: America/New_York | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event.repository.owner.id }} == ${{ github.event.sender.id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Initialization environment | |
id: init | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
docker rmi $(docker images -q) 2>/dev/null | |
[[ -n "${AGENT_TOOLSDIRECTORY}" ]] && sudo rm -rf "${AGENT_TOOLSDIRECTORY}" | |
sudo rm -rf /usr/share/dotnet /etc/apt/sources.list.d /usr/local/lib/android 2>/dev/null | |
sudo swapoff -a | |
sudo rm -f /swapfile /mnt/swapfile | |
sudo -E apt-get -y update | |
sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true | |
sudo -E apt-get -y install $(curl -fsSL https://is.gd/depend_ubuntu2204_armbian) | |
sudo -E systemctl daemon-reload | |
#sudo -E apt-get -y full-upgrade | |
sudo -E apt-get -y autoremove --purge | |
sudo -E apt-get clean | |
sudo sed -i '/NVM_DIR/d;/skel/d' /root/{.bashrc,.profile} | |
sudo rm -rf ~/{.cargo,.dotnet,.rustup} | |
sudo timedatectl set-timezone "${TZ}" | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Create simulated physical disk | |
id: disk | |
run: | | |
mnt_size=$(expr $(df -h /mnt | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 1) | |
root_size=$(expr $(df -h / | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 4) | |
sudo truncate -s "${mnt_size}"G /mnt/mnt.img | |
sudo truncate -s "${root_size}"G /root.img | |
sudo losetup /dev/loop6 /mnt/mnt.img | |
sudo losetup /dev/loop7 /root.img | |
sudo pvcreate /dev/loop6 | |
sudo pvcreate /dev/loop7 | |
sudo vgcreate github /dev/loop6 /dev/loop7 | |
sudo lvcreate -n runner -l 100%FREE github | |
sudo mkfs.xfs /dev/github/runner | |
sudo mkdir -p /builder | |
sudo mount /dev/github/runner /builder | |
sudo chown -R runner.runner /builder | |
df -Th | |
- name: Create a mapped directory | |
id: mapped | |
working-directory: /builder | |
run: | | |
df -hT ${PWD} | |
mkdir -p /builder/{kernel,output} | |
ln -sf /builder/kernel /home/runner/work/_actions/ophub/amlogic-s9xxx-armbian/main/compile-kernel/kernel | |
ln -sf /builder/output /home/runner/work/_actions/ophub/amlogic-s9xxx-armbian/main/compile-kernel/output | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Compile the kernel [ ${{ inputs.kernel_version }} ] | |
uses: ophub/amlogic-s9xxx-armbian@main | |
if: ${{ steps.mapped.outputs.status }} == 'success' && !cancelled() | |
with: | |
build_target: kernel | |
kernel_source: ${{ inputs.kernel_source }} | |
kernel_version: ${{ inputs.kernel_version }} | |
kernel_auto: ${{ inputs.kernel_auto }} | |
kernel_package: ${{ inputs.kernel_package }} | |
kernel_toolchain: ${{ inputs.kernel_toolchain }} | |
kernel_sign: ${{ inputs.kernel_sign }} | |
kernel_config: ${{ inputs.kernel_config }} | |
kernel_patch: ${{ inputs.kernel_patch }} | |
auto_patch: ${{ inputs.auto_patch }} | |
compress_format: ${{ inputs.compress_format }} | |
- name: Upload Kernel to Release | |
uses: ncipollo/release-action@main | |
if: ${{ env.PACKAGED_STATUS }} == 'success' && !cancelled() | |
with: | |
tag: kernel_beta | |
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/* | |
allowUpdates: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
body: | | |
- The kernel can be used to compile Armbian and OpenWrt. | |
- The kernel source code comes from: ${{ inputs.kernel_source }} | |
- The kernel compilation toolchain: ${{ inputs.kernel_toolchain }} | |
- This is a `beta version` kernel, tweaked to suit your little needs. | |
- 这是`测试版`内核,为了满足你的小需求而折腾。 |