Skip to content

Build MI-R4A Padavan-3.4 #55

Build MI-R4A Padavan-3.4

Build MI-R4A Padavan-3.4 #55

# 注意:修改 default: 中的型号为你需要编译的型号,注意名称要与configs/templates/目录下的名字相同
name: Build MI-R4A Padavan-3.4
on:
workflow_dispatch:
inputs:
production:
description: 设置编译的固件型号,空格分隔.
default: "MI-R4A"
required: false
release:
description: "是否需要发布到Release? (不发布也可以到Artifacts下载)"
default: 'yes'
required: false
env:
MHZ: 1200 # CPU超频频率 必须为20的倍数
TNAME: ${{ github.event.inputs.production }}
REPOSITORY_URL: https://github.com/vipshmily/Padavan-3.4-KVR.git
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.event.inputs.production }}-3.4
- uses: actions/setup-go@main
with:
go-version: '1.23'
check-latest: true
cache: false
- uses: actions/setup-node@main
with:
node-version: 22
check-latest: true
- name: Generate version number
run: |
whoami
id
echo input parameters received:
echo $TNAME
echo ${{ github.event.inputs.release }}
echo
echo 当前目录:$(pwd)
# 版本号,用日期
VERSION=$(TZ='Asia/Shanghai' date +%Y.%m.%d-%H%M)
echo "VERSION=$VERSION" >> $GITHUB_ENV
# $GITHUB_ENV变量必须要在下一个流程才生效
echo "DIR=/opt/rt-n56u" >> $GITHUB_ENV
val1=$TNAME
#val2=$(echo $val1 | sed 's/ /-/')
echo "NAME=${val1}_3.4_$VERSION" >> $GITHUB_ENV
echo "TAG=v$VERSION" >> $GITHUB_ENV
ip addr
- name: Create a directory
run: |
echo ${{ env.NAME }}
echo ${{ env.TAG }}
sudo mkdir -m 777 -p ${{ env.DIR }}
sudo mkdir -m 777 -p /opt/images/
echo 开始编译时间 >> /opt/images/readme.txt
TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M:%S' >> /opt/images/readme.txt
- name: Prepare environment
run: |
sudo apt update
sudo apt install libtool-bin gperf python3-docutils autopoint gettext ccache
- name: Clone source code
run: |
git clone --depth=1 $REPOSITORY_URL ${{ env.DIR }}
cd ${{ env.DIR }}
sed -i '/cp -f/d' Makefile
mkdir -p /opt/images/
- name: Build Firmware
run: |
if [ -f public/Xray.Makefile ] ; then
mv -f public/Xray.Makefile ${{ env.DIR }}/trunk/user/xray/Makefile
echo "Makefile file copy success"
else
exit 1
fi
if [ -f public/adguardhome.Makefile ] ; then
mv -f public/adguardhome.Makefile ${{ env.DIR }}/trunk/user/adguardhome/Makefile
echo "Makefile file copy success"
else
exit 2
fi
cp -f public/MI-R4A.config ${{ env.DIR }}/trunk/configs/templates
cp -f public/adguardhome.sh ${{ env.DIR }}/trunk/user/adguardhome
cd ${{ env.DIR }}/trunk
echo "CPU超频到$MHZ"mhz
echo "修改CPU频率"
clock=`echo "obase=16 ; ibase=10 ; (((($MHZ/20)-1)*16+2))" | bc`
echo "16进制$clock"
sed -i "554,555s:0xff:0x7ff:g" ${{ env.DIR }}/trunk/linux-3.4.x/arch/mips/rt2880/init.c
sed -i "554,556s:0xc2:0x$clock:g" ${{ env.DIR }}/trunk/linux-3.4.x/arch/mips/rt2880/init.c
for m in $TNAME;
do
if [ ! -f configs/templates/$m.config ] ; then
echo "configs/templates/$m.config not found "
exit 0
fi
cp -f configs/templates/$m.config .config
sed -i 's/CONFIG_FIRMWARE_INCLUDE_OPENSSL_EXE=n/CONFIG_FIRMWARE_INCLUDE_OPENSSL_EXE=y/g' .config
############################################################################################
#因不同型号配置功能不一样,所以先把配置项删除,如果你自己要添加其他的,也要写上删除这一条,切记!!!
############################################################################################
sed -i '/CONFIG_FIRMWARE_INCLUDE_MENTOHUST/d' .config #删除配置项MENTOHUST
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_SERVER/d' .config #删除配置项SOFTETHERVPN
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CLIENT/d' .config #删除配置项SOFTETHERVPN
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CMD/d' .config #删除配置项SOFTETHERVPN
sed -i '/CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT/d' .config #删除配置项SCUTCLIENT
sed -i '/CONFIG_FIRMWARE_INCLUDE_SHADOWSOCKS/d' .config #删除配置项SS plus+
sed -i '/CONFIG_FIRMWARE_INCLUDE_SSSERVER/d' .config #删除配置项SS server
sed -i '/CONFIG_FIRMWARE_INCLUDE_DNSFORWARDER/d' .config #删除配置项DNSFORWARDER
sed -i '/CONFIG_FIRMWARE_INCLUDE_ADBYBY/d' .config #删除配置项adbyby plus+
sed -i '/CONFIG_FIRMWARE_INCLUDE_FRPC/d' .config #删除配置项FRPC
sed -i '/CONFIG_FIRMWARE_INCLUDE_FRPS/d' .config #删除配置项FRPS
sed -i '/CONFIG_FIRMWARE_INCLUDE_TUNSAFE/d' .config #删除配置项TUNSAFE
sed -i '/CONFIG_FIRMWARE_INCLUDE_ALIDDNS/d' .config #删除配置项阿里DDNS
sed -i '/CONFIG_FIRMWARE_INCLUDE_SMARTDNS/d' .config #删除配置项SMARTDNS
sed -i '/CONFIG_FIRMWARE_INCLUDE_SRELAY/d' .config #删除配置项SRELAY
sed -i '/CONFIG_FIRMWARE_INCLUDE_KUMASOCKS/d' .config #删除配置项KUMASOCKS
sed -i '/CONFIG_FIRMWARE_CPU_900MHZ/d' .config #删除配置项超频900MHz
sed -i '/CONFIG_FIRMWARE_INCLUDE_SSOBFS/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_V2RAY/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_XRAY/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_TROJAN/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_KOOLPROXY/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_SMARTDNSBIN/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_ADGUARDHOME/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_CADDY/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_CADDYBIN/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_WYY/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_WYYBIN/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_ZEROTIER/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_DDNSTO/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_WIREGUARD/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_ALDRIVER/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_MSD_LITE/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_IPERF3/d' .config
sed -i '/CONFIG_FIRMWARE_INCLUDE_NAPT66/d' .config
sed -i 's/CONFIG_FIRMWARE_INCLUDE_OPENSSL_EXE=n/CONFIG_FIRMWARE_INCLUDE_OPENSSL_EXE=y/g' .config
######################################################################
#以下选项是定义你需要的功能(y=集成,n=忽略),重新写入到.config文件
######################################################################
echo "CONFIG_FIRMWARE_INCLUDE_MENTOHUST=n" >> .config #MENTOHUST
echo "CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT=n" >> .config #SCUTCLIENT
echo "CONFIG_FIRMWARE_INCLUDE_SSSERVER=n" >> .config #SS server
echo "CONFIG_FIRMWARE_INCLUDE_DNSFORWARDER=n" >> .config #DNSFORWARDER
echo "CONFIG_FIRMWARE_INCLUDE_TUNSAFE=n" >> .config #TUNSAFE
echo "CONFIG_FIRMWARE_INCLUDE_SRELAY=n" >> .config #可以不集成
echo "CONFIG_FIRMWARE_CPU_900MHZ=y" >> .config #开启超频,仅MT7621可用
##科学上网##
echo "CONFIG_FIRMWARE_INCLUDE_SHADOWSOCKS=y" >> .config #科学上网插件,选择n后全部有关插件都不集成
echo "CONFIG_FIRMWARE_INCLUDE_SSOBFS=n" >> .config # simple-obfs混淆插件
echo "CONFIG_FIRMWARE_INCLUDE_V2RAY=n" >> .config #集成v2ray执行文件(3.6M左右)
echo "CONFIG_FIRMWARE_INCLUDE_XRAY=y" >> .config #集成xray执行文件(3.6M左右)
echo "CONFIG_FIRMWARE_INCLUDE_TROJAN=y" >> .config #集成trojan执行文件(1.1M左右)
echo "CONFIG_FIRMWARE_INCLUDE_KUMASOCKS=n" >> .config #socks5服务端
##科学上网##
##广告管理##
echo "CONFIG_FIRMWARE_INCLUDE_ADBYBY=y" >> .config #adbyby plus+
echo "CONFIG_FIRMWARE_INCLUDE_KOOLPROXY=n" >> .config #KP广告过滤
##广告管理##
##DNS服务##
echo "CONFIG_FIRMWARE_INCLUDE_SMARTDNS=y" >> .config #smartdns
echo "CONFIG_FIRMWARE_INCLUDE_SMARTDNSBIN=n" >> .config #smartdns二进制文件
echo "CONFIG_FIRMWARE_INCLUDE_ADGUARDHOME=y" >> .config #adg DNS去AD
##DNS服务##
##文件管理##
echo "CONFIG_FIRMWARE_INCLUDE_CADDY=n" >> .config #在线文件管理服务
echo "CONFIG_FIRMWARE_INCLUDE_CADDYBIN=n" >> .config #集成caddu执行文件,此文件有13M,请注意固件大小。如果不集成,会从网上下载下来执行,不影响正常使用
##文件管理##
##音乐解锁##
echo "CONFIG_FIRMWARE_INCLUDE_WYY=n" >> .config #网易云解锁
echo "CONFIG_FIRMWARE_INCLUDE_WYYBIN=n" >> .config #网易云解锁GO版本执行文件(4M多)注意固件超大小,不集成会自动下载
##音乐解锁##
##内网穿透服务##
echo "CONFIG_FIRMWARE_INCLUDE_ZEROTIER=y" >> .config #zerotier ~1.3M
echo "CONFIG_FIRMWARE_INCLUDE_ALIDDNS=n" >> .config #阿里DDNS
echo "CONFIG_FIRMWARE_INCLUDE_FRPC=n" >> .config #内网穿透FRPC
echo "CONFIG_FIRMWARE_INCLUDE_FRPS=n" >> .config #内网穿透FRPS
echo "CONFIG_FIRMWARE_INCLUDE_DDNSTO=n" >> .config #ddnsto ~0.5M
echo "CONFIG_FIRMWARE_INCLUDE_WIREGUARD=n" >>.config #wireguard 10k
##内网穿透服务##
echo "CONFIG_FIRMWARE_INCLUDE_ALDRIVER=n" >> .config #ALDRIVER ~3m
echo "CONFIG_FIRMWARE_INCLUDE_MSD_LITE=y" >> .config #MSD_LITE
echo "CONFIG_FIRMWARE_INCLUDE_IPERF3=y" >> .config #IPERF3
echo "CONFIG_FIRMWARE_INCLUDE_NAPT66=y" >> .config #NAPT66
#########################################################################################
# 自定义添加其它功能请参考源码configs/templates/目录下的config文件。按照上面的格式添加即可
# 格式如下:
# sed -i '/自定义项/d' .config
# echo "自定义项=y" >> .config
#########################################################################################
cd ${{ env.DIR }}
sudo make $m
cd ${{ env.DIR }}/trunk
sudo mv -f images/*.trx /opt/images/
done
- name: Collect information
if: true
run: |
cd /opt/images
#记录一个版本号
echo 完成编译时间 >> /opt/images/readme.txt
TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M:%S' >> /opt/images/readme.txt
echo >> /opt/images/readme.txt
echo 编译版本 >> /opt/images/readme.txt
pushd ${{ env.DIR }}
git ls-remote --get-url origin >> /opt/images/readme.txt
git log -1 >> /opt/images/readme.txt
popd
echo >> /opt/images/readme.txt
echo md5校验值 >> /opt/images/readme.txt
cd /opt/images
#为固件文件名加上日期
for i in *.trx
do
#echo org $i
mv -v "$i" "${i%.*}-${{ env.VERSION }}.trx"
done
#测试
md5sum *.trx >> /opt/images/readme.txt || echo
ls -l
- name : Upload images to Artifact
uses: actions/upload-artifact@main
if: true
with:
name: ${{ env.NAME }}
path: /opt/images
- name: Upload images to Releases
if: ${{ github.event.inputs.release == 'yes' }}
uses: softprops/action-gh-release@master
with:
name: ${{ env.NAME }}
tag_name: ${{ env.TAG }}
body_path: /opt/images/readme.txt
draft: false
prerelease: false
files: /opt/images/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}