|
本帖最后由 Curious_ 于 2023-3-16 18:24 编辑
我的云编译模板仓库:OpenWrtBuildWorkflows
这个仓库的方法可以用于编译任何仓库、分支、tag的OpenWrt源码。
可以定时触发源码提交检查,在特定源码有更改的时候自动编译。
食用方法:
使用模板仓库生成你自己的仓库后,复制一份.github/workflows/template.yaml,起个你想要的名字,再依照注释把内容按需要更改。需要修改的部分集中在name on env这三个顶级标签下,具体修改方式都有注释。
需要在仓库的根目录下提供用于编译的.config文件,这个文件可以是你在本地机器上使用make menuconfig生成的,文件名字要跟你的workflow文件中配置的一致。
对于没有本地编译环境,不便本地生成.config的朋友,也可以通过在手动触发工作流时把"SSH connection to Actions"修改为true,这样脚本在运行的时候会允许我们开启一个SSH会话连入云编译的虚拟机。连入虚拟机后,我们就可以进入源码目录,使用make menuconfig来生成.config。注意,关闭SSH会话后,脚本会继续往下运行,但由于GitHub的调度限制,继续运行一段时间后工作流就会被销毁。所以开启SSH只能用于生成.config,生成完成后我们需要在虚拟机中使用git把刚刚生成的.config文件推送到工作流仓库的根目录。推送完后把当前的工作流取消掉,重新启动一个工作流就可以正常编译了。这当然比本地生成要复杂一些,但对于手边没有现成编译机器的朋友,偶尔一用还是挺方便的。
注意,无论是自动还是手动触发工作流,脚本都会默认比对本次和上次运行中拉取的源码之间有没有更改,如果没有,不会进行编译。在测试场景下我们经常需要反复多次的编译固件,这时我们需要在手动触发工作流时把"Build new firmware anyway"修改为true,这样编译任务会被强制启动。
如果编译的是活跃开发的分支,测试配置稳定之后,固件自动检查源码更新的周期尽量不要设置太短,避免浪费GitHub的硬件资源。
大体上就是这样,其他细节请参考注释,不过- -注释只写了英文。使用中遇到什么问题,可以来本帖下面询问,我看到会回答。如果长时间未回复,可以联系我GitHub主页上的邮箱。
脚本积极维护,希望管理员看到加个推荐,让有需要的人可以找到。
|
评分
-
查看全部评分
|