支持一键打包全部已适配的 OpenWrt 固件,涵盖全志(微加云)、瑞芯微(贝壳云、我家云、电犀牛 R66S/R68S、Hlink H88K/H66K/H68K/H69K/H28K、瑞莎 5B/E25、西瓜皮等)以及晶晨 S9xxx 系列(S905x3、S905x2、S922x、S905x、S905d、S905、S912 等)设备。
在 .github/workflows 的工作流脚本中引入此 Action 即可进行打包,例如 packaging-openwrt.yml 中的使用方法,代码如下:
- name: Package OpenWrt Firmware
uses: unifreq/openwrt_packit@master
env:
OPENWRT_ARMSR: openwrt/bin/targets/*/*/*rootfs.tar.gz
PACKAGE_SOC: all
KERNEL_VERSION_NAME: 6.1.y_6.12.y
OPENWRT_IP: 192.168.1.1
打包完成后,固件输出在 ${{ env.PACKAGED_OUTPUTPATH }}/* 目录下,可上传至 GitHub Releases,代码如下:
- name: Upload OpenWrt Firmware to Release
uses: ncipollo/release-action@main
with:
tag: openwrt_armsr-armv8_${{ env.PACKAGED_OUTPUTDATE }}
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
token: ${{ secrets.GH_TOKEN }}
body: |
This is OpenWrt firmware for Armv8
* Firmware information
Default IP: 192.168.1.1
Default username: root
Default password: password可对打包文件路径、make.env 配置、内核版本、目标设备 SoC 等参数进行自定义配置。
| 参数 | 默认值 | 说明 |
|---|---|---|
| OPENWRT_ARMSR | 无 | 必选项。设置 openwrt-armsr-armv8-generic-rootfs.tar.gz 的文件路径,可以使用相对路径如 openwrt/bin/targets/*/*/*.tar.gz 或网络文件下载地址如 https://github.com/*/releases/*/*.tar.gz |
| KERNEL_REPO_URL | breakings/OpenWrt | 设置内核下载仓库,格式为 <owner>/<repo>。默认从 breakings 维护的内核 Releases下载。 |
| KERNEL_VERSION_NAME | 6.1.y_6.12.y | 设置内核版本,可查看并选择指定版本。可指定单个内核如 6.1.y,也可选择多个内核用 _ 连接如 6.1.y_6.12.y |
| KERNEL_AUTO_LATEST | true | 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找 KERNEL_VERSION_NAME 指定的内核(如 6.1.y)同系列是否有更新版本,如有则自动更换为最新版。设置为 false 时将使用指定版本内核。 |
| PACKAGE_SOC | s905d_s905x3_beikeyun | 设置打包目标设备的 SOC,默认 all 打包全部设备,可指定单个设备如 s905x3,可选择多个设备用 _ 连接如 s905x3_s905d。各设备的 SoC 代码为:100ask-dshanpi-a1, vplus, cm3, jp-tvbox, beikeyun, l1pro, rock5b, rock5c, e52c, e54c, r66s, r68s, h88k, h88k-v3, ak88, ht2, e20c, e24c, h28k, h66k, h68k, h69k, h69k-max, e25, photonicat, watermelon-pi, yixun-rs6pro, zcube1-max, rk3399, s905, s905d, s905x2, s905x3, s912, s922x, s922x-n2, qemu, diy。说明:s922x-n2 是 s922x-odroid-n2,diy 是自定义设备。 |
| GZIP_IMGS | auto | 设置打包完成后的文件压缩格式,可选值 .gz(默认) / .xz / .zip / .zst / .7z |
| OPENWRT_IP | 192.168.1.1 | 设置 OpenWrt 的默认 IP 地址 |
| SELECT_PACKITPATH | openwrt_packit | 设置 /opt 下的打包目录名称 |
| SELECT_OUTPUTPATH | output | 设置 ${SELECT_PACKITPATH} 目录中固件输出的目录名称 |
| SAVE_OPENWRT_ROOTFS | true | 设置打包完成后是否保留 *-rootfs.tar.gz 文件 |
| SCRIPT_100ASKDSHANPIA1 | mk_rk3576_100ask-dshanpi-a1.sh | 设置打包 rk3576 100ask-dshanpi-a1 的脚本文件名 |
| SCRIPT_VPLUS | mk_h6_vplus.sh | 设置打包 h6 vplus 的脚本文件名 |
| SCRIPT_CM3 | mk_rk3566_radxa-cm3-rpi-cm4-io.sh | 设置打包 rk3566 radxa-cm3-rpi-cm4-io 的脚本文件名 |
| SCRIPT_JPTVBOX | mk_rk3566_jp-tvbox.sh | 设置打包 rk3566 jp-tvbox 的脚本文件名 |
| SCRIPT_BEIKEYUN | mk_rk3328_beikeyun.sh | 设置打包 rk3328 beikeyun 的脚本文件名 |
| SCRIPT_L1PRO | mk_rk3328_l1pro.sh | 设置打包 rk3328 l1pro 的脚本文件名 |
| SCRIPT_ZCUBE1MAX | mk_rk3399_zcube1-max.sh | 设置打包 rk3399 zcube1-max 的脚本文件名 |
| SCRIPT_ROCK5B | mk_rk3588_rock5b.sh | 设置打包 rk3588 rock5b 的脚本文件名 |
| SCRIPT_ROCK5C | mk_rk3588s_rock5c.sh | 设置打包 rk3588s rock5c 的脚本文件名 |
| SCRIPT_E52C | mk_rk3588s_e52c.sh | 设置打包 rk3588s e52c 的脚本文件名 |
| SCRIPT_E54C | mk_rk3588s_e54c.sh | 设置打包 rk3588s e54c 的脚本文件名 |
| SCRIPT_H88K | mk_rk3588_h88k.sh | 设置打包 rk3588 h88k/ak88 的脚本文件名 |
| SCRIPT_H88KV3 | mk_rk3588_h88k-v3.sh | 设置打包 rk3588 h88k-v3 的脚本文件名 |
| SCRIPT_HT2 | mk_rk3528_ht2.sh | 设置打包 rk3528 ht2 的脚本文件名 |
| SCRIPT_E20C | mk_rk3528_e20c.sh | 设置打包 rk3528 e20c 的脚本文件名 |
| SCRIPT_E24C | mk_rk3528_e24c.sh | 设置打包 rk3528 e24c 的脚本文件名 |
| SCRIPT_H28K | mk_rk3528_h28k.sh | 设置打包 rk3528 h28k 的脚本文件名 |
| SCRIPT_RS6PRO | mk_rk3528_rs6pro.sh | 设置打包 rk3528 yixun-rs6pro 的脚本文件名 |
| SCRIPT_H66K | mk_rk3568_h66k.sh | 设置打包 rk3568 h66k 的脚本文件名 |
| SCRIPT_H68K | mk_rk3568_h68k.sh | 设置打包 rk3568 h68k 的脚本文件名 |
| SCRIPT_H69K | mk_rk3568_h69k.sh | 设置打包 rk3568 h69k 的脚本文件名 |
| SCRIPT_R66S | mk_rk3568_r66s.sh | 设置打包 rk3568 r66s 的脚本文件名 |
| SCRIPT_R68S | mk_rk3568_r68s.sh | 设置打包 rk3568 r68s 的脚本文件名 |
| SCRIPT_E25 | mk_rk3568_e25.sh | 设置打包 rk3568 e25 的脚本文件名 |
| SCRIPT_PHOTONICAT | mk_rk3568_photonicat.sh | 设置打包 rk3568 photonicat 的脚本文件名 |
| SCRIPT_WATERMELONPI | mk_rk3568_watermelon-pi.sh | 设置打包 rk3568 watermelon-pi 的脚本文件名 |
| SCRIPT_S905 | mk_s905_mxqpro+.sh | 设置打包 s905 mxqpro+ 的脚本文件名 |
| SCRIPT_S905D | mk_s905d_n1.sh | 设置打包 s905d n1 的脚本文件名 |
| SCRIPT_S905X2 | mk_s905x2_x96max.sh | 设置打包 s905x2 x96max 的脚本文件名 |
| SCRIPT_S905X3 | mk_s905x3_multi.sh | 设置打包 s905x3 multi 的脚本文件名 |
| SCRIPT_S912 | mk_s912_zyxq.sh | 设置打包 s912 zyxq 的脚本文件名 |
| SCRIPT_S922X | mk_s922x_gtking.sh | 设置打包 s922x gtking 的脚本文件名 |
| SCRIPT_S922X_N2 | mk_s922x_odroid-n2.sh | 设置打包 s922x odroid-n2 的脚本文件名 |
| SCRIPT_QEMU | mk_qemu-aarch64_img.sh | 设置打包 qemu 的脚本文件名 |
| SCRIPT_DIY | mk_diy.sh | 设置打包 diy 自定义脚本文件名 |
| SCRIPT_DIY_PATH | 无 | 设置 SCRIPT_DIY 文件的来源路径。可使用网络地址如 https://weburl/mydiyfile 或仓库中的相对路径如 script/mk_s905w_tx3.sh |
| CUSTOMIZE_RK3399 | 无 | 设置自定义 RK3399 设备列表,格式:board1:dtb1/board2:dtb2 |
| WHOAMI | flippy | 设置 make.env 中 WHOAMI 参数的值 |
| OPENWRT_VER | auto | 设置 make.env 中 OPENWRT_VER 参数的值。默认 auto 将自动继承文件中的赋值,设置为其他值时将替换为自定义参数。 |
| SW_FLOWOFFLOAD | 1 | 设置 make.env 中 SW_FLOWOFFLOAD 参数的值 |
| SFE_FLOW | 1 | 设置 make.env 中 SFE_FLOW 参数的值 |
| HW_FLOWOFFLOAD | 0 | 设置 make.env 中 HW_FLOWOFFLOAD 参数的值 |
| ENABLE_WIFI_K504 | 1 | 设置 make.env 中 ENABLE_WIFI_K504 参数的值 |
| ENABLE_WIFI_K510 | 1 | 设置 make.env 中 ENABLE_WIFI_K510 参数的值 |
| DISTRIB_REVISION | R$(date +%Y.%m.%d) | 设置 make.env 中 DISTRIB_REVISION 参数的值 |
| DISTRIB_DESCRIPTION | OpenWrt | 设置 make.env 中 DISTRIB_DESCRIPTION 参数的值 |
打包完成后输出以下 3 个环境变量,供后续工作流步骤使用。由于 GitHub 默认关闭了 fork 仓库的 Workflow 写入权限,上传固件到 Releases 前需要:在个人中心添加 GITHUB_TOKEN,在 fork 仓库中配置 GH_TOKEN 密钥,并启用仓库中的 Workflow 读写权限。
| 参数 | 默认值 | 说明 |
|---|---|---|
| ${{ env.PACKAGED_OUTPUTPATH }} | /opt/openwrt_packit/output | 打包后的固件输出目录路径 |
| ${{ env.PACKAGED_OUTPUTDATE }} | 08.25.1058 | 打包日期 |
| ${{ env.PACKAGED_STATUS }} | success / failure | 打包状态(成功 / 失败) |
此 Action 仅提供 OpenWrt 固件打包服务,你需要自行编译 openwrt-armsr-armv8-generic-rootfs.tar.gz 根文件系统。编译方法可参考 https://github.com/breakingbadboy/OpenWrt