Test luci-app-turboacc #34
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: Test luci-app-turboacc | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- luci | |
- package | |
paths: | |
- '!README.md' | |
- '!.github/**' | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
max-parallel: 8 | |
matrix: | |
tag_branche: [master,openwrt-24.10,openwrt-23.05,openwrt-22.03] | |
compile: [FLOW_OFFLOAD,SHORTCUT_FE,SHORTCUT_FE_CM,SHORTCUT_FE_DRV] | |
steps: | |
- name: 将存储库签出到运行器 | |
uses: actions/checkout@v4 | |
with: | |
ref: 'luci' | |
path: luci-app-turboacc | |
- name: 将存储库签出到运行器 | |
uses: actions/checkout@v4 | |
with: | |
ref: 'package' | |
path: turboacc | |
- name: 设置变量 | |
run: | | |
export TURBOACC_PATH="$(pwd)/turboacc" | |
export LUCI_APP_TURBOACC_PATH="$(pwd)/luci-app-turboacc" | |
echo "TURBOACC_PATH=$TURBOACC_PATH" >> $GITHUB_ENV | |
echo "LUCI_APP_TURBOACC_PATH=$LUCI_APP_TURBOACC_PATH" >> $GITHUB_ENV | |
- name: 检测 | |
run: ls -la $(find $GITHUB_WORKSPACE -type d) | |
- name: 安装编译依赖 | |
run: | | |
sudo -E apt update | |
sudo -E apt-mark hold grub-efi-amd64-signed | |
sudo -E apt -y full-upgrade | |
sudo apt install -y build-essential clang flex bison g++ gawk gcc-multilib g++-multilib \ | |
gettext git libncurses-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget | |
sudo -E systemctl daemon-reload | |
sudo -E apt -y autoremove --purge | |
sudo -E apt clean | |
sudo timedatectl set-timezone "Asia/Shanghai" | |
- name: 克隆源代码 | |
run: | | |
git clone https://git.openwrt.org/openwrt/openwrt.git | |
cd openwrt | |
export OPENWRT_ROOT_PATH="$(pwd)" | |
echo "OPENWRT_ROOT_PATH=$OPENWRT_ROOT_PATH" >> $GITHUB_ENV | |
- name: 切换标签/分支 | |
run: | | |
echo "${{ matrix.tag_branche }}" | |
cd $OPENWRT_ROOT_PATH | |
git checkout "${{ matrix.tag_branche }}" | |
- name: 修复问题 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
sed -i 's/^ DEPENDS:= +kmod-crypto-manager +kmod-crypto-pcbc +kmod-crypto-fcrypt$/ DEPENDS:= +kmod-crypto-manager +kmod-crypto-pcbc +kmod-crypto-fcrypt +kmod-udptunnel4 +kmod-udptunnel6/' package/kernel/linux/modules/netsupport.mk #https://github.com/openwrt/openwrt/commit/ecc53240945c95bc77663b79ccae6e2bd046c9c8 | |
sed -i 's/^ dnsmasq \\$/ dnsmasq-full \\/g' ./include/target.mk | |
sed -i 's/^ b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)"/ $(TOPDIR)\/tools\/b43-tools\/files\/b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)"/' ./package/kernel/mac80211/broadcom.mk | |
- name: 更新 feeds | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
./scripts/feeds update -a | |
./scripts/feeds install -a | |
- name: 生成配置文件 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
if [ "${{ matrix.compile }}" = "SHORTCUT_FE_DRV" ]; then | |
echo "CONFIG_TARGET_ipq807x=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_ipq807x_generic=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_ipq807x_generic_DEVICE_redmi_ax6=y" >> $OPENWRT_ROOT_PATH/.config | |
else | |
echo "CONFIG_TARGET_x86=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_x86_64=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_x86_64_DEVICE_generic=y" >> $OPENWRT_ROOT_PATH/.config | |
fi | |
make defconfig | |
- name: 添加turboacc | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
if [ "${{ matrix.compile }}" = "FLOW_OFFLOAD" ]; then | |
curl -sSL https://raw.githubusercontent.com/chenmozhijin/turboacc/luci/add_turboacc.sh -o add_turboacc.sh && bash add_turboacc.sh --no-sfe | |
else | |
curl -sSL https://raw.githubusercontent.com/chenmozhijin/turboacc/luci/add_turboacc.sh -o add_turboacc.sh && bash add_turboacc.sh | |
fi | |
kernel_version="$(sed -n '/CONFIG_LINUX_/p' $OPENWRT_ROOT_PATH/.config | sed -e 's/CONFIG_LINUX_//' -e 's/=y//' -e 's/_/./g')" | |
#log | |
echo "libnftnl-file" | |
ls $OPENWRT_ROOT_PATH/package/libs/libnftnl | |
echo "firewall4-file" | |
ls $OPENWRT_ROOT_PATH/package/network/config/firewall4 | |
echo "nftables-file" | |
ls $OPENWRT_ROOT_PATH/package/network/utils/nftables | |
echo "firewall4-patches" | |
ls $OPENWRT_ROOT_PATH/package/network/config/firewall4/patches/ | |
echo "libnftnl-patches" | |
ls $OPENWRT_ROOT_PATH/package/libs/libnftnl/patches/ | |
echo "nftables-patches" | |
ls $OPENWRT_ROOT_PATH/package/network/utils/nftables/patches/ | |
echo "hack-$kernel_version" | |
ls $OPENWRT_ROOT_PATH/target/linux/generic/hack-$kernel_version | |
echo "pending-$kernel_version" | |
ls $OPENWRT_ROOT_PATH/target/linux/generic/pending-$kernel_version | |
- name: 加载配置并生成配置文件 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
echo "compile = "${{ matrix.compile }} | |
rm -rf .config .config.old tmp | |
ls -la | |
if [ "${{ matrix.compile }}" = "SHORTCUT_FE_DRV" ]; then | |
echo "CONFIG_TARGET_ipq807x=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_ipq807x_generic=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_ipq807x_generic_DEVICE_redmi_ax6=y" >> $OPENWRT_ROOT_PATH/.config | |
else | |
echo "CONFIG_TARGET_x86=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_x86_64=y" >> $OPENWRT_ROOT_PATH/.config | |
echo "CONFIG_TARGET_x86_64_DEVICE_generic=y" >> $OPENWRT_ROOT_PATH/.config | |
fi | |
echo 'CONFIG_PACKAGE_luci-app-turboacc=y' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_BBR_CCA=y' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_NFT_FULLCONE=y' >> .config | |
if [ "${{ matrix.compile }}" = "FLOW_OFFLOAD" ]; then | |
echo "FLOW_OFFLOAD" | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_OFFLOADING=y' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_SHORTCUT_FE=n' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_SHORTCUT_FE_CM=n' >> .config | |
elif [ "${{ matrix.compile }}" = "SHORTCUT_FE" ]; then | |
echo "SHORTCUT_FE" | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_OFFLOADING=n' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_SHORTCUT_FE=y' >> .config | |
echo 'CONFIG_PACKAGE_kmod-shortcut-fe-cm=n' >> .config | |
elif [ "${{ matrix.compile }}" = "SHORTCUT_FE_CM" ]; then | |
echo "SHORTCUT_FE_CM" | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_OFFLOADING=n' >> .config | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_SHORTCUT_FE_CM=y' >> .config | |
elif [ "${{ matrix.compile }}" = "SHORTCUT_FE_DRV" ]; then | |
echo "SHORTCUT_FE_DRV" | |
echo 'CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_OFFLOADING=n' >> .config | |
echo "CONFIG_PACKAGE_luci-app-turboacc_INCLUDE_SHORTCUT_FE_DRV=y" >> $OPENWRT_ROOT_PATH/.config | |
else | |
echo "compile = "${{ matrix.compile }} | |
exit 1 | |
fi | |
echo ".config" | |
cat .config | |
make defconfig | |
echo "diffconfig" | |
./scripts/diffconfig.sh | |
- name: 下载 dl 库 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
make download -j16 | |
find dl -size -1024c -exec ls -l {} \; | |
find dl -size -1024c -exec rm -f {} \; | |
make download -j16 || make download -j1 V=s | |
# - name: 下载工具链库 | |
# run: | | |
# cd $OPENWRT_ROOT_PATH | |
# mkdir -p staging_dir | |
# CONFIG_TARGET_BOARD=$(sed -n 's/CONFIG_TARGET_BOARD="\(.*\)"/\1/p' .config) #x86 | |
# CONFIG_TARGET_SUBTARGET=$(sed -n 's/CONFIG_TARGET_SUBTARGET="\(.*\)"/\1/p' .config) #64 | |
# if [ "${{ matrix.tag_branche }}" = "master" ]; then | |
# RELEASE=snapshots | |
# elif [ "${{ matrix.tag_branche }}" = "openwrt-23.05" ] || [ "${{ matrix.tag_branche }}" = "v23.05.0" ]; then | |
# RELEASE=releases/v23.05.0 | |
# elif [ "${{ matrix.tag_branche }}" = "openwrt-22.03" ] || [ "${{ matrix.tag_branche }}" = "v22.03.5" ]; then | |
# RELEASE=releases/22.03.5 | |
# fi | |
# FILE_NAME=$(curl -s -L --retry 3 --connect-timeout 20 https://downloads.openwrt.org/snapshots/targets/$CONFIG_TARGET_BOARD/$CONFIG_TARGET_SUBTARGET/ | grep -m 1 -o "openwrt-toolchain-${CONFIG_TARGET_BOARD}-${CONFIG_TARGET_SUBTARGET}_gcc[^\"]*\.Linux-${CONFIG_TARGET_BOARD}_${CONFIG_TARGET_SUBTARGET}\.tar\.xz" | sed 's/^.*<a href="//' | sort -u) | |
# curl -L --retry 3 --connect-timeout 20 https://downloads.openwrt.org/$RELEASE/targets/$CONFIG_TARGET_BOARD/$CONFIG_TARGET_SUBTARGET/$FILE_NAME -o staging_dir/toolchain.tar.xz | |
# cd staging_dir | |
# tar xf toolchain.tar.xz | |
# cp -r ./openwrt-toolchain-*/toolchain-* . | |
# rm -rf ./openwrt-toolchain-* | |
- name: 获取信息 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
id: get-info | |
run: | | |
toolchain_commit=$(git log --pretty=tformat:"%h" -n1 tools toolchain) | |
target=$(sed -n '/^CONFIG_TARGET_BOARD/p' ${{ env.OPENWRT_ROOT_PATH }}/.config | sed -e 's/CONFIG_TARGET_BOARD\=\"//' -e 's/\"//') | |
subtarget=$(sed -n '/^CONFIG_TARGET_SUBTARGET/p' ${{ env.OPENWRT_ROOT_PATH }}/.config | sed -e 's/CONFIG_TARGET_SUBTARGET\=\"//' -e 's/\"//') | |
echo "target=$target" >> "$GITHUB_OUTPUT" | |
echo "subtarget=$subtarget" >> "$GITHUB_OUTPUT" | |
echo "toolchain_commit=$toolchain_commit" >> "$GITHUB_OUTPUT" | |
- name: 缓存toolchain | |
uses: actions/cache@v4 | |
id: cache-toolchain | |
with: | |
path: | | |
${{ env.OPENWRT_ROOT_PATH }}/staging_dir/host* | |
${{ env.OPENWRT_ROOT_PATH }}/staging_dir/tool* | |
key: toolchain-${{ steps.get-info.outputs.toolchain_commit }}-${{ steps.get-info.outputs.target }}-${{ steps.get-info.outputs.subtarget }} | |
- name: 构建工具 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
if: ${{ steps.cache-toolchain.outputs.cache-hit != 'true' }} | |
run: | | |
make tools/install -j $(($(nproc)+1)) || make tools/install -j1 V=s | |
echo "=======================" | |
echo "空间使用情况:" | |
echo "=======================" | |
df --total -Th | |
echo "=======================" | |
- name: 构建工具链 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
if: ${{ steps.cache-toolchain.outputs.cache-hit != 'true' }} | |
run: | | |
make toolchain/install -j $(($(nproc)+1)) || make toolchain/install -j1 V=s | |
echo "=======================" | |
echo "空间使用情况:" | |
echo "=======================" | |
df --total -Th | |
echo "=======================" | |
- name: 构建内核 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
make target/compile -j $(($(nproc)+1)) || make target/compile -j$(nproc) V=s || make target/compile -j1 V=s | |
echo "=======================" | |
echo "空间使用情况:" | |
echo "=======================" | |
df --total -Th | |
echo "=======================" | |
- name: 编译并生成安装包 | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
make package/compile -j $(($(nproc)+1)) || make package/compile -j1 V=s | |
make package/install -j $(($(nproc)+1)) || make package/install -j1 V=s | |
echo "=======================" | |
echo "空间使用情况:" | |
echo "=======================" | |
df --total -Th | |
echo "=======================" | |
du -h --max-depth=1 ./ --exclude=build_dir --exclude=bin | |
du -h --max-depth=1 ./build_dir | |
du -h --max-depth=1 ./bin | |
- name: 准备 artifact | |
working-directory: ${{ env.OPENWRT_ROOT_PATH }} | |
run: | | |
mkdir -p ./artifact | |
ls -la $(find ./bin/packages/ -type d) | |
cp -rf $(find ./bin/packages/ -type f \( -name "*.ipk" -o -name "*.apk" \)) ./artifact | |
cp -rf $(find ./bin/packages/ -type f \( -name "*.ipk" -o -name "*.apk" \)) ./artifact | |
- name: 上传build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: packages-${{ matrix.tag_branche }}-${{ matrix.compile }} | |
path: ${{ env.OPENWRT_ROOT_PATH }}/artifact/** | |
- name: 收集日志 | |
if: success() || failure() | |
run: | | |
mkdir -p logs | |
cd logs | |
export LOG_PATH="$(pwd)" | |
echo "LOG_PATH=$LOG_PATH" >> $GITHUB_ENV | |
cp -r $OPENWRT_ROOT_PATH/logs $LOG_PATH/openwrt-logs || echo "没有openwrt/logs" | |
cp $OPENWRT_ROOT_PATH/.config $LOG_PATH/openwrt.config || echo "没有openwrt/.config" | |
ls -la $(find $OPENWRT_ROOT_PATH/package/ -type d) >> $LOG_PATH/package_files.list | |
ls -la $(find $OPENWRT_ROOT_PATH/linux/generic/ -type d) >> $LOG_PATH/kp_files.list | |
- name: 上传日志 | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-${{ matrix.tag_branche }}-${{ matrix.compile }} | |
path: "${{ env.LOG_PATH }}" |