Build RockChip Armv8 OpenWrt #41
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
# | |
# Copyright (c) 2019-2020 P3TERX <https://p3terx.com> | |
# | |
# This is free software, licensed under the MIT License. | |
# See /LICENSE for more information. | |
# | |
# https://github.com/P3TERX/Actions-OpenWrt | |
# Description: Build OpenWrt using GitHub Actions | |
# | |
name: Build RockChip Armv8 OpenWrt | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
ssh: | |
description: 'SSH connection to Actions' | |
required: false | |
default: 'false' | |
schedule: | |
- cron: 30 17 * * * | |
env: | |
REPO_URL: https://github.com/coolsnowwolf/lede | |
REPO_BRANCH: master | |
FEEDS_CONF: compile/feeds.conf/feeds.conf.default | |
CONFIG_FILE: compile/config/RockChip-Armv8.config | |
EXTRA_CONFIG: compile/config/Extra.config | |
DIY_P1_SH: compile/scripts/diy-part1.sh | |
DIY_P2_SH: compile/scripts/diy-part2.sh | |
Preset_P1_SH: compile/scripts/preset-part1.sh | |
Preset_P2_SH: compile/scripts/preset-part2.sh | |
DEVICE_KERNEL: arm64 | |
FIRMWARE_TAG: Rockchip_Arm64 | |
DEPENDS_URL: https://raw.githubusercontent.com/Gabrielxzx/Gabrielxzx-luci/master/openwrt-list/depends-ubuntu-2004-lede | |
UPLOAD_BIN_DIR: false | |
UPLOAD_ARTIFACT: true | |
UPLOAD_RELEASE: true | |
TZ: Asia/Shanghai | |
jobs: | |
build-LEDE: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Check server performance | |
run: | | |
echo "警告⚠" | |
echo "分配的服务器性能有限,若选择的插件过多,务必注意CPU性能!" | |
echo -e "已知CPU型号(降序): 7763,8370C,8272CL,8171M,E5-2673\n" | |
echo "--------------------------CPU信息--------------------------" | |
echo "CPU物理数量: $(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)" | |
echo "CPU核心数量: $(nproc)" | |
echo -e "CPU型号信息:$(cat /proc/cpuinfo | grep -m1 name | awk -F: '{print $2}')\n" | |
echo "--------------------------内存信息--------------------------" | |
echo "已安装内存详细信息:" | |
echo -e "$(sudo lshw -short -C memory | grep GiB)\n" | |
- name: Checkout | |
uses: actions/checkout@main | |
- name: Initialization environment | |
id: init | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL | |
sudo docker image prune --all --force | |
sudo -E apt-get -qq update | |
sudo -E apt-get -qq install $(curl -fsSL $DEPENDS_URL) | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean | |
sudo timedatectl set-timezone "$TZ" | |
sudo chown $USER:$GROUPS $GITHUB_WORKSPACE | |
echo "status=success" >> ${GITHUB_OUTPUT} | |
- name: Before freeing up disk space | |
run: | | |
echo "Before freeing up disk space" | |
echo "==============================================================================" | |
df -hT | |
echo "==============================================================================" | |
- 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 | |
- name: Free up disk space complete | |
run: | | |
echo "Free up disk space complete" | |
echo "==============================================================================" | |
df -hT | |
echo "==============================================================================" | |
- name: Clone source code | |
working-directory: /builder | |
run: | | |
df -hT $PWD | |
git clone $REPO_URL -b $REPO_BRANCH openwrt | |
ln -sf /builder/openwrt $GITHUB_WORKSPACE/openwrt | |
df -hT $PWD | |
- name: Load custom feeds | |
run: | | |
[ -e $FEEDS_CONF ] && cat $FEEDS_CONF >> openwrt/feeds.conf.default | |
chmod +x $GITHUB_WORKSPACE/compile/scripts/*.sh | |
cd openwrt | |
df -hT $PWD | |
$GITHUB_WORKSPACE/$DIY_P1_SH | |
- name: Update feeds | |
run: cd openwrt && ./scripts/feeds update -a | |
- name: Install feeds | |
run: cd openwrt && ./scripts/feeds install -a | |
- name: Load custom configuration | |
run: | | |
[ -e files ] && mv files openwrt/files | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
[ -e $EXTRA_CONFIG ] && cat $EXTRA_CONFIG >> openwrt/.config | |
cd openwrt | |
df -hT $PWD | |
$GITHUB_WORKSPACE/$DIY_P2_SH | |
$GITHUB_WORKSPACE/$Preset_P1_SH $DEVICE_KERNEL | |
$GITHUB_WORKSPACE/$Preset_P2_SH | |
- name: SSH connection to Actions | |
uses: P3TERX/[email protected] | |
if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') | |
env: | |
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
- name: Download package | |
id: package | |
run: | | |
cd openwrt | |
df -hT $PWD | |
make defconfig | |
make download -j8 | |
find dl -size -1024c -exec ls -l {} \; | |
find dl -size -1024c -exec rm -f {} \; | |
- name: Compile the firmware | |
id: compile | |
run: | | |
cd openwrt | |
df -hT $PWD | |
echo -e "$(nproc) thread compile" | |
make -j$(nproc) || make -j1 || make -j1 V=s | |
echo "status=success" >> $GITHUB_OUTPUT | |
echo $FIRMWARE_TAG > DEVICE_NAME | |
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV | |
echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV | |
- name: Check space usage | |
if: (!cancelled()) | |
run: df -hT | |
- name: Upload bin directory to artifact | |
uses: actions/upload-artifact@main | |
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' | |
with: | |
name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
path: openwrt/bin | |
- name: Organize files | |
id: organize | |
if: steps.compile.outputs.status == 'success' && !cancelled() | |
run: | | |
cd openwrt/bin/targets/*/* | |
rm -rf packages | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload the compile OpenWrt to artifact | |
uses: actions/upload-artifact@main | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_ARTIFACT == 'true' && !cancelled() | |
with: | |
name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
path: ${{ env.FIRMWARE }} | |
- name: Generate release tag | |
id: tag | |
if: steps.organize.outputs.status == 'success' && env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
echo "release_tag=$(date +"%Y.%m.%d-%H%M")_$FIRMWARE_TAG" >> $GITHUB_OUTPUT | |
echo "release_date=$(date +"%Y.%m.%d")" >> $GITHUB_OUTPUT | |
touch release.txt | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload the compile OpenWrt to release | |
uses: softprops/[email protected] | |
if: steps.tag.outputs.status == 'success' && !cancelled() | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
name: ${{ steps.tag.outputs.release_date }} ${{ env.FIRMWARE_TAG }} openwrt | |
tag_name: ${{ steps.tag.outputs.release_tag }} | |
body_path: release.txt | |
files: ${{ env.FIRMWARE }}/* | |