Padavan CI K2P #1217
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
# # # # # # # # # # # | |
# 自动构建K2P | |
# | |
# # # # # # # # # # # | |
name: Padavan CI K2P | |
on: | |
schedule: | |
- cron: '0 18 * * *' | |
workflow_dispatch: | |
inputs: | |
clean_cache: | |
description: 'Clear caches' | |
required: false | |
type: boolean | |
watch: | |
types: [started] | |
env: | |
T_NAMES: "K2P" # 设备名字数组 | |
BASE_PATH: padavan # 基础目录 | |
PUBLIC_PATH: public # 公共目录 | |
VERSION_FILE: versions.inc # 版本后缀 | |
PUBLIC_SH: public.sh # 公共命令 | |
THEME_PATH: theme | |
UPLOAD_FIRMWARE: true # 是否打包文件 | |
CLONE_URL: https://github.com/immortalwrt/padavan.git # padavan 支持KVR源码地址 | |
CLONE_BRANCH: master # padavan 分支 | |
WORK_PATH: /opt/rt-n56u # 工作目录 一定要加 / | |
UPLOAD_COWTRANSFER: false | |
UPLOAD_WETRANSFER: true | |
FILE_NAME: "K2P" | |
IMAGES_PATH: /opt/rt-n56u/images/ | |
jobs: | |
build: | |
runs-on: ubuntu-18.04 | |
if: github.event.repository.owner.id == github.event.sender.id # 自己点的 start | |
steps: | |
- name: Checkout Master # 1.导入主分支 | |
uses: actions/checkout@master | |
- name: Initialization Environment # 2.初始环境的设置 | |
env: | |
DEBIAN_FRONTEND: noninteractive # 非交互模式 | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install unzip libtool-bin curl cmake gperf gawk flex bison nano xxd fakeroot \ | |
cpio git python-docutils gettext automake autopoint texinfo build-essential help2man \ | |
pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev wget | |
sudo timedatectl set-timezone 'Asia/Shanghai' # 设置时区 | |
- name: Clone Code # 3.拷贝代码 | |
run: | | |
git clone --depth=1 $CLONE_URL -b $CLONE_BRANCH $WORK_PATH | |
- name: Build Tool Chain # 4.构建工具链 | |
run: | | |
cd $WORK_PATH/toolchain-mipsel | |
sh dl_toolchain.sh | |
# mkdir -p toolchain-3.4.x | |
# wget https://github.com/hanwckf/padavan-toolchain/releases/download/v1.1/mipsel-linux-uclibc.tar.xz | |
# tar -xvf mipsel-linux-uclibc.tar.xz -C toolchain-3.4.x | |
mkdir ${WORK_PATH}/images/ | |
- name: Clear And Build # 5.清理构建树并开始构建 | |
run: | | |
# 1.拷贝公共文件 | |
cp -r $BASE_PATH/$PUBLIC_PATH $WORK_PATH/ | |
sudo chmod +x $WORK_PATH/$PUBLIC_PATH/$PUBLIC_SH | |
# 2. 循环替换自定义默认模板和构建,单个设备的 sh 拷贝 t_item 需要编译的固件名字 | |
for t_item in $T_NAMES; | |
do | |
if [ ! -e $BASE_PATH/$t_item/$t_item.config ] ; then | |
echo "${BASE_PATH}/${t_item}/${t_item}.config 自定义模板文件未找到" | |
else | |
cp -f $BASE_PATH/$t_item/$t_item.config $WORK_PATH/trunk/configs/templates/$t_item.config | |
echo "${t_item} 修改模板完成" | |
fi | |
if [ ! -f $BASE_PATH/$t_item/$t_item.sh ] ; then | |
echo "${BASE_PATH}/${t_item}/${t_item}.sh 自定义SH文件未找到" | |
else | |
cp -f $BASE_PATH/$t_item/$t_item.sh $WORK_PATH/ | |
sudo chmod +x $WORK_PATH/$t_item.sh | |
echo "${t_item} 自定义SH文件拷贝成功" | |
fi | |
if [ ! -d $BASE_PATH/$t_item/$THEME_PATH ] ; then | |
echo "${BASE_PATH}/${t_item}/${THEME_PATH} 自定义主题文件夹未找到" | |
elif [! -d $WORK_PATH/$PUBLIC_PATH/$THEME_PATH ] ; then | |
cp -r $BASE_PATH/$t_item/$THEME_PATH $WORK_PATH/$PUBLIC_PATH | |
echo "${THEME_PATH} 自定义主题文件夹拷贝成功" | |
else | |
#删除public拷贝的主题 | |
sudo rm -rf $WORK_PATH/$PUBLIC_PATH/$THEME_PATH | |
cp -r $BASE_PATH/$t_item/$THEME_PATH $WORK_PATH/$PUBLIC_PATH | |
echo "${THEME_PATH} 自定义主题文件夹拷贝成功" | |
fi | |
done | |
# 3. 开始构建 | |
cd $WORK_PATH/trunk | |
for t_item in $T_NAMES; | |
do | |
cp -f $WORK_PATH/trunk/configs/templates/$t_item.config .config # 拷贝模板到 .config | |
echo "执行 ${PUBLIC_SH} sh" | |
sudo $WORK_PATH/$PUBLIC_PATH/$PUBLIC_SH | |
if [ -e $WORK_PATH/$t_item.sh ] ; then | |
echo "执行自定义 ${t_item} sh" | |
sudo $WORK_PATH/$t_item.sh | |
fi | |
# 4. 清理构建 | |
cp -f configs/templates/$t_item.config .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_CURL/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_GDUT_DRCOM/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_DOGCOM/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_MINIEAP/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_NJIT_CLIENT/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_NAPT66/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_SERVER/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CLIENT/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOFTETHERVPN_CMD/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_VLMCSD/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_TTYD/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_LRZSZ/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_HTOP/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_NANO/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_IPERF3/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_DUMP1090/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_RTL_SDR/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_MTR/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SOCAT/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_SRELAY/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_MENTOHUST/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_FRPC/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_FRPS/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_TUNSAFE/d' .config | |
sed -i '/CONFIG_FIRMWARE_INCLUDE_WIREGUARD/d' .config | |
sed -i 's/{ "wl_auth_mode", "psk" },/{ "wl_auth_mode", "open" },/g' $WORK_PATH/trunk/user/shared/defaults.c | |
sed -i 's/{ "rt_auth_mode", "psk" },/{ "rt_auth_mode", "open" },/g' $WORK_PATH/trunk/user/shared/defaults.c | |
sudo ./clear_tree | |
sudo ./build_firmware_modify $t_item # $t_item 是循环的子对象 | |
sudo mv -f images/*.trx ${WORK_PATH}/images/ | |
done | |
# echo "::set-env name=FILE_NAME::$T_NAMES-$(date "+%Y%m%d")" # 包名 | |
# echo "::set-env name=IMAGES_PATH::${WORK_PATH}/images/" # 打包目录 | |
- name : Upload Packages # 6. 打包文件并且上传到当前主分支 | |
uses: actions/upload-artifact@master | |
if: env.UPLOAD_FIRMWARE == 'true' && success() # 成功才执行 | |
with: | |
name: Padavan-${{env.FILE_NAME}} | |
path: ${{ env.IMAGES_PATH }} | |
- name: Upload firmware to cowtransfer | |
if: env.UPLOAD_COWTRANSFER == 'true' && success() | |
run: | | |
curl -fsSL git.io/file-transfer | sh | |
./transfer cow --block 2621440 -s -p 64 --no-progress ${IMAGES_PATH} 2>&1 | tee cowtransfer.log | |
echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)" | |
- name: Upload firmware to WeTransfer | |
if: env.UPLOAD_WETRANSFER == 'true' && success() | |
run: | | |
curl -fsSL git.io/file-transfer | sh | |
./transfer wet -s -p 16 --no-progress ${IMAGES_PATH} 2>&1 | tee wetransfer.log | |
echo "::warning file=wetransfer.com::$(cat wetransfer.log | grep https)" |