找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 7849|回复: 39

GitHub云编译介绍&答疑

[复制链接]
本帖最后由 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主页上的邮箱。

脚本积极维护,希望管理员看到加个推荐,让有需要的人可以找到。

评分

参与人数 3恩山币 +5 收起 理由
校友*** + 2 让我们一起面朝大海、花开花落…….
白白*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
a*** + 2 几亿网民,我们俩竟然神奇的在恩山相遇了!.

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
热心,谢谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

为什么编译同一个配置,有时生成大小不一样的固件?而且使用上没问题。

点评

能详细说说吗  详情 回复 发表于 2023-3-16 14:15
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
keben 发表于 2023-3-16 06:49
为什么编译同一个配置,有时生成大小不一样的固件?而且使用上没问题。

能详细说说吗

点评

同样.config,生成的文件大小相差十多mb,刷完机功能有没问题。  详情 回复 发表于 2023-3-16 16:21
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报


同样.config,生成的文件大小相差十多mb,刷完机功能有没问题。

点评

你的配置贴一下  详情 回复 发表于 2023-3-16 18:20
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
keben 发表于 2023-3-16 16:21
同样.config,生成的文件大小相差十多mb,刷完机功能有没问题。

你的配置贴一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

老哥,我Compile the firmware的时候报错:

make[2]: *** [package/Makefile:70: package/install] Error 255
make[1]: *** [package/Makefile:111: /workdir/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.package_install] Error 2

make[2]: Leaving directory '/workdir/openwrt'
make[1]: Leaving directory '/workdir/openwrt'
make: *** [/workdir/openwrt/include/toplevel.mk:230: world] Error 2


这是我的仓库地址,https://github.com/yhsrzbg/OpenWrtBuildWorkflows,能帮忙看看么

点评

另外提醒一点,在比较新的官方源码下集成openclash的话,需要手动y luci-compat,不然你的固件luci登录界面会崩溃  详情 回复 发表于 2023-3-17 21:43
很简单,你日志贴的地方不对,往上翻翻日志就知道怎么回事了 你编译luci-app-openclash,它依赖dnsmasq-full,但menuconfig还自动y了dnsmasq,这两个包是不能共存的,把dnsmasq取消了就行了  详情 回复 发表于 2023-3-17 21:34
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
rzbg 发表于 2023-3-17 20:07
老哥,我Compile the firmware的时候报错:

make[2]: ***  Error 255

很简单,你日志贴的地方不对,往上翻翻日志就知道怎么回事了
你编译luci-app-openclash,它依赖dnsmasq-full,但menuconfig还自动y了dnsmasq,这两个包是不能共存的,把dnsmasq取消了就行了
  1. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/etc/hotplug.d/ntp/25-dnsmasqsec
  2. Configuring libopenssl-devcrypto.
  3.         But that file is already provided by package  * dnsmasq
  4. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/etc/init.d/dnsmasq
  5.         But that file is already provided by package  * dnsmasq
  6. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/lib/dnsmasq/dhcp-script.sh
  7.         But that file is already provided by package  * dnsmasq
  8. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/sbin/dnsmasq
  9.         But that file is already provided by package  * dnsmasq
  10. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/acl.d/dnsmasq_acl.json
  11.         But that file is already provided by package  * dnsmasq
  12. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/dnsmasq/dhcpbogushostname.conf
  13.         But that file is already provided by package  * dnsmasq
  14. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/dnsmasq/rfc6761.conf
  15.         But that file is already provided by package  * dnsmasq
  16. * opkg_install_cmd: Cannot install package dnsmasq-full.
  17. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/etc/hotplug.d/ntp/25-dnsmasqsec
  18.         But that file is already provided by package  * dnsmasq
  19. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/etc/init.d/dnsmasq
  20.         But that file is already provided by package  * dnsmasq
  21. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/lib/dnsmasq/dhcp-script.sh
  22.         But that file is already provided by package  * dnsmasq
  23. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/sbin/dnsmasq
  24.         But that file is already provided by package  * dnsmasq
  25. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/acl.d/dnsmasq_acl.json
  26.         But that file is already provided by package  * dnsmasq
  27. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/dnsmasq/dhcpbogushostname.conf
  28.         But that file is already provided by package  * dnsmasq
  29. * check_data_file_clashes: Package dnsmasq-full wants to install file /workdir/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-mediatek/usr/share/dnsmasq/rfc6761.conf
  30.         But that file is already provided by package  * dnsmasq
  31. * opkg_install_cmd: Cannot install package luci-app-openclash.
复制代码
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
rzbg 发表于 2023-3-17 20:07
老哥,我Compile the firmware的时候报错:

make[2]: ***  Error 255

另外提醒一点,在比较新的官方源码下集成openclash的话,需要手动y luci-compat,不然你的固件luci登录界面会崩溃

点评

谢谢老哥指导  详情 回复 发表于 2023-3-18 02:57
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

Curious_ 发表于 2023-3-17 21:43
另外提醒一点,在比较新的官方源码下集成openclash的话,需要手动y luci-compat,不然你的固件luci登录界 ...

谢谢老哥指导
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主,我想问问,我编译出的产物,只有kernel.bin和sysupgrade.bin。好像还少了factory.bin,是需要在config里配置么

点评

一般不需要配置吧 你是什么机器 用nand闪存和uboot的机器会有ubi后缀的固件,那个就是factory  详情 回复 发表于 2023-3-18 21:25
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
rzbg 发表于 2023-3-18 15:58
楼主,我想问问,我编译出的产物,只有kernel.bin和sysupgrade.bin。好像还少了factory.bin,是需要在confi ...

一般不需要配置吧
你是什么机器
用nand闪存和uboot的机器会有ubi后缀的固件,那个就是factory

点评

mt7981的机器,360t7,我也觉得很奇怪 用的这个仓库的7981分支的源码 源码  详情 回复 发表于 2023-3-19 00:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

Curious_ 发表于 2023-3-18 21:25
一般不需要配置吧
你是什么机器
用nand闪存和uboot的机器会有ubi后缀的固件,那个就是factory

mt7981的机器,360t7,我也觉得很奇怪

用的这个仓库的7981分支的源码
源码

点评

我看了一下,你这个机器的factory底包就不是从这个源码能编译出来的 它是别人专门修改的用来在官方固件和openwrt之间过度的  详情 回复 发表于 2023-3-19 04:30
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 Curious_ 于 2023-3-19 04:32 编辑
rzbg 发表于 2023-3-19 00:16
mt7981的机器,360t7,我也觉得很奇怪

用的这个仓库的7981分支的源码

我看了一下,你这个机器的factory底包就不是从这个源码能编译出来的
它是别人专门修改的用来在官方固件和openwrt之间过度的
这个问题和编译以及工作流没关系

点评

,emmmm,我重新搞了下config,还是编译出来了。。。。 不过又有新的问题,我看openwrt论坛上也有人碰到过,nnds服务启动会报 这个错,解决办法是手动安装bind-host。 顺便我还找到了源码 但具体为什么  详情 回复 发表于 2023-3-20 20:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 07:53

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表