Lie 2102 #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: Lie 2102 | |
### 以下内容请保持不变 ( 请修改下方的 [环境变量设置] ) | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
Tempoary_IP: | |
description: '固件 IP 地址 [可选]' | |
default: '' | |
Tempoary_CONFIG: | |
description: '配置文件 [可选]' | |
default: '' | |
Tempoary_FLAG: | |
description: '固件标签 [可选]' | |
default: '' | |
### 控制部分结束 ( 以上内容请保持不变 ) | |
#push: | |
# branches: | |
# - master | |
#schedule: | |
# - cron: 0 8 * * 5 | |
#watch: | |
# types: [started] | |
### 环境变量设置 | |
env: | |
# 编译时调用的 [.config] 文件名称 | |
CONFIG_FILE: xiaomi_redmi-router-ac2100 | |
# 源码仓库:分支 | |
DEFAULT_SOURCE: Lienol/openwrt:21.02 | |
# 上传固件到 Github Releases | |
UPLOAD_RELEASES: false | |
# 上传固件到 Github Artifacts | |
UPLOAD_ARTIFACTS: false | |
# 上传 bin 文件夹到 Github Artifacts | |
UPLOAD_BIN_ARTIFACTS: true | |
# 删除无用文件以增加编译空间 | |
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 -E apt-get update | |
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 timedatectl set-timezone "Asia/Shanghai" | |
sudo mkdir -p /workdir | |
sudo chown $USER:$GROUPS /workdir | |
if [ "${{ env.DELETE_USELESS_FILES }}" == true ] | |
then | |
docker rmi $(docker images -q) | |
sudo rm -rf /usr/share/dotnet /etc/mysql /etc/php | |
sudo -E apt-get -y autoremove --purge | |
sudo -E apt-get clean | |
fi | |
- 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_Before | |
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 |