This repository has been archived by the owner on Feb 19, 2024. It is now read-only.
RaspberryPi3 OpenWrt #567
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
name: RaspberryPi3 OpenWrt | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: 0 17 * * * | |
env: | |
REPO_URL: https://github.com/coolsnowwolf/lede | |
REPO_BRANCH: master | |
CONFIG_FILE: configs/rpi3.config | |
EXTRA_CONFIG: configs/extra.config | |
DIY_SCRIPT: diy-script.sh | |
CLASH_KERNEL: arm64 | |
CACHE_TOOLCHAIN: true | |
UPLOAD_BIN_DIR: false | |
FIRMWARE_RELEASE: true | |
FIRMWARE_TAG: RaspberryPi3 | |
TZ: Asia/Shanghai | |
jobs: | |
Build: | |
runs-on: ubuntu-22.04 | |
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" | |
echo "--------------------------硬盘信息--------------------------" | |
echo "硬盘数量: $(ls /dev/sd* | grep -v [1-9] | wc -l)" && df -hT | |
- name: Initialization Environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
docker rmi $(docker images -q) | |
sudo rm -rf /usr/share/dotnet /etc/apt/sources.list.d /usr/local/lib/android $AGENT_TOOLSDIRECTORY | |
sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true | |
sudo -E apt-get -y update | |
sudo -E apt-get -y install $(curl -fsSL is.gd/depends_ubuntu_2204) | |
sudo -E systemctl daemon-reload | |
sudo -E apt-get -y autoremove --purge | |
sudo -E apt-get -y clean | |
sudo timedatectl set-timezone "$TZ" | |
- name: Combine Disks | |
uses: easimon/maximize-build-space@master | |
with: | |
swap-size-mb: 1024 | |
temp-reserve-mb: 100 | |
root-reserve-mb: 1024 | |
- name: Checkout | |
uses: actions/checkout@main | |
- name: Clone Source Code | |
run: | | |
df -hT $GITHUB_WORKSPACE | |
git clone $REPO_URL -b $REPO_BRANCH openwrt | |
cd openwrt | |
echo "OPENWRT_PATH=$PWD" >> $GITHUB_ENV | |
COMMIT_AUTHOR=$(git show -s --date=short --format="作者: %an") | |
echo "COMMIT_AUTHOR=$COMMIT_AUTHOR" >> $GITHUB_ENV | |
COMMIT_DATE=$(git show -s --date=short --format="时间: %ci") | |
echo "COMMIT_DATE=$COMMIT_DATE" >> $GITHUB_ENV | |
COMMIT_MESSAGE=$(git show -s --date=short --format="内容: %s") | |
echo "COMMIT_MESSAGE=$COMMIT_MESSAGE" >> $GITHUB_ENV | |
COMMIT_HASH=$(git show -s --date=short --format="hash: %H") | |
echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV | |
- name: Generate Variables | |
run: | | |
cp $CONFIG_FILE $OPENWRT_PATH/.config | |
cd $OPENWRT_PATH | |
make defconfig > /dev/null 2>&1 | |
SOURCE_REPO="$(echo $REPO_URL | awk -F '/' '{print $(NF)}')" | |
echo "SOURCE_REPO=$SOURCE_REPO" >> $GITHUB_ENV | |
DEVICE_TARGET=$(cat .config | grep CONFIG_TARGET_BOARD | awk -F '"' '{print $2}') | |
echo "DEVICE_TARGET=$DEVICE_TARGET" >> $GITHUB_ENV | |
DEVICE_SUBTARGET=$(cat .config | grep CONFIG_TARGET_SUBTARGET | awk -F '"' '{print $2}') | |
echo "DEVICE_SUBTARGET=$DEVICE_SUBTARGET" >> $GITHUB_ENV | |
- name: Cache Toolchain | |
if: env.CACHE_TOOLCHAIN == 'true' | |
uses: HiGarfield/cachewrtbuild@main | |
with: | |
ccache: false | |
mixkey: ${{ env.SOURCE_REPO }}-${{ env.REPO_BRANCH }}-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }} | |
prefix: ${{ env.OPENWRT_PATH }} | |
- name: Install Feeds | |
run: | | |
cd $OPENWRT_PATH | |
./scripts/feeds update -a | |
./scripts/feeds install -a | |
- name: Load Custom Configuration | |
run: | | |
[ -e files ] && mv files $OPENWRT_PATH/files | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE $OPENWRT_PATH/.config | |
cat $EXTRA_CONFIG >> $OPENWRT_PATH/.config | |
chmod +x $GITHUB_WORKSPACE/scripts/*.sh | |
chmod +x $DIY_SCRIPT | |
cd $OPENWRT_PATH | |
$GITHUB_WORKSPACE/$DIY_SCRIPT | |
$GITHUB_WORKSPACE/scripts/preset-clash-core.sh $CLASH_KERNEL | |
$GITHUB_WORKSPACE/scripts/preset-terminal-tools.sh | |
$GITHUB_WORKSPACE/scripts/preset-adguard-core.sh $CLASH_KERNEL | |
- name: Download DL Package | |
run: | | |
cd $OPENWRT_PATH | |
make defconfig | |
make download -j8 | |
find dl -size -1024c -exec ls -l {} \; | |
find dl -size -1024c -exec rm -f {} \; | |
- name: Compile Firmware | |
id: compile | |
run: | | |
cd $OPENWRT_PATH | |
mkdir -p files/etc/uci-defaults | |
cp $GITHUB_WORKSPACE/scripts/init-settings.sh files/etc/uci-defaults/99-init-settings | |
echo -e "$(nproc) thread compile" | |
make -j$(nproc) || make -j1 || make -j1 V=s | |
echo "status=success" >> $GITHUB_OUTPUT | |
echo "DATE=$(date +"%Y-%m-%d %H:%M:%S")" >> $GITHUB_ENV | |
echo "FILE_DATE=$(date +"%Y.%m.%d")" >> $GITHUB_ENV | |
- name: Check Space Usage | |
if: (!cancelled()) | |
run: df -hT | |
- name: Upload Bin Directory | |
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ env.SOURCE_REPO }}-bin-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }}-${{ env.FILE_DATE }} | |
path: ${{ env.OPENWRT_PATH }}/bin | |
- name: Organize Files | |
if: steps.compile.outputs.status == 'success' | |
run: | | |
cd $OPENWRT_PATH/bin/targets/*/* | |
cat sha256sums | |
cp $OPENWRT_PATH/.config build.config | |
mv -f $OPENWRT_PATH/bin/packages/*/*/*.ipk packages | |
tar -zcf Packages.tar.gz packages | |
rm -rf packages feeds.buildinfo version.buildinfo | |
echo "KERNEL=$(cat *.manifest | grep ^kernel | cut -d- -f2 | tr -d ' ')" >> $GITHUB_ENV | |
echo "FIRMWARE_PATH=$PWD" >> $GITHUB_ENV | |
- name: Upload Firmware To Artifact | |
if: steps.compile.outputs.status == 'success' && env.FIRMWARE_RELEASE != 'true' | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ env.SOURCE_REPO }}-firmware-${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }}-${{ env.FILE_DATE }} | |
path: ${{ env.FIRMWARE_PATH }} | |
- name: Upload Firmware To Release | |
if: steps.compile.outputs.status == 'success' && env.FIRMWARE_RELEASE == 'true' | |
uses: ncipollo/release-action@v1 | |
with: | |
name: R${{ env.DATE }} for ${{ env.FIRMWARE_TAG }} | |
allowUpdates: true | |
tag: ${{ env.FIRMWARE_TAG }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
artifacts: ${{ env.FIRMWARE_PATH }}/* | |
body: | | |
**This is OpenWrt Firmware for ${{ env.FIRMWARE_TAG }}** | |
### 📒 固件信息 | |
- 💻 平台架构: ${{ env.DEVICE_TARGET }}-${{ env.DEVICE_SUBTARGET }} (树莓派3/3B) | |
- ⚽ 固件源码: ${{ env.REPO_URL }} | |
- 💝 源码分支: ${{ env.REPO_BRANCH }} | |
- 🚀 内核版本: ${{ env.KERNEL }} | |
- 🌐 默认地址: 192.168.1.1 | |
- 🔑 默认密码: password | |
### 🧊 固件版本 | |
- 固件编译前最后一次➦[主源码](${{ env.REPO_URL }})更新记录 | |
- ${{ env.COMMIT_AUTHOR }} | |
- ${{ env.COMMIT_DATE }} | |
- ${{ env.COMMIT_MESSAGE }} | |
- ${{ env.COMMIT_HASH }} |