Build Homeassistant #17
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: Build Armbian | |
# Copyright (C) 2021 https://github.com/ophub/amlogic-s9xxx-armbian | |
# Copyright (C) 2024 https://github.com/dy008/amlogic-s9xxx-armbian | |
#========================================================================== | |
name: Build Homeassistant | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
set_release: | |
description: "Select OS Release." | |
required: false | |
default: "bookworm" | |
type: choice | |
options: | |
- jammy | |
- noble | |
- bookworm | |
- bullseye | |
armbian_board: | |
description: "Select device board." | |
required: false | |
default: "all" | |
type: choice | |
options: | |
- all | |
- s905w_s905x_s905mb_s905l3a_s905l3b_s905x2_s905x3_s912_s922x_s922x-ct2000_s922x-reva | |
- s905x3-x88-pro-x3_s912-m8s-pro_s905x-t95_s912-t95z-plus_s905l3-unt400g1_s905lb-r3300l | |
- s912-x92_s922x_s922x-ct2000_s922x-reva_seewo-sv21_smart-am40_station-m1_sw799_swan1-w28 | |
- tanix-tx6_tb-ls3399_tn3399_tpm312_tqc-a01_tvi3315a_vplus_xiaobao_yskj_zcube1-max_zk-r39a_zysj | |
- vplus_tanix-tx6_tqc-a01 | |
- a311d | |
- beikeyun | |
- chainedbox | |
- crrc | |
- dg3399 | |
- dg-tn3568 | |
- dlfr100 | |
- e20c | |
- e25 | |
- eaidk-610 | |
- emb3531 | |
- fine3399 | |
- firefly-rk3399 | |
- fmx1-pro | |
- jp-tvbox | |
- h28k | |
- h66k | |
- h68k | |
- h69k | |
- h88k | |
- h88k-v3 | |
- h96-max-m2 | |
- hs530r | |
- hugsun-x99 | |
- ipc-r | |
- king3399 | |
- kylin3399 | |
- lckfb-tspi | |
- leez | |
- lx-r3s | |
- mrkaio-m68s | |
- nanopc-t6 | |
- nanopi-r5c | |
- nanopi-r5s | |
- orangepi-5-plus | |
- panther-x2 | |
- r66s | |
- r68s | |
- renegade-rk3328 | |
- rk3318-box | |
- rock5b | |
- rock5c | |
- ruisen-box | |
- s905 | |
- s905-beelink-mini | |
- s905-mxqpro-plus | |
- s905d | |
- s905d-ki-pro | |
- s905d-sml5442tw | |
- s905l | |
- s905l-aurora-1s | |
- s905l-b860av21u | |
- s905l-mg101 | |
- s905l2 | |
- s905l2-e900v21e | |
- s905l2-wojia | |
- s905l3 | |
- s905l3-cm211 | |
- s905l3-unt400g1 | |
- s905l3-unt402a | |
- s905l3a | |
- s905l3a-cm311 | |
- s905l3a-m401a | |
- s905l3b | |
- s905l3b-e900v21d | |
- s905l3b-e900v22d | |
- s905l3b-e900v22e | |
- s905l3b-ip103h | |
- s905l3b-rg020et-ca | |
- s905l3b-unt403a | |
- s905lb-ipbs9505 | |
- s905lb-q96-mini | |
- s905lb-r3300l | |
- s905mb | |
- s905w | |
- s905w-w95 | |
- s905w-x96-mini | |
- s905w-x96w | |
- s905x | |
- s905x-b860h | |
- s905x-nexbox-a95x | |
- s905x-t95 | |
- s905x-tbee | |
- s905x-tx9 | |
- s905x2 | |
- s905x2-km3 | |
- s905x2-x96max-2g | |
- s905x3 | |
- s905x3-2101 | |
- s905x3-a100 | |
- s905x3-a95xf3 | |
- s905x3-a95xf3-gb | |
- s905x3-b | |
- s905x3-h96max | |
- s905x3-hk1 | |
- s905x3-ip1001m | |
- s905x3-q1 | |
- s905x3-q2 | |
- s905x3-tx3 | |
- s905x3-tx3-bz | |
- s905x3-ugoosx3 | |
- s905x3-whale | |
- s905x3-x88-pro-x3 | |
- s905x3-x96air | |
- s905x3-x96air-gb | |
- s905x3-x96max | |
- s912 | |
- s912-h96pro-plus | |
- s912-m8s-pro | |
- s912-nexbox-a1 | |
- s912-nexbox-a2 | |
- s912-onecloudpro | |
- s912-phicomm-t1 | |
- s912-t95z-plus | |
- s912-tx8-max | |
- s912-tx9-pro-2g | |
- s912-tx9-pro-3g | |
- s912-x92 | |
- s912-zyxq-fake | |
- s922x | |
- s922x-ct2000 | |
- s922x-gtking | |
- s922x-gtkingpro-h | |
- s922x-odroid-n2 | |
- s922x-reva | |
- s922x-ugoos-am6 | |
- seewo-sv21 | |
- smart-am40 | |
- station-m1 | |
- swan1-w28 | |
- sw799 | |
- tanix-tx6 | |
- tb-ls3399 | |
- tn3399 | |
- tpm312 | |
- tqc-a01 | |
- tvi3315a | |
- vplus | |
- xiaobao | |
- yskj | |
- zcube1-max | |
- zk-r39a | |
- zysj | |
armbian_kernel: | |
description: "Select kernel version." | |
required: false | |
default: "6.1.y_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 | |
auto_kernel: | |
description: "Auto use the latest kernel." | |
required: false | |
default: true | |
type: boolean | |
kernel_repo: | |
description: "Set the kernel repository." | |
required: false | |
default: "ophub/kernel" | |
type: choice | |
options: | |
- ophub/kernel | |
kernel_usage: | |
description: "Set the tags of the stable kernel." | |
required: false | |
default: "stable" | |
type: choice | |
options: | |
- stable | |
- flippy | |
- dev | |
- beta | |
armbian_fstype: | |
description: "Select armbian rootfs type." | |
required: false | |
default: "ext4" | |
type: choice | |
options: | |
- ext4 | |
- btrfs | |
armbian_storage: | |
description: "Select image storage type." | |
required: false | |
default: "save" | |
type: choice | |
options: | |
- save | |
- temp | |
builder_name: | |
description: "Set Armbian builder signature." | |
required: false | |
default: "dy008" | |
type: choice | |
options: | |
- ophub | |
- dy008 | |
env: | |
TZ: America/New_York | |
ROOTFS_SCRIPT: compile-kernel/tools/script/armbian_rootfs.sh | |
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 | |
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: Download source code | |
id: down | |
working-directory: /builder | |
if: ${{ steps.init.outputs.status }} == 'success' && !cancelled() | |
run: | | |
df -hT ${PWD} | |
git clone -q --single-branch --depth=1 --branch=main https://github.com/armbian/build.git build | |
ln -sf /builder/build ${GITHUB_WORKSPACE}/build | |
ln -sf /builder/build /home/runner/work/_actions/ophub/amlogic-s9xxx-armbian/main/build | |
# 下载扩展的安装homeasssistant脚本 | |
wget -P ./build/extensions https://raw.githubusercontent.com/armbian/os/main/userpatches/extensions/docker-ce.sh | |
wget -P ./build/extensions https://raw.githubusercontent.com/armbian/os/main/userpatches/extensions/ha.sh | |
# 修改ha.sh脚本中的命令以停止internet host IP地址检测 | |
sed -i "/sed -i \"\/update-grub\/d\"/a\sed -i \"s\/while ! ping\/while ping\/\" homeassistant-supervised/DEBIAN/postinst" ./build/extensions/ha.sh | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Compile Armbian [ ${{ inputs.set_release }} ] | |
id: compile | |
working-directory: /builder | |
if: ${{ steps.down.outputs.status }} == 'success' && !cancelled() | |
run: | | |
# Compile method and parameter description: https://docs.armbian.com/Developer-Guide_Build-Options | |
cd build/ | |
./compile.sh RELEASE=${{ inputs.set_release }} BOARD=odroidn2 BRANCH=current ENABLE_EXTENSIONS="ha" BUILD_MINIMAL=no \ | |
BUILD_ONLY=default HOST=armbian BUILD_DESKTOP=no EXPERT=yes KERNEL_CONFIGURE=no \ | |
COMPRESS_OUTPUTIMAGE="sha" SHARE_LOG=yes | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Organize files and clear space | |
id: clean | |
if: ${{ steps.compile.outputs.status }} == 'success' && !cancelled() | |
run: | | |
# Organize and keep essential files, delete unnecessary files | |
chmod +x ${ROOTFS_SCRIPT} | |
${ROOTFS_SCRIPT} -v ${{ inputs.set_release }} | |
# Output cleaning result information | |
df -hT ${PWD} | |
echo "build_tag=Armbian_HassIoSupervisor_${{ inputs.set_release }}_${{ inputs.armbian_storage }}_$(date +"%Y.%m")" >> ${GITHUB_OUTPUT} | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Upload Armbian image to Release | |
uses: ncipollo/release-action@main | |
if: ${{ steps.clean.outputs.status }} == 'success' && !cancelled() | |
with: | |
tag: ${{ steps.clean.outputs.build_tag }} | |
artifacts: build/output/images/* | |
allowUpdates: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Rebuild Armbian | |
uses: ophub/amlogic-s9xxx-armbian@main | |
if: ${{ steps.clean.outputs.status }} == 'success' && !cancelled() | |
with: | |
build_target: armbian | |
armbian_path: build/output/images/*.img.gz | |
armbian_board: ${{ inputs.armbian_board }} | |
armbian_kernel: ${{ inputs.armbian_kernel }} | |
auto_kernel: ${{ inputs.auto_kernel }} | |
kernel_repo: ${{ inputs.kernel_repo }} | |
kernel_usage: ${{ inputs.kernel_usage }} | |
armbian_fstype: ${{ inputs.armbian_fstype }} | |
builder_name: ${{ inputs.builder_name }} | |
- name: Upload Rebuild image to Release | |
uses: ncipollo/release-action@main | |
if: ${{ env.PACKAGED_STATUS }} == 'success' && !cancelled() | |
with: | |
tag: ${{ steps.clean.outputs.build_tag }} | |
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/* | |
allowUpdates: true | |
removeArtifacts: false | |
replacesArtifacts: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
body: | | |
### Armbian For Homeassistant Supervisor Image information | |
- Default username: root | |
- Default password: 1234 | |
- Install command: armbian-install | |
- Update command: armbian-update | |
### Armbian Image Verification | |
- sha256sum |