记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

GitHub Actions 在线云编译 OpenWrt 固件

GitHub Actions 在线云编译 OpenWrt 固件
Github Ac­tions 是 Mi­crosoft 收购 GitHub 后推出的 CI/​CD 服务,它提供了性能配置非常不错的虚拟服务器环境(E5 2vCPU/​7G RAM),基于它可以进行构建、测试、打包、部署项目。对于公开仓库可每月免费使用2000分钟,这对于编译 Open­Wrt 来说是非常充足的。
准备工作
GitHub 账号
搭建编译环境,生成.config文件。(可选)
基础使用
在自己搭建编译环境中使用 Lean's OpenWrt 源码生成.config文件。
将上面的Github项目地址打开,点fork到自己账号,然后点击Create new file(创建新文件)按钮。文件名填写为.config,把本地生成的.config 文件的内容复制粘贴到下面的文本框中。翻到页面最下方,点击Commit new file(提交新文件)按钮。在 Actions 页面选择Build OpenWrt,然后点击Run Workflow按钮,即可开始编译
最后经过一两个小时的等待,不出意外你就可以在 Actions 页面看到已经打包好的固件目录压缩包。
定时自动编译
点击查看
TIPS: 源码更新是不确定的,定时编译经常是在编译没有变动的源码,无意义且浪费资源,所以不建议使用。
编辑 work­flow 文件(.github/workflows/build-openwrt.yml)取消注释下面两行。
#  schedule:
#    - cron: 0 8 * * 5
例子是北京时间每周五下午 4 点(16 时)开始编译(周末下班回家直接下载最新固件开始折腾)。如需自定义则按照 cron 格式修改即可,GitHub Ac­tions 的时区为 UTC ,注意按照自己所在地时区进行转换。
编译一个简单的Openwrt
fork项目到自己账号,然后点Actions,选择需要编译的版本,进行编译,等待将近2个小时,就在release里面看到你的固件了。
全手动编译最新Lean大佬项目:
新建一个项目 New repository ,项目名称随意,创建项目。
手动添加代码
点最上面 add file,最上面写文件名字(完整),下面写代码,完了点 Commit changes 
DIY-1.sh
XML/HTML代码
  1. # 此脚本用处是:添加第三方插件  
  2. #=========================================================================================================================  
  3.   
  4.   
  5. # 1-添加 ShadowSocksR Plus+ 插件  
  6. sed -i 's/^#\(.*helloworld\)/\1/' feeds.conf.default  
  7.   
  8. # 2-添加 PowerOff 关机插件  
  9. git clone https://github.com/WukongMaster/luci-app-poweroff.git package/luci-app-poweroff  
  10.   
  11. # 3-添加 opentomcat 主题  
  12. git clone https://github.com/WukongMaster/luci-theme-opentomcat.git package/luci-theme-opentomcat  
  13.   
  14. # 4-添加 OpenClash 插件  
  15. sed -i '$a\src-git openclash https://github.com/vernesong/OpenClash' ./feeds.conf.default  
  16.   
  17. # 5-添加 PassWall 插件  
  18. echo "src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main" >> "feeds.conf.default"  
  19. echo "src-git passwall2 https://github.com/xiaorouji/openwrt-passwall2.git;main" >> "feeds.conf.default"  
  20. echo "src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main" >> "feeds.conf.default"  
DIY-2.sh
XML/HTML代码
  1. # 此脚本用处是:定制个性化参数  
  2. #============================================================================================  
  3.   
  4.   
  5. # 1-设置默认主题  
  6. # sed -i 's/bootstrap/opentomcat/g' ./feeds/luci/collections/luci/Makefile  
  7.   
  8. # 2-设置管理地址  
  9. sed -i 's/192.168.1.1/192.168.0.111/g' package/base-files/files/bin/config_generate  
  10.   
  11. # 3-编译内核版本  
  12. sed -i 's/KERNEL_PATCHVER:=6.1/KERNEL_PATCHVER:=6.6/g' ./target/linux/x86/Makefile  
  13.   
  14. # 4-设置密码为空  
  15. sed -i '/CYXluq4wUazHjmCDBCqXF/d' package/lean/default-settings/files/zzz-default-settings  
  16.   
  17. # 5-修改时间格式  
  18. sed -i 's/os.date()/os.date("%Y-%m-%d %H:%M:%S")/g' package/lean/autocore/files/*/index.htm  
  19.   
  20. # 6-添加固件日期  
  21. sed -i 's/IMG_PREFIX:=/IMG_PREFIX:=$(BUILD_DATE_PREFIX)-/g' ./include/image.mk  
  22. sed -i '/DTS_DIR:=$(LINUX_DIR)/a\BUILD_DATE_PREFIX := $(shell date +'%F')' ./include/image.mk  
  23.   
  24. # 7-修正硬件信息  
  25. sed -i 's/${g}.*/${a}${b}${c}${d}${e}${f}${hydrid}/g' package/lean/autocore/files/x86/autocore  
  26.   
  27. # 8-增固件连接数  
  28. sed -i '/customized in this file/a net.netfilter.nf_conntrack_max=165535' package/base-files/files/etc/sysctl.conf  
DIY-3.sh
XML/HTML代码
  1. # 此脚本用处是:定制个性化参数  
  2. #============================================================================================  
  3.   
  4.   
  5. # 1-设置默认主题  
  6. # sed -i 's/bootstrap/opentomcat/g' ./feeds/luci/collections/luci/Makefile  
  7.   
  8. # 2-设置管理地址  
  9. sed -i 's/192.168.1.1/192.168.0.111/g' package/base-files/files/bin/config_generate  
  10.   
  11. # 3-编译内核版本  
  12. # sed -i 's/KERNEL_PATCHVER:=6.1/KERNEL_PATCHVER:=6.6/g' ./target/linux/x86/Makefile  
  13.   
  14. # 4-设置密码为空  
  15. sed -i '/CYXluq4wUazHjmCDBCqXF/d' package/lean/default-settings/files/zzz-default-settings  
  16.   
  17. # 5-修改时间格式  
  18. sed -i 's/os.date()/os.date("%Y-%m-%d %H:%M:%S")/g' package/lean/autocore/files/*/index.htm  
  19.   
  20. # 6-添加固件日期  
  21. sed -i 's/IMG_PREFIX:=/IMG_PREFIX:=$(BUILD_DATE_PREFIX)-/g' ./include/image.mk  
  22. sed -i '/DTS_DIR:=$(LINUX_DIR)/a\BUILD_DATE_PREFIX := $(shell date +'%F')' ./include/image.mk  
  23.   
  24. # 7-修正硬件信息  
  25. sed -i 's/${g}.*/${a}${b}${c}${d}${e}${f}${hydrid}/g' package/lean/autocore/files/x86/autocore  
  26.   
  27. # 8-增固件连接数  
  28. sed -i '/customized in this file/a net.netfilter.nf_conntrack_max=165535' package/base-files/files/etc/sysctl.conf  
x86.config
把本地环境生成的配置 .config 上传到github或者在线创建文件粘贴配置,如果是其他机型,可以新建H5.config 等自定义设备名称的配置文件,在以下的 workflows 目录的 yml 编译文件中改成对应的配置文件名。
Actions编译
点Actions,根据向导确认,创建下面两个文件,也就是需要编译出结果的配置文件。
OpenWrt-自用版.yml
XML/HTML代码
  1. name:  OpenWrt-自用版  
  2.   
  3. on:   
  4.   workflow_dispatch:  
  5. ##  schedule:  
  6. ##    - cron: 1 0 * * *  
  7.   
  8. env:  
  9.   REPO_URL: https://github.com/coolsnowwolf/lede  
  10.   REPO_BRANCH: master  
  11.   FEEDS_CONF: feeds.conf.default  
  12.   CONFIG_FILE: x86.config  
  13.   DIY_P1_SH: DIY-1.sh  
  14.   DIY_P2_SH: DIY-2.sh  
  15. #  SSH_ACTIONS: true  
  16.   UPLOAD_FIRMWARE: true  
  17.   UPLOAD_RELEASE: true  
  18.   TZ: Asia/Shanghai  
  19.   
  20. jobs:  
  21.   build:  
  22.     runs-on: ubuntu-20.04  
  23.   
  24.     steps:  
  25.       
  26.     - name: 检查项目分支  
  27.       uses: actions/checkout@main  
  28.   
  29.     - name: 清理磁盘空间  
  30.       uses: jlumbroso/free-disk-space@main  
  31.       with:  
  32.         tool-cache: true          
  33.         android: true  
  34.         dotnet: true  
  35.         haskell: true  
  36.         large-packages: true  
  37.         swap-storage: true  
  38.         
  39.     - name: 查看机器配置  
  40.       run: |  
  41.         echo "警告⚠"  
  42.         echo "分配的服务器性能有限,若选择的插件过多,务必注意CPU性能!"  
  43.         echo -e "CPU性能排序: 7763 > 8370C > 8272CL > 8171M > E5-2673\n"  
  44.         echo "--------------------------CPU信息--------------------------"  
  45.         echo "CPU物理数量: $(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)"  
  46.         echo "CPU核心数量: $(nproc)"  
  47.         echo -e "CPU型号信息:$(cat /proc/cpuinfo | grep -m1 name | awk -F: '{print $2}')\n"  
  48.         echo "--------------------------内存信息--------------------------"  
  49.         echo "已安装内存详细信息:"  
  50.         echo -e "$(sudo lshw -short -C memory | grep GiB)\n"  
  51.         echo "--------------------------硬盘信息--------------------------"  
  52.         echo "硬盘数量: $(ls /dev/sd* | grep -v [1-9] | wc -l)" && df -hT  
  53.   
  54.     - name: 安装编译环境  
  55.       env:  
  56.         DEBIAN_FRONTEND: noninteractive  
  57.       run: |  
  58.         sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc  
  59.         sudo -E apt-get -qq update  
  60.         sudo -E apt-get -qq install $(curl -fsSL https://github.com/iii80/openwrt-list/raw/main/depends-ubuntu-2004)  
  61.         sudo -E apt-get -qq autoremove --purge  
  62.         sudo -E apt-get -qq clean  
  63.         sudo timedatectl set-timezone "$TZ"  
  64.         sudo mkdir -p /workdir  
  65.         sudo chown $USER:$GROUPS /workdir  
  66.   
  67.     - name: 克隆固件源码  
  68.       working-directory: /workdir  
  69.       run: |  
  70.         df -hT $PWD  
  71.         git clone $REPO_URL -b $REPO_BRANCH openwrt  
  72.         ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt  
  73.   
  74.     - name: 添加外部插件  
  75.       run: |  
  76.         [ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default  
  77.         chmod +x $DIY_P1_SH  
  78.         cd openwrt  
  79.         $GITHUB_WORKSPACE/$DIY_P1_SH  
  80.   
  81.     - name: 更新外部插件  
  82.       run: cd openwrt && ./scripts/feeds update -a  
  83.   
  84.     - name: 安装外部插件  
  85.       run: cd openwrt && ./scripts/feeds install -a  
  86.   
  87.     - name: 加载个人设置  
  88.       run: |  
  89.         [ -e files ] && mv files openwrt/files  
  90.         [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config  
  91.         chmod +x $DIY_P2_SH  
  92.         cd openwrt  
  93.         $GITHUB_WORKSPACE/$DIY_P2_SH  
  94.   
  95.     - name: 下载固件dL库  
  96.       id: package  
  97.       run: |  
  98.         cd openwrt  
  99.         make defconfig  
  100.         make download -j8  
  101.         find dl -size -1024c -exec ls -l {} \;  
  102.         find dl -size -1024c -exec rm -f {} \;  
  103.   
  104.   
  105.           
  106. #    - name: SSH connection to Actions  
  107. #      uses: P3TERX/ssh2actions@main  
  108. #      if: env.SSH_ACTIONS == 'true' || contains(github.event.action, 'ssh')  
  109.       
  110.       
  111.       
  112.     - name: 正在编译固件  
  113.       id: compile  
  114.       run: |  
  115.         cd openwrt  
  116.         echo -e "$(nproc) thread compile"  
  117.         make -j$(nproc) || make -j1 || make -j1 V=s  
  118.         echo "status=success>> $GITHUB_OUTPUT  
  119.         grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME  
  120.         [ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV  
  121.         echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV  
  122.         echo "FILE_TIME=$(date "+%Y年%m月%d日")" >> $GITHUB_ENV  
  123.         echo "TAG_TIME=$(date +"%Y.%m.%d-%H%M%S")" >> $GITHUB_ENV  
  124.   
  125.     - name: 查看磁盘用量  
  126.       if: (!cancelled())  
  127.       run: df -hT  
  128.   
  129.     - name: 打包整理固件  
  130.       id: organize  
  131.       if: env.UPLOAD_FIRMWARE == 'true' && !cancelled()  
  132.       run: |  
  133.         cd openwrt/bin/targets/*/*  
  134.         rm -rf packages && mkdir packages  
  135.         find -name "*esxi-flat.vmdk*" | xargs -i mv -f {} packages  
  136.         find -name "*kernel.bin*" | xargs -i mv -f {} packages  
  137.         find -name "*rootfs*" | xargs -i mv -f {} packages  
  138.         find -name "*.manifest*" | xargs -i mv -f {} packages  
  139.         find -name "*vmlinuz*" | xargs -i mv -f {} packages  
  140.         find -name "*esxi.vmdk*" | xargs -i mv -f {} packages  
  141.         find -name "*buildinfo*" | xargs -i mv -f {} packages  
  142.         find -name "*json*" | xargs -i mv -f {} packages  
  143.         find -name "*sha256sums*" | xargs -i mv -f {} packages  
  144.         rm -rf packages  
  145.         echo "FIRMWARE=$PWD" >> $GITHUB_ENV  
  146.         echo "status=success>> $GITHUB_OUTPUT  
  147.   
  148.     - name: 打包上传固件  
  149.       uses: actions/upload-artifact@main  
  150.       if: steps.organize.outputs.status == 'success' && !cancelled()  
  151.       with:  
  152.         name: OpenWrt-Mini${{ env.DEVICE_NAME }}${{ env.FILE_DATE }}  
  153.         path: ${{ env.FIRMWARE }}  
  154.   
  155.     - name: 创建发布标签  
  156.       id: tag  
  157.       if: env.UPLOAD_RELEASE == 'true' && !cancelled()  
  158.       run: |  
  159.         echo "release_tag=${{ env.TAG_TIME }}" >> $GITHUB_OUTPUT  
  160.         touch release.txt  
  161.         echo "OpenWrt-Mini_ X86_64-自用版" >> release.txt  
  162.         echo "默认地址:192.168.0.111" >> release.txt  
  163.         echo "默认密码:无密码" >> release.txt  
  164.         echo "插件清单:ShadowSocksR Plus+,PassWall,OpenClash" >> release.txt  
  165.         echo "status=success>> $GITHUB_OUTPUT  
  166.   
  167.     - name: 发布新版固件  
  168.       uses: softprops/action-gh-release@master  
  169.       if: steps.tag.outputs.status == 'success' && !cancelled()  
  170.       env:  
  171.         GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}  
  172.       with:  
  173.         name: ${{ env.FILE_TIME }} -自用版  
  174.         tag_name: ${{ steps.tag.outputs.release_tag }}  
  175.         body_path: release.txt  
  176.         files: ${{ env.FIRMWARE }}/*   
  177.   
  178.     - name: 清理编译流程  
  179.       uses: Mattraks/delete-workflow-runs@main  
  180.       with:  
  181.         retain_days: 0  
  182.         keep_minimum_runs: 2  
  183.   
  184.     - name: 删除旧版固件  
  185.       uses: dev-drprasad/delete-older-releases@master  
  186.       if: env.UPLOAD_RELEASE == 'true' && !cancelled()  
  187.       with:  
  188.         keep_latest: 10  
  189.         delete_tags: true  
  190.       env:  
  191.         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  
OpenWrtR-R23.7.7-自用版.yml
XML/HTML代码
  1. name:  OpenWrt-R23.7.7-自用版  
  2.   
  3. on:   
  4.   workflow_dispatch:  
  5. ##  schedule:  
  6. ##    - cron: 1 0 * * *  
  7.   
  8. env:  
  9.   REPO_URL: https://github.com/coolsnowwolf/lede  
  10.   REPO_BRANCH: master  
  11.   FEEDS_CONF: feeds.conf.default  
  12.   CONFIG_FILE: x86.config  
  13.   DIY_P1_SH: DIY-1.sh  
  14.   DIY_P3_SH: DIY-3.sh  
  15. #  SSH_ACTIONS: true  
  16.   UPLOAD_FIRMWARE: true  
  17.   UPLOAD_RELEASE: true  
  18.   TZ: Asia/Shanghai  
  19.   
  20. jobs:  
  21.   build:  
  22.     runs-on: ubuntu-20.04  
  23.   
  24.     steps:  
  25.       
  26.     - name: 检查项目分支  
  27.       uses: actions/checkout@main  
  28.   
  29.     - name: 清理磁盘空间  
  30.       uses: jlumbroso/free-disk-space@main  
  31.       with:  
  32.         tool-cache: true          
  33.         android: true  
  34.         dotnet: true  
  35.         haskell: true  
  36.         large-packages: true  
  37.         swap-storage: true  
  38.         
  39.     - name: 查看机器配置  
  40.       run: |  
  41.         echo "警告⚠"  
  42.         echo "分配的服务器性能有限,若选择的插件过多,务必注意CPU性能!"  
  43.         echo -e "CPU性能排序: 7763 > 8370C > 8272CL > 8171M > E5-2673\n"  
  44.         echo "--------------------------CPU信息--------------------------"  
  45.         echo "CPU物理数量: $(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)"  
  46.         echo "CPU核心数量: $(nproc)"  
  47.         echo -e "CPU型号信息:$(cat /proc/cpuinfo | grep -m1 name | awk -F: '{print $2}')\n"  
  48.         echo "--------------------------内存信息--------------------------"  
  49.         echo "已安装内存详细信息:"  
  50.         echo -e "$(sudo lshw -short -C memory | grep GiB)\n"  
  51.         echo "--------------------------硬盘信息--------------------------"  
  52.         echo "硬盘数量: $(ls /dev/sd* | grep -v [1-9] | wc -l)" && df -hT  
  53.   
  54.     - name: 安装编译环境  
  55.       env:  
  56.         DEBIAN_FRONTEND: noninteractive  
  57.       run: |  
  58.         sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc  
  59.         sudo -E apt-get -qq update  
  60.         sudo -E apt-get -qq install $(curl -fsSL https://github.com/iii80/openwrt-list/raw/main/depends-ubuntu-2004)  
  61.         sudo -E apt-get -qq autoremove --purge  
  62.         sudo -E apt-get -qq clean  
  63.         sudo timedatectl set-timezone "$TZ"  
  64.         sudo mkdir -p /workdir  
  65.         sudo chown $USER:$GROUPS /workdir  
  66.   
  67.     - name: 克隆固件源码  
  68.       working-directory: /workdir  
  69.       run: |  
  70.         df -hT $PWD  
  71.         git clone $REPO_URL -b $REPO_BRANCH openwrt  
  72.         ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt  
  73.         cd openwrt  
  74.         git reset --hard b201c29fa2749a6265ebf0b80ac3a94ad34ba6e4  
  75.   
  76.     - name: 添加外部插件  
  77.       run: |  
  78.         [ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default  
  79.         chmod +x $DIY_P1_SH  
  80.         cd openwrt  
  81.         $GITHUB_WORKSPACE/$DIY_P1_SH  
  82. ##        sed -i 's/KERNEL_PATCHVER:=6.6/KERNEL_PATCHVER:=6.1/g' ./target/linux/x86/Makefile  
  83.   
  84.     - name: 更新外部插件  
  85.       run: cd openwrt && ./scripts/feeds update -a  
  86.   
  87.     - name: 安装外部插件  
  88.       run: cd openwrt && ./scripts/feeds install -a  
  89.   
  90.     - name: 加载个人设置  
  91.       run: |  
  92.         [ -e files ] && mv files openwrt/files  
  93.         [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config  
  94.         chmod +x $DIY_P3_SH  
  95.         cd openwrt  
  96.         $GITHUB_WORKSPACE/$DIY_P3_SH  
  97.   
  98.     - name: 下载固件dL库  
  99.       id: package  
  100.       run: |  
  101.         cd openwrt  
  102.         make defconfig  
  103.         make download -j8  
  104.         find dl -size -1024c -exec ls -l {} \;  
  105.         find dl -size -1024c -exec rm -f {} \;  
  106.   
  107.   
  108.           
  109. #    - name: SSH connection to Actions  
  110. #      uses: P3TERX/ssh2actions@main  
  111. #      if: env.SSH_ACTIONS == 'true' || contains(github.event.action, 'ssh')  
  112.       
  113.       
  114.       
  115.     - name: 正在编译固件  
  116.       id: compile  
  117.       run: |  
  118.         cd openwrt  
  119.         echo -e "$(nproc) thread compile"  
  120.         make -j$(nproc) || make -j1 || make -j1 V=s  
  121.         echo "status=success>> $GITHUB_OUTPUT  
  122.         grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME  
  123.         [ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV  
  124.         echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV  
  125.         echo "FILE_TIME=$(date "+%Y年%m月%d日")" >> $GITHUB_ENV  
  126.         echo "TAG_TIME=$(date +"%Y.%m.%d-%H%M%S")" >> $GITHUB_ENV  
  127.   
  128.     - name: 查看磁盘用量  
  129.       if: (!cancelled())  
  130.       run: df -hT  
  131.   
  132.     - name: 打包整理固件  
  133.       id: organize  
  134.       if: env.UPLOAD_FIRMWARE == 'true' && !cancelled()  
  135.       run: |  
  136.         cd openwrt/bin/targets/*/*  
  137.         rm -rf packages && mkdir packages  
  138.         find -name "*esxi-flat.vmdk*" | xargs -i mv -f {} packages  
  139.         find -name "*kernel.bin*" | xargs -i mv -f {} packages  
  140.         find -name "*rootfs*" | xargs -i mv -f {} packages  
  141.         find -name "*.manifest*" | xargs -i mv -f {} packages  
  142.         find -name "*vmlinuz*" | xargs -i mv -f {} packages  
  143.         find -name "*esxi.vmdk*" | xargs -i mv -f {} packages  
  144.         find -name "*buildinfo*" | xargs -i mv -f {} packages  
  145.         find -name "*json*" | xargs -i mv -f {} packages  
  146.         find -name "*sha256sums*" | xargs -i mv -f {} packages  
  147.         rm -rf packages  
  148.         echo "FIRMWARE=$PWD" >> $GITHUB_ENV  
  149.         echo "status=success>> $GITHUB_OUTPUT  
  150.   
  151.     - name: 打包上传固件  
  152.       uses: actions/upload-artifact@main  
  153.       if: steps.organize.outputs.status == 'success' && !cancelled()  
  154.       with:  
  155.         name: OpenWrt-Mini${{ env.DEVICE_NAME }}${{ env.FILE_DATE }}  
  156.         path: ${{ env.FIRMWARE }}  
  157.   
  158.     - name: 创建发布标签  
  159.       id: tag  
  160.       if: env.UPLOAD_RELEASE == 'true' && !cancelled()  
  161.       run: |  
  162.         echo "release_tag=${{ env.TAG_TIME }}" >> $GITHUB_OUTPUT  
  163.         touch release.txt  
  164.         echo "OpenWrt-Mini_ X86_64-R23.7.7-自用版" >> release.txt  
  165.         echo "默认地址:192.168.0.111" >> release.txt  
  166.         echo "默认密码:无密码" >> release.txt  
  167.         echo "插件清单:ShadowSocksR Plus+,PassWall,OpenClash" >> release.txt  
  168.         echo "status=success>> $GITHUB_OUTPUT  
  169.   
  170.     - name: 发布新版固件  
  171.       uses: softprops/action-gh-release@master  
  172.       if: steps.tag.outputs.status == 'success' && !cancelled()  
  173.       env:  
  174.         GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}  
  175.       with:  
  176.         name: ${{ env.FILE_TIME }} -R23.7.7-自用版  
  177.         tag_name: ${{ steps.tag.outputs.release_tag }}  
  178.         body_path: release.txt  
  179.         files: ${{ env.FIRMWARE }}/*   
  180.   
  181.     - name: 清理编译流程  
  182.       uses: Mattraks/delete-workflow-runs@main  
  183.       with:  
  184.         retain_days: 0  
  185.         keep_minimum_runs: 2  
  186.   
  187.     - name: 删除旧版固件  
  188.       uses: dev-drprasad/delete-older-releases@master  
  189.       if: env.UPLOAD_RELEASE == 'true' && !cancelled()  
  190.       with:  
  191.         keep_latest: 10  
  192.         delete_tags: true  
  193.       env:  
  194.         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  
完了点击Actions,选择配置文件点 run worklows 开始编译,等待2个小时,就可以看到自己编译出来的固件了。
注意:首次编译之前必须新建一个release,比如v1.0.0,才可以正常生成release。
详细代码可以参考:https://github.com/iii80/My-lede

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):