x86-x64-openwrt #76
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
#================================================= | |
# https://github.com/P3TERX/Actions-OpenWrt | |
# Description: Build OpenWrt using GitHub Actions | |
# Lisence: MIT | |
# Author: P3TERX | |
# Blog: https://p3terx.com | |
#================================================= | |
name: x86-x64-openwrt | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
# schedule: | |
# - cron: 0 17 * * * | |
# watch: | |
# types: started | |
env: | |
REPO_URL: https://github.com/DHDAXCW/lede-rockchip | |
REPO_BRANCH: stable | |
CONFIG_FILE: configs/lean/openwrt.config | |
DIY_SH: scripts/lean.sh | |
UPLOAD_RELEASE: true | |
TZ: Asia/Shanghai | |
jobs: | |
Build: | |
runs-on: self-hosted | |
outputs: | |
OPENWRTROOT: ${{ steps.update.outputs.OPENWRTROOT }} | |
PLATFORM: ${{ steps.compile.outputs.PLATFORM }} | |
TARGET: ${{ steps.compile.outputs.TARGET }} | |
SUBTARGET: ${{ steps.compile.outputs.SUBTARGET }} | |
FIRMWARE: ${{ steps.compile.outputs.FIRMWARE }} | |
GENERATE_STATUS: ${{ steps.generate.outputs.GENERATE_STATUS }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Initialization Environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
echo -e "Total CPU cores\t: $(nproc)" | |
cat /proc/cpuinfo | grep 'model name' | |
free -h | |
uname -a | |
[ -f /proc/version ] && cat /proc/version | |
[ -f /etc/issue.net ] && cat /etc/issue.net | |
[ -f /etc/issue ] && cat /etc/issue | |
ulimit -a | |
- name: Clone Source Code | |
run: | | |
df -hT $PWD | |
git clone $REPO_URL -b $REPO_BRANCH openwrt | |
- name: Update Feeds | |
id: update | |
run: | | |
cd openwrt | |
echo "OPENWRTROOT=$PWD" >> $GITHUB_ENV | |
echo "OPENWRTROOT=$PWD" >> $GITHUB_OUTPUT | |
mkdir customfeeds | |
git clone --depth=1 https://github.com/DHDAXCW/packages customfeeds/packages | |
git clone --depth=1 https://github.com/DHDAXCW/luci customfeeds/luci | |
chmod +x ../scripts/*.sh | |
../scripts/hook-feeds.sh | |
- name: Install Feeds | |
run: | | |
cd $OPENWRTROOT | |
./scripts/feeds install -a | |
- name: Load Custom Configuration | |
run: | | |
[ -e files ] && mv files $OPENWRTROOT/files | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE $OPENWRTROOT/.config | |
chmod +x scripts/*.sh | |
cd $OPENWRTROOT | |
../$DIY_SH | |
../scripts/preset-clash-core.sh amd64 | |
../scripts/preset-terminal-tools.sh | |
make defconfig | |
- name: Download Package | |
id: package | |
run: | | |
cd $OPENWRTROOT | |
cat .config | |
make download -j50 | |
make download -j1 | |
find dl -size -1024c -exec ls -l {} \; | |
find dl -size -1024c -exec rm -f {} \; | |
- name: Compile Packages | |
id: compile | |
run: | | |
cd $OPENWRTROOT | |
echo -e "$(nproc) thread compile" | |
make tools/compile -j$(nproc) | |
make toolchain/compile -j$(nproc) | |
make package/cleanup -j$(nproc) | |
make target/compile -j$(nproc) | |
make -j$(nproc) | |
PLATFORM=$(basename `pwd`) | |
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
echo "PLATFORM=$PLATFORM" >> $GITHUB_OUTPUT | |
cd $OPENWRTROOT/bin/targets/* | |
TARGET=$(basename `pwd`) | |
echo "TARGET=$TARGET" >> $GITHUB_ENV | |
echo "TARGET=$TARGET" >> $GITHUB_OUTPUT | |
cd * | |
SUBTARGET=$(basename `pwd`) | |
echo "SUBTARGET=$SUBTARGET" >> $GITHUB_ENV | |
echo "SUBTARGET=$SUBTARGET" >> $GITHUB_OUTPUT | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
echo "FIRMWARE=$PWD" >> $GITHUB_OUTPUT | |
echo "COMPILE_STATUS=success" >> $GITHUB_OUTPUT | |
- name: Generate Firmware | |
if: steps.compile.outputs.COMPILE_STATUS == 'success' | |
id: generate | |
run: | | |
cd $OPENWRTROOT | |
mkdir -p files/etc/uci-defaults/ | |
mkdir -p files/etc/opkg | |
cp ../scripts/init-settings.sh files/etc/uci-defaults/99-init-settings | |
cp ../configs/opkg/distfeeds-packages-server.conf files/etc/opkg/distfeeds.conf.mirror | |
sed -i "s/http:\/\/192.168.123.100:2345\/snapshots/https:\/\/openwrt.cc\/snapshots\/$(date +"%Y-%m-%d")\/lean/g" files/etc/opkg/distfeeds.conf.mirror | |
make -j$(nproc) | |
pushd bin/targets/x86/64 | |
rm -rf openwrt-x86-64-generic-kernel.bin | |
rm -rf openwrt-x86-64-generic-rootfs.tar.gz | |
rm -rf openwrt-x86-64-generic-squashfs-rootfs.img.gz | |
rm -rf openwrt-x86-64-generic-squashfs-combined-efi.vmdk | |
rm -rf openwrt-x86-64-generic.manifest | |
mv openwrt-x86-64-generic-squashfs-combined-efi.img.gz $(date +"%Y.%m.%d")-openwrt-x86-64-squashfs-efi.img.gz | |
popd | |
make checksum | |
echo "GENERATE_STATUS=success" >> $GITHUB_OUTPUT | |
- name: Generate release tag | |
id: tag | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
echo "release_tag=$(date +"%Y.%m.%d")-Lean" >> $GITHUB_OUTPUT | |
echo "release_date=$(date +"%Y.%m.%d")" >> $GITHUB_OUTPUT | |
touch release.txt | |
echo "后台地址:192.168.11.1" >> release.txt | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload firmware to release | |
uses: softprops/action-gh-release@master | |
if: steps.tag.outputs.status == 'success' && !cancelled() | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
name: ${{ steps.tag.outputs.release_date }} x86-64-openwrt 固件 | |
tag_name: ${{ steps.tag.outputs.release_tag }} | |
body_path: release.txt | |
files: ${{ env.FIRMWARE }}/* | |
- name: Delete workflow runs | |
uses: Mattraks/delete-workflow-runs@v2 | |
with: | |
retain_days: 1 | |
keep_minimum_runs: 1 | |
- name: Remove old Releases | |
uses: dev-drprasad/[email protected] | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
with: | |
keep_latest: 20 | |
delete_tags: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Delete Artifacts | |
uses: geekyeggo/delete-artifact@v4 | |
with: | |
name: | | |
bin-archive |