Skip to content

NanoPi-R5S-R5C-6.x-完整版 #49

NanoPi-R5S-R5C-6.x-完整版

NanoPi-R5S-R5C-6.x-完整版 #49

#=================================================
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: P3TERX
# Blog: https://p3terx.com
#=================================================
name: NanoPi-R5S-R5C-6.x-完整版
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/full.config
DIY_SH: scripts/full.sh
KMODS_IN_FIRMWARE: true
UPLOAD_WETRANSFER: false #上传到WeTransfer
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@v3
- 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
cd 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 arm64
../scripts/preset-terminal-tools.sh
make defconfig
- name: Download Package
id: package
run: |
cd $OPENWRTROOT
cat .config
make download -j8
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 tools/compile -j$(nproc)
make toolchain/compile -j$(nproc) || make toolchain/compile -j$(nproc)
make target/compile -j$(nproc) || make target/compile -j$(nproc) IGNORE_ERRORS=1
make diffconfig
make package/compile -j$(nproc) IGNORE_ERRORS=1 || make package/compile -j$(nproc) IGNORE_ERRORS=1
make package/index
cd $OPENWRTROOT/bin/packages/*
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 configs/opkg
sed -i "s/subtarget/$SUBTARGET/g" distfeeds*.conf
sed -i "s/target\//$TARGET\//g" distfeeds*.conf
sed -i "s/platform/$PLATFORM/g" distfeeds*.conf
cd $OPENWRTROOT
mkdir -p files/etc/uci-defaults/
cp ../scripts/init-settings.sh files/etc/uci-defaults/99-init-settings
mkdir -p files/etc/opkg
cp ../configs/opkg/distfeeds-packages-server.conf files/etc/opkg/distfeeds.conf.server
mkdir -p files/etc/opkg/keys
cp ../configs/opkg/1035ac73cc4e59e3 files/etc/opkg/keys/1035ac73cc4e59e3
if "$KMODS_IN_FIRMWARE" = 'true'
then
mkdir -p files/www/snapshots
cp -r bin/targets files/www/snapshots
cp ../configs/opkg/distfeeds-18.06-local.conf files/etc/opkg/distfeeds.conf
else
cp ../configs/opkg/distfeeds-18.06-remote.conf files/etc/opkg/distfeeds.conf
fi
cp files/etc/opkg/distfeeds.conf.server 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 package/install -j$(nproc) || make package/install -j1 V=s
make target/install -j$(nproc) || make target/install -j1 V=s
pushd bin/targets/rockchip/armv8
kernelv=`cat openwrt-rockchip-armv8.manifest | grep 'kernel - ' | awk -F '[- ]' '{print $4}'`
echo "kernel_version=$kernelv" >> $GITHUB_OUTPUT
rm -rf openwrt-rockchip-armv8.manifest
rm -rf openwrt-rockchip-armv8-rootfs.tar.gz
rm -rf config.buildinfo
rm -rf packages-server.zip
mv openwrt-rockchip-armv8-friendlyarm_nanopi-r5s-ext4-sysupgrade.img.gz full-friendlyarm_nanopi-r5s-ext4-sysupgrade.img.gz
mv openwrt-rockchip-armv8-friendlyarm_nanopi-r5c-ext4-sysupgrade.img.gz full-friendlyarm_nanopi-r5c-ext4-sysupgrade.img.gz
mv openwrt-rockchip-armv8-friendlyarm_nanopi-r5s-squashfs-sysupgrade.img.gz full-friendlyarm_nanopi-r5s-squashfs-sysupgrade.img.gz
mv openwrt-rockchip-armv8-friendlyarm_nanopi-r5c-squashfs-sysupgrade.img.gz full-friendlyarm_nanopi-r5c-squashfs-sysupgrade.img.gz
popd
make checksum
mv bin/targets/rockchip/armv8/sha256sums bin/targets/rockchip/armv8/full-sha256sums
echo "GENERATE_STATUS=success" >> $GITHUB_OUTPUT
- name: Upload firmware to WeTransfer
id: wetransfer
if: steps.generate.outputs.GENERATE_STATUS == 'success' && env.UPLOAD_WETRANSFER == 'true' && !cancelled() && !failure()
run: |
curl -fsSL git.io/file-transfer | sh
./transfer wet -s -p 16 --no-progress ${FIRMWARE} 2>&1 | tee wetransfer.log
echo "::warning file=wetransfer.com::$(cat wetransfer.log | grep https)"
echo "::set-output name=url::$(cat wetransfer.log | grep https | cut -f3 -d" ")"
- 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 "## 🗒️ 固件信息" >> release.txt
[ $UPLOAD_WETRANSFER = true ] && echo "- 🚀 [点我快速下载](${{ steps.wetransfer.outputs.url }})" >> release.txt
echo "
- 🔗 后台地址:192.168.10.1
- 🔑 后台密码:password
## 🍻 固件类型
- 完整版:full
- 精简版:simplify" >> release.txt
echo "status=success" >> $GITHUB_OUTPUT
- name: Upload firmware to release
uses: softprops/action-gh-release@v1
if: steps.tag.outputs.status == 'success' && !cancelled() && !failure()
env:
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
with:
name: 📦‍ 固件下载 | NanoPi-R5S-R5C-linux-${{ steps.generate.outputs.kernel_version }} | ${{ steps.tag.outputs.release_date }}
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: 5
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
- name: Delete Artifacts
uses: geekyeggo/delete-artifact@v2
with:
name: |
bin-archive