ASUS RT-ACRH17 (AC42U) #3
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 OpenWrt by GitHub Actions # | |
# Based on: https://github.com/P3TERX/Actions-OpenWrt # | |
# Author: Hyy2001X # | |
########################################################### | |
name: ASUS RT-ACRH17 (AC42U) | |
### 界面控制部分 ( 以下内容请保持不变 ) | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
Tempoary_IP: | |
description: '固件 IP 地址 [可选]' | |
default: '' | |
Tempoary_CONFIG: | |
description: '配置文件 [可选]' | |
default: '' | |
Tempoary_FLAG: | |
description: '固件标签 [可选]' | |
default: '' | |
### 界面控制部分结束 ( 以上内容请保持不变 ) | |
## Git Push 时触发编译(不要删除此行注释) | |
#push: | |
# branches: | |
# - master | |
## 定时触发编译(不要删除此行注释) | |
#schedule: | |
# - cron: 0 8 * * 5 | |
## 重新点亮 Star 时触发编译(不要删除此行注释) | |
#watch: | |
# types: [started] | |
### 请按需求修改以下内容 | |
### 环境变量设置 | |
env: | |
# 编译时调用的 [.config] 文件名称 | |
CONFIG_FILE: asus_rt-ac42u | |
# 源码仓库:分支 | |
DEFAULT_SOURCE: coolsnowwolf/lede:master | |
# 上传固件到 Github Releases | |
UPLOAD_RELEASES: true | |
# 上传固件到 Github Artifacts | |
UPLOAD_ARTIFACTS: false | |
# 上传 bin 文件夹到 Github Artifacts | |
UPLOAD_BIN_ARTIFACTS: false | |
# 删除无用文件以增加编译空间 | |
DELETE_USELESS_FILES: true | |
# 删除早期的 workflow 任务 | |
DELETE_OLD_WORKFLOW: false | |
# Cache 加速编译 | |
CACHE_ACCELERATE: true | |
### 结束 | |
### 请按需求修改以上内容 | |
jobs: | |
Compile: | |
runs-on: ubuntu-20.04 | |
permissions: | |
issues: write | |
pull-requests: write | |
contents: write | |
steps: | |
- name: Maximize Build Space | |
if: env.DELETE_USELESS_FILES == 'true' && !cancelled() | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 5120 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
- name: Checkout | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
- name: Load Custom Variables | |
run: | | |
if [ -n "${{ github.event.inputs.Tempoary_CONFIG }}" ] | |
then | |
if [ -f "$GITHUB_WORKSPACE/Configs/${{ github.event.inputs.Tempoary_CONFIG }}" ] | |
then | |
CONFIG_FILE=${{ github.event.inputs.Tempoary_CONFIG }} | |
else | |
CONFIG_FILE=${{ env.CONFIG_FILE }} | |
fi | |
else | |
CONFIG_FILE=${{ env.CONFIG_FILE }} | |
fi | |
if [ ! -f "$GITHUB_WORKSPACE/Configs/$CONFIG_FILE" ] | |
then | |
echo "CONFIG_FILE: [/Config/$CONFIG_FILE] is not detected ..." | |
exit 1 | |
else | |
echo "CONFIG_FILE: [/Config/$CONFIG_FILE]" | |
echo "CONFIG_FILE=$CONFIG_FILE" >> $GITHUB_ENV | |
fi | |
if [ -n "${{ github.event.inputs.Tempoary_IP }}" ] | |
then | |
echo "IP: [${{ github.event.inputs.Tempoary_IP }}]" | |
echo "Tempoary_IP=${{ github.event.inputs.Tempoary_IP }}" >> $GITHUB_ENV | |
fi | |
if [ -n "${{ github.event.inputs.Tempoary_FLAG }}" ] | |
then | |
echo "FLAG: [${{ github.event.inputs.Tempoary_FLAG }}]" | |
echo "Tempoary_FLAG=${{ github.event.inputs.Tempoary_FLAG }}" >> $GITHUB_ENV | |
fi | |
REPO_URL="https://github.com/$(cut -d \: -f 1 <<< ${{ env.DEFAULT_SOURCE }})" | |
REPO_BRANCH=$(cut -d \: -f 2 <<< ${{ env.DEFAULT_SOURCE }}) | |
echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV | |
echo "REPO_BRANCH=$REPO_BRANCH" >> $GITHUB_ENV | |
echo "Compile_Date=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV | |
echo "Display_Date=$(date +%Y/%m/%d)" >> $GITHUB_ENV | |
- name: Initialize Environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo mkdir -p /workdir | |
sudo chown $USER:$GROUPS /workdir | |
if [ "${{ env.DELETE_USELESS_FILES }}" == true ] | |
then | |
docker rmi $(docker images -q) | |
sudo -E rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /etc/mysql /etc/php | |
sudo -E apt-get -y purge azure-cli* docker* ghc* zulu* hhvm* llvm* firefox* google* dotnet* aspnetcore* powershell* openjdk* adoptopenjdk* mysql* php* mongodb* moby* snap* || true | |
sudo -E apt-mark hold grub-efi-amd64-signed | |
sudo -E apt update | |
sudo -E apt -y purge azure-cli* docker* ghc* zulu* llvm* firefox google* dotnet* powershell* openjdk* mysql* php* mongodb* dotnet* snap* | |
fi | |
sudo -E apt update | |
sudo -E apt -y full-upgrade | |
sudo -E apt-get -y install busybox build-essential cmake asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libreadline-dev libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint ccache curl wget vim nano python2.7 python3 python3-pip python3-ply haveged lrzsz device-tree-compiler scons antlr3 gperf intltool mkisofs rsync | |
sudo -E systemctl daemon-reload | |
sudo -E apt -y autoremove --purge | |
sudo -E apt clean | |
sudo timedatectl set-timezone "Asia/Shanghai" | |
- name: Clone Openwrt Source Code | |
run: | | |
git clone -b $REPO_BRANCH $REPO_URL openwrt | |
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt | |
cd openwrt | |
./scripts/feeds update -a | |
./scripts/feeds install -a | |
- name: Accelerate | |
if: env.CACHE_ACCELERATE == 'true' | |
uses: klever1988/cachewrtbuild@main | |
with: | |
ccache: false | |
toolchain: true | |
skip: true | |
clean: true | |
prefix: ${{ github.workspace }}/openwrt | |
- name: Run Diy Scripts | |
run: | | |
echo "Free space:" | |
df -h | |
chmod +x Scripts/AutoBuild_*.sh | |
cd openwrt | |
if [ "${{ env.CACHE_ACCELERATE }}" == true ] | |
then | |
echo -e "\nCONFIG_DEVEL=y\nCONFIG_CCACHE=y\n" >> $GITHUB_WORKSPACE/Configs/$CONFIG_FILE | |
fi | |
cp $GITHUB_WORKSPACE/Configs/$CONFIG_FILE .config | |
source $GITHUB_WORKSPACE/Scripts/AutoBuild_DiyScript.sh | |
source $GITHUB_WORKSPACE/Scripts/AutoBuild_Function.sh | |
make defconfig | |
Firmware_Diy_Start | |
rm -f .config && cp $GITHUB_WORKSPACE/Configs/$CONFIG_FILE .config | |
Firmware_Diy_Main | |
Firmware_Diy | |
Firmware_Diy_Other | |
- name: Pre-download Libraries | |
run: | | |
cd openwrt | |
./scripts/feeds install -a | |
make defconfig | |
make download -j8 | |
- name: Build OpenWrt | |
run: | | |
cd openwrt | |
make -j4 || make -j1 V=s | |
[ "$?" == 0 ] && echo "Compile_Result=true" >> $GITHUB_ENV || echo "Compile_Result=false" >> $GITHUB_ENV | |
- name: Checkout Firmware | |
if: env.Compile_Result == 'true' && !cancelled() | |
run: | | |
cd openwrt | |
source $GITHUB_WORKSPACE/Scripts/AutoBuild_Function.sh | |
Firmware_Diy_End | |
- name: Upload Firmware to Artifacts | |
uses: actions/upload-artifact@main | |
if: env.UPLOAD_ARTIFACTS == 'true' && env.Compile_Result == 'true' && !cancelled() | |
with: | |
name: ${{ env.CONFIG_FILE }}_firmware_${{ env.Compile_Date }} | |
path: openwrt/bin/Firmware | |
- name: Upload bin to Artifacts | |
uses: actions/upload-artifact@main | |
if: env.UPLOAD_BIN_ARTIFACTS == 'true' && env.Compile_Result == 'true' && !cancelled() | |
with: | |
name: ${{ env.CONFIG_FILE }}_bin_${{ env.Compile_Date }} | |
path: openwrt/bin | |
- name: Upload Firmware to Release | |
uses: svenstaro/upload-release-action@v2 | |
if: env.UPLOAD_RELEASES == 'true' && env.Compile_Result == 'true' && !cancelled() | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: openwrt/bin/Firmware/* | |
file_glob: true | |
tag: AutoUpdate | |
overwrite: true | |
- name: Download Github API | |
if: env.UPLOAD_RELEASES == 'true' && env.Compile_Result == 'true' && !cancelled() | |
run: | | |
wget https://api.github.com/repos/${{github.repository}}/releases/tags/AutoUpdate -O API | |
- name: Upload Github API to Release | |
if: env.UPLOAD_RELEASES == 'true' && env.Compile_Result == 'true' && !cancelled() | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ./API | |
file_glob: true | |
tag: AutoUpdate | |
overwrite: true | |
- name: Delete old Workflow Runs | |
uses: GitRML/delete-workflow-runs@main | |
if: env.DELETE_OLD_WORKFLOW == 'true' && !cancelled() | |
with: | |
retain_days: 1 | |
keep_minimum_runs: 3 |