Build MeIsReallyBa's Kernal4.4 Padavan #1
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: Build MeIsReallyBa's Kernal4.4 Padavan | |
on: | |
workflow_dispatch: | |
inputs: | |
target: | |
type: choice | |
description: 'target to compile' | |
options: | |
- Gee_B70 | |
- Nokia-Sbell_A-040W-Q | |
- Xiaomi_CR6606 | |
- Xiaomi_CR6608 | |
- Xiaomi_CR6609 | |
- DLINK_DIR-878 | |
- DLINK_DIR-882 | |
- JCG_836PRO | |
- JCG_AC860M | |
- JCQ_Q20 | |
- JCQ_Q10Pro | |
- JCG_Y2 | |
- Phicomm_K2P | |
- Phicomm_K2P-USB | |
- Xiaomi_4 | |
- Xiaomi_R3G | |
- Xiaomi_R3P-PB | |
- Xiaomi_R3P | |
- Motorola_MR2600 | |
- Raisecom_MSG1500_X.00 | |
- Lenovo_NEWIFI2 | |
- Xiaomi_AC2100 | |
- JDCloud_Luban | |
- JDCloud_1 | |
- Redmi_AC2100 | |
- Asus_RT-AC85P | |
- Youhua_WR1200JS | |
- Youhua_WR330 | |
- Xiaoyu_C1 | |
- Xiaoyu_C3 | |
- Xiaoyu_C5 | |
- ZTE_E8820S | |
plugins: | |
description: 'json format string of include configs' | |
required: true | |
default: '{"vpnsvr":"n","vpncli":"n","vpncmd":"n","ss":"y","v2ray":"n","xray":"y","trojan":"n","ssobfs":"n","dnsforwarder":"n","adbyby":"n","adguardhome":"n","smartdns":"n","aliddns":"n","zerotier":"n","ddnsto":"n","wireguard":"n","aldrive":"n","sqm":"y","mentohust":"n","scutclient":"n","njitclient":"n","minieap":"n","dogcom":"n"}' | |
firmwarever: | |
description: 'firmware''s version' | |
required: true | |
default: '20220218' | |
uploadanon: | |
type: boolean | |
description: 'upload firmware to anonfiles' | |
default: 'false' | |
env: | |
REPOSITORY_URL: https://github.com/MeIsReallyBa/padavan-4.4.git | |
TOOLCHAIN_URL: https://github.com/hanwckf/padavan-toolchain/releases/download/linux-4.4-v1.0/mipsel-linux-uclibc.tar.xz | |
WORK_PATH: /opt/padavan-4.4 | |
TIME_ZONE: Asia/Shanghai | |
FIRMWARE_DATEPREFIX: $(date +"%Y%m%d") | |
FIRMWARE_AUTHOR: MeIsReallyBa | |
FIRMWARE_PATH: /opt/firmwares | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
if: github.event.repository.owner.id == github.event.sender.id | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Bonnie2980/variable-mapper@master | |
id: export | |
with: | |
key: "${{ github.event.inputs.target }}" | |
map: | | |
{ | |
"Gee_B70": { | |
"model": "B70" | |
}, | |
"Nokia-Sbell_A-040W-Q": { | |
"model": "BELL-A040WQ" | |
}, | |
"Xiaomi_CR6606": { | |
"model": "CR660x" | |
}, | |
"Xiaomi_CR6608": { | |
"model": "CR660x" | |
}, | |
"Xiaomi_CR6609": { | |
"model": "CR660x" | |
}, | |
"DLINK_DIR-878": { | |
"model": "DIR-878" | |
}, | |
"DLINK_DIR-882": { | |
"model": "DIR-882" | |
}, | |
"JCG_836PRO": { | |
"model": "JCG-836PRO" | |
}, | |
"JCG_AC860M": { | |
"model": "JCG-AC860M" | |
}, | |
"JCQ_Q20": { | |
"model": "JCG-Q20" | |
}, | |
"JCQ_Q10Pro": { | |
"model": "JCG-Q20" | |
}, | |
"JCG_Y2": { | |
"model": "JCG-Y2" | |
}, | |
"Phicomm_K2P": { | |
"model": "K2P" | |
}, | |
"Phicomm_K2P-USB": { | |
"model": "K2P-USB" | |
}, | |
"Xiaomi_4": { | |
"model": "MI-4" | |
}, | |
"Xiaomi_R3G": { | |
"model": "MI-R3G" | |
}, | |
"Xiaomi_R3P-PB": { | |
"model": "MI-R3P-PB" | |
}, | |
"Xiaomi_R3P": { | |
"model": "MI-R3P" | |
}, | |
"Motorola_MR2600": { | |
"model": "MR2600" | |
}, | |
"Raisecom_MSG1500_X.00": { | |
"model": "MSG1500" | |
}, | |
"Lenovo_NEWIFI2": { | |
"model": "NEWIFI" | |
}, | |
"Xiaomi_AC2100": { | |
"model": "R2100" | |
}, | |
"JDCloud_Luban": { | |
"model": "RE-CP-02" | |
}, | |
"JDCloud_1": { | |
"model": "RE-SP-01B" | |
}, | |
"Redmi_AC2100": { | |
"model": "RM2100" | |
}, | |
"Asus_RT-AC85P": { | |
"model": "RT-AC85P" | |
}, | |
"Youhua_WR1200JS": { | |
"model": "WR1200JS" | |
}, | |
"Youhua_WR330": { | |
"model": "WR330" | |
}, | |
"Xiaoyu_C1": { | |
"model": "XY-C1" | |
}, | |
"Xiaoyu_C3": { | |
"model": "XY-C1" | |
}, | |
"Xiaoyu_C5": { | |
"model": "XY-C1" | |
}, | |
"ZTE_E8820S": { | |
"model": "ZTE-E8820S" | |
}, | |
".*": { | |
"model": "K2P" | |
} | |
} | |
export_to: env | |
mode: first_match | |
- name: Initialization environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get update | |
sudo apt install unzip libtool-bin curl cmake gperf gawk flex bison nano xxd \ | |
fakeroot kmod cpio git python3-docutils gettext automake autopoint \ | |
texinfo build-essential help2man pkg-config zlib1g-dev libgmp3-dev \ | |
libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev wget libc-dev-bin | |
sudo timedatectl set-timezone "$TIME_ZONE" | |
- name: Clone source code | |
run: | | |
git clone --depth=1 $REPOSITORY_URL $WORK_PATH | |
cd $WORK_PATH/toolchain-mipsel | |
mkdir -p toolchain-4.4.x | |
wget $TOOLCHAIN_URL | |
tar -xf mipsel-linux-uclibc.tar.xz -C toolchain-4.4.x | |
- name: Parse json string of include plugins | |
run: | | |
echo "vpnsvr=${{fromJson(github.event.inputs.plugins).vpnsvr}}" >> $GITHUB_ENV | |
echo "vpncli=${{fromJson(github.event.inputs.plugins).vpncli}}" >> $GITHUB_ENV | |
echo "vpncmd=${{fromJson(github.event.inputs.plugins).vpncmd}}" >> $GITHUB_ENV | |
echo "ss=${{fromJson(github.event.inputs.plugins).ss}}" >> $GITHUB_ENV | |
echo "v2ray=${{fromJson(github.event.inputs.plugins).v2ray}}" >> $GITHUB_ENV | |
echo "xray=${{fromJson(github.event.inputs.plugins).xray}}" >> $GITHUB_ENV | |
echo "trojan=${{fromJson(github.event.inputs.plugins).trojan}}" >> $GITHUB_ENV | |
echo "ssobfs=${{fromJson(github.event.inputs.plugins).ssobfs}}" >> $GITHUB_ENV | |
echo "dnsforwarder=${{fromJson(github.event.inputs.plugins).dnsforwarder}}" >> $GITHUB_ENV | |
echo "adbyby=${{fromJson(github.event.inputs.plugins).adbyby}}" >> $GITHUB_ENV | |
echo "adguardhome=${{fromJson(github.event.inputs.plugins).adguardhome}}" >> $GITHUB_ENV | |
echo "smartdns=${{fromJson(github.event.inputs.plugins).smartdns}}" >> $GITHUB_ENV | |
echo "aliddns=${{fromJson(github.event.inputs.plugins).aliddns}}" >> $GITHUB_ENV | |
echo "zerotier=${{fromJson(github.event.inputs.plugins).zerotier}}" >> $GITHUB_ENV | |
echo "ddnsto=${{fromJson(github.event.inputs.plugins).ddnsto}}" >> $GITHUB_ENV | |
echo "wireguard=${{fromJson(github.event.inputs.plugins).wireguard}}" >> $GITHUB_ENV | |
echo "aldrive=${{fromJson(github.event.inputs.plugins).aldrive}}" >> $GITHUB_ENV | |
echo "sqm=${{fromJson(github.event.inputs.plugins).sqm}}" >> $GITHUB_ENV | |
echo "mentohust=${{fromJson(github.event.inputs.plugins).mentohust}}" >> $GITHUB_ENV | |
echo "scutclient=${{fromJson(github.event.inputs.plugins).scutclient}}" >> $GITHUB_ENV | |
echo "njitclient=${{fromJson(github.event.inputs.plugins).njitclient}}" >> $GITHUB_ENV | |
echo "minieap=${{fromJson(github.event.inputs.plugins).minieap}}" >> $GITHUB_ENV | |
echo "dogcom=${{fromJson(github.event.inputs.plugins).dogcom}}" >> $GITHUB_ENV | |
- name: Custom config | |
run: | | |
cd $WORK_PATH/trunk | |
if [ ! -f configs/templates/${{ env.model }}.config ] ; then | |
echo "configs/templates/${{ env.model }}.config not found" | |
exit 1 | |
fi | |
cp -f configs/templates/${{ env.model }}.config .config | |
################################################################################################ | |
#因不同型号配置功能不一样,所以先把配置项删除,如果你自己要添加其他的,也要写上删除这一条,切记!!! | |
################################################################################################ | |
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_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_TUNSAFE/d' .config #删除配置项tunsafe | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_ALIDDNS/d' .config #删除配置项阿里DDNS | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SRELAY/d' .config #删除配置项srelay | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_ADGUARDHOME/d' .config #删除配置项adguardhome | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_ZEROTIER/d' .config #删除配置项zerotier | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_DDNSTO/d' .config #删除配置项ddnsto | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_WIREGUARD/d' .config #删除配置项wireguard | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_ALDRIVER/d' .config #删除配置项阿里云盘 | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SMARTDNS/d' .config #删除配置项smartdns | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SQM/d' .config #删除配置项sqm | |
#校园网相关开始 | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_MENTOHUST/d' .config #删除配置项MENTOHUST | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT/d' .config #删除配置项SCUTCLIENT | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_NJIT_CLIENT/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_MINIEAP/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_DOGCOM/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_SOFTETHERVPN_SERVER=${{env.vpnsvr}}" >> .config #SOFTETHERVPN | |
echo "CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CLIENT=${{env.vpncli}}" >> .config #SOFTETHERVPN | |
echo "CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CMD=${{env.vpncmd}}" >> .config #SOFTETHERVPN | |
#科学相关 | |
echo "CONFIG_FIRMWARE_INCLUDE_SHADOWSOCKS=${{env.ss}}" >> .config #SS plus+ | |
echo "CONFIG_FIRMWARE_INCLUDE_V2RAY=${{env.v2ray}}" >> .config #集成v2ray执行文件(3.8M左右) | |
echo "CONFIG_FIRMWARE_INCLUDE_XRAY=${{env.xray}}" >> .config #集成xray执行文件(5.6M左右),可以代替v2ray,注:如果闪存太小不够还是建议使用v2ray | |
echo "CONFIG_FIRMWARE_INCLUDE_TROJAN=${{env.trojan}}" >> .config #集成trojan执行文件(1.1M左右) | |
echo "CONFIG_FIRMWARE_INCLUDE_SSOBFS=${{env.ssobfs}}" >> .config # simple-obfs混淆插件 | |
echo "CONFIG_FIRMWARE_INCLUDE_SSSERVER=n" >> .config #SS server | |
# | |
echo "CONFIG_FIRMWARE_INCLUDE_SRELAY=n" >> .config #可以不集成 | |
echo "CONFIG_FIRMWARE_INCLUDE_TUNSAFE=n" >> .config #tunsafe | |
echo "CONFIG_FIRMWARE_INCLUDE_DNSFORWARDER=${{env.dnsforwarder}}" >> .config #dnsforwarder | |
# | |
echo "CONFIG_FIRMWARE_INCLUDE_ADBYBY=${{env.adbyby}}" >> .config #adbyby plus+ | |
# | |
echo "CONFIG_FIRMWARE_INCLUDE_ADGUARDHOME=${{env.adguardhome}}" >> .config #adguardhome | |
echo "CONFIG_FIRMWARE_INCLUDE_SMARTDNS=${{env.smartdns}}" >> .config #smartdns | |
# | |
echo "CONFIG_FIRMWARE_INCLUDE_ALIDDNS=${{env.aliddns}}" >> .config #阿里DDNS | |
echo "CONFIG_FIRMWARE_INCLUDE_ZEROTIER=${{env.zerotier}}" >> .config #zerotier ~1.3M | |
echo "CONFIG_FIRMWARE_INCLUDE_DDNSTO=${{env.ddnsto}}" >> .config #ddnsto | |
echo "CONFIG_FIRMWARE_INCLUDE_WIREGUARD=${{env.wireguard}}" >> .config #wireguard | |
# | |
echo "CONFIG_FIRMWARE_INCLUDE_ALDRIVER=${{env.aldrive}}" >> .config #阿里云盘 | |
echo "CONFIG_FIRMWARE_INCLUDE_SQM=${{env.sqm}}" >> .config #SQM | |
# | |
#校园网相关开始 | |
echo "CONFIG_FIRMWARE_INCLUDE_MENTOHUST=${{env.mentohust}}" >> .config #MENTOHUST | |
echo "CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT=${{env.scutclient}}" >> .config #SCUTCLIENT | |
echo "CONFIG_FIRMWARE_INCLUDE_NJIT_CLIENT=${{env.njitclient}}" >> .config | |
echo "CONFIG_FIRMWARE_INCLUDE_MINIEAP=${{env.minieap}}" >> .config | |
echo "CONFIG_FIRMWARE_INCLUDE_DOGCOM=${{env.dogcom}}" >> .config | |
#校园网相关结束 | |
######################################################################################### | |
#自定义添加其它功能请参考源码configs/templates/目录下的config文件。按照上面的格式添加即可 | |
#格式如下: | |
#sed -i '/自定义项/d' .config | |
#echo "自定义项=y" >> .config | |
sed -i "s/FIRMWARE_BUILDS_REV=.*/FIRMWARE_BUILDS_REV=${{ github.event.inputs.firmwarever }}/g" ./versions.inc | |
echo '更新版本号时间' | |
######################################################################################### | |
- name: Build firmware | |
run: | | |
cd $WORK_PATH/trunk | |
sudo ./clear_tree | |
sudo ./build_firmware_modify ${{ env.model }} 0 | |
echo "FIRMWARE_DATEPREFIX=$(date +"%Y%m%d")" >> $GITHUB_ENV | |
- name: Organize firmware files | |
run: | | |
mkdir -p $FIRMWARE_PATH/ | |
cd $WORK_PATH/trunk/images | |
for firmwarefile in $(ls *.trx) | |
do sudo mv $firmwarefile $FIRMWARE_PATH/${FIRMWARE_DATEPREFIX}"_"${FIRMWARE_AUTHOR}"_"${{ env.model }}"_kernal4.4.trx" | |
done | |
cd $FIRMWARE_PATH | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
echo "STATUS=success" >> $GITHUB_ENV | |
- name : Upload packages | |
uses: actions/upload-artifact@main | |
if: env.STATUS == 'success' | |
with: | |
name: Padavan44-packages | |
path: ${{ env.FIRMWARE }} | |
- name: Upload firmware to anonfiles | |
if: env.STATUS == 'success' && github.event.inputs.uploadanon == 'true' | |
run: | | |
curl -fsSL git.io/file-transfer | sh | |
./transfer anon --no-progress ${FIRMWARE} 2>&1 | tee anonfile.log | |
echo "::warning file=anonfile.com::$(cat anonfile.log | grep -o -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*")" | |
- name: Remove obsolete firmwares on artifacts | |
uses: Bonnie2980/gha-remove-artifacts@master | |
if: env.STATUS == 'success' | |
with: | |
age: '1 day' | |
skip-recent: 5 |