Skip to content

OpenWrt-R7800-Lean #619

OpenWrt-R7800-Lean

OpenWrt-R7800-Lean #619

#=================================================
# https://github.com/ClayMoreBoy/OpenWrt-Actions-R7800
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: ClayMoreBoy
# Github: https://github.com/ClayMoreBoy
#=================================================
name: OpenWrt-R7800-Lean
on:
# 定时触发
schedule:
- cron: 0 1 * * *
# Release 发布触发
# release:
# types: [published]
# 点赞触发
# watch:
# types: [started]
# 编辑触发
push:
branches:
- master
env:
#
REPO_URL: https://github.com/coolsnowwolf/lede
# 分支
REPO_BRANCH: master
# PassWall插件包
EX_PKG: false
# 脚本
DIY_SH: OpenWrt-R7800-Lean.sh
# 开启SSH连接
SSH_ACTIONS: false
# 上传分支
UPLOAD_BRANCH: true
# 分支
BRANCH: R7800-Lean
# Github 用户名
GITHUB_USER_NAME: ClayMoreBoy
# Github 邮箱
GITHUB_USER_EMAIL: ${{ secrets.EMAIL }}
# Github
GITHUB: github.com/ClayMoreBoy/OpenWrt-Actions-R7800.git
# 上传固件
UPLOAD_FIRMWARE: true
# 上传到奶牛快传
UPLOAD_COWTRANSFER: true
# 创建+上传发布
CREATE_RELEASE: true
# 编译者
BUILD_USER: ClayMoreBoy
# 微信通知
SEND_WECHAT_MSG: false
jobs:
build:
if: github.event.repository.owner.id == github.event.sender.id
runs-on: ubuntu-latest
steps:
# 校验本地文件
- name: Checkout
uses: actions/checkout@main
# 初始化编译环境
# sudo -E apt-get install -y build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-8 gcc++-8 gcc-8-multilib g++-8-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 python python3 python-pip python3-pip python-ply python3-ply haveged lrzsz device-tree-compiler scons antlr3 gperf ecj fastjar re2c
- name: Initialization environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
docker rmi $(docker images -q)
sudo -E rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo -E apt-get -y purge azure-cli ghc* zulu* hhvm llvm* firefox google* dotnet* powershell openjdk* mysql* php* android* mssql-tools msodbcsql17
sudo -E apt-get update -y
sudo -E apt-get full-upgrade -y
sudo -E apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler antlr3 gperf swig
sudo -E ln -sf /usr/bin/gcc-8 /usr/bin/gcc
sudo -E ln -sf /usr/bin/g++-8 /usr/bin/g++
sudo -E ln -sf /usr/bin/gcc-ar-8 /usr/bin/gcc-ar
sudo -E ln -sf /usr/bin/gcc-nm-8 /usr/bin/gcc-nm
sudo -E ln -sf /usr/bin/gcc-ranlib-8 /usr/bin/gcc-ranlib
sudo -E apt-get autoremove -y --purge
sudo -E apt-get clean -y
sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php
# 克隆源代码 By bobotoy
- name: Clone source code
run: |
git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt
cd openwrt
useVersionInfo=$(git show -s --date=short --format="Author: %an<br/>Date: %cd<br/>Commit: %s")
echo "useVersionInfo=$useVersionInfo" >> $GITHUB_ENV
echo "DATE=$(TZ=UTC-8 date "+%Y%m%d")" >> $GITHUB_ENV
echo "RELEASE_DATE=$(TZ=UTC-8 date "+%Y-%m-%d")" >> $GITHUB_ENV
# 增加 PassWall 插件源 By rohu168
- name: Update and install feeds passwall
if: env.EX_PKG == 'true'
run: |
chmod +x ssr-plus_passwall.sh && cp ssr-plus_passwall.sh ./openwrt && cd openwrt && ./ssr-plus_passwall.sh
# 更新源 sed -i 's/\"#src-git\"/\"src-git\"/g' ./feeds.conf.default
- name: Update Feeds
if: env.REPO_URL != 'https://github.com/coolsnowwolf/lede'
working-directory: ./openwrt
run: |
./scripts/feeds clean
./scripts/feeds update -a
# 安装源
- name: Install Feeds
if: env.REPO_URL != 'https://github.com/coolsnowwolf/lede'
working-directory: ./openwrt
run: ./scripts/feeds install -a
# 加载自定义配置文件
- name: Load Custom Configuration
run: |
[ -e files ] && mv files openwrt/files
chmod +x $DIY_SH
cd openwrt
../$DIY_SH
make defconfig
# SSH连接
# - name: SSH connection to Actions
# uses: P3TERX/debugger-action@master
# if: env.SSH_ACTIONS == 'true'
# 下载软件包
- name: Make Download
working-directory: ./openwrt
id: package
run: |
make download -j8
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
# 编译固件
- name: Compile Firmware
working-directory: ./openwrt
id: compile
run: |
echo -e "$(nproc) thread compile"
make -j$(nproc) || make -j1 V=s
echo "::set-output name=status::success"
# 上传到分支 By yfdoor
- name: Upload Branch
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
cd openwrt/bin
git init
git config user.name $GITHUB_USER_NAME
git config user.email $GITHUB_USER_EMAIL
git add .
git commit -m "Update OpenWrt_"$BRANCH
git push --force --quiet https://${{ secrets.RELEASE_TOKEN }}@$GITHUB HEAD:OpenWrt-$BRANCH
# 整理文件
- name: Organize Files
id: organize
if: steps.compile.outputs.status == 'success' && env.UPLOAD_FIRMWARE == 'true' && !cancelled()
run: |
mv openwrt/.config openwrt/bin/targets/*/*
cd openwrt/bin/targets/*/*
rm -rf packages
rm -rf *uImage
rm -rf *.manifest
rm -rf *.seed
rm -rf *.buildinfo
echo "FIRMWARE=$PWD" >> $GITHUB_ENV
echo "::set-output name=status::success"
# 上传固件
#- name: Upload Firmware Directory
# uses: actions/upload-artifact@main
# if: steps.organize.outputs.status == 'success' && !cancelled()
# with:
# name: ${{ env.BUILD_USER }}-${{ env.DATE }}-OpenWrt-${{ env.BRANCH }}-Firmware
# path: ${{ env.FIRMWARE }}
- name: 删除旧的Artifacts
uses: c-hive/gha-remove-artifacts@v1.2.0
with:
age: '1 day'
skip-recent: 3
# 上传固件到奶牛快传
- name: Upload Firmware To CowTransfer
if: steps.organize.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled()
run: |
curl -fsSL git.io/file-transfer | sh
./transfer cow --block 2621440 -s -p 99 -t 3 --hash --no-progress ${FIRMWARE} 2>&1 | tee cowtransfer.log
echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)"
echo "::set-env name=COWTRANSFER_URL::$(cat cowtransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_ENV
- name: Upload firmware to WeTransfer
if: steps.organize.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled()
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-env name=WETRANSFER_URL::$(cat wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_ENV
# 生成标签
- name: Generate Tag
id: tag
if: steps.compile.outputs.status == 'success' && env.CREATE_RELEASE == 'true' && !cancelled()
run: |
echo "RELEASE_TAG=$(TZ=UTC-8 date +"%Y-%m-%d")" >> $GITHUB_ENV
echo "::set-output name=status::success"
# 发行固件
- name: Upload Firmware To Release
uses: softprops/action-gh-release@v1
if: steps.tag.outputs.status == 'success' && !cancelled()
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
name: Netgear ${{ env.BRANCH }} 🚀 | 自动编译 / ${{ env.RELEASE_TAG }}
tag_name: ${{ env.RELEASE_TAG }}
body: |
1、本固件为自动编译
2、发行版中只提供完整的固件
3、需要单独IPK请到分支下载
4、固件源码:${{ env.REPO_URL }}
-- Build by ${{ env.BUILD_USER }} @ with Github Action on ${{ env.RELEASE_TAG }}
🚀 Auto build | 自动编译
🔗 国内[Cowtransfer | 奶牛快传](${{ env.COWTRANSFER_URL }})
🔗 国外[WeTransfer](${{ env.WETRANSFER_URL }})
当前使用版本:(编译前的最后一次大雕源码更新记录)
${{ env.useVersionInfo }}
${{ github.event.commits[0].message }}
files: ${{ env.FIRMWARE }}/*
- name: 删除旧的Releases
uses: dev-drprasad/delete-older-releases@master
with:
keep_latest: 3
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 微信通知
- name: WeChat Notification
if: steps.compile.outputs.status == 'success' && env.SEND_WECHAT_MSG == 'true' && !cancelled()
uses: emon100/Action-Serverchan@master
with:
SCKEY: ${{ secrets.SCKEY }}
text: ${{ env.BRANCH }}固件编译完成!
desp: 源码:${{ env.REPO_URL }} 分支:${{ env.REPO_BRANCH }}