coolsnowwolf / lede

Lean's LEDE source
Other
29.85k stars 19.53k forks source link

OpenWrt CI 在线集成编译环境使用教程 #2200

Closed KFERMercer closed 4 years ago

KFERMercer commented 4 years ago

借助 GitHub Actions 的 OpenWrt 在线集成自动编译.

项目地址

实时编译状态: Build

支持自动定制固件, 自动调整依赖及生成配置文件, 无需上传配置. 兼容 coolsnowwolf/lede 以及 OpenWrt trunk.

同时支持自动合并推送上游提交 (也就是自动更新), 直接把merge-upstream.yml放入.github/workflows/即可 (默认上游为 coolsnowwolf/lede, 高级玩家请自行改写).

感谢P3TERX珠玉在前.


这个CI脚本和P3TERX/Actions-OpenWrt的同样是云编译, 有什么不同?

这个 CI 脚本可以帮助你在你的 OpenWrt 分支下构建当前库的Op固件, 无需上传配置文件, 不依赖外挂配置脚本, 真正的一次配置终生使用.

P3TERX/Actions-OpenWrt 的优势在于, 其可以独立于文件库存在, 可以快速搭建起可用的编译配置; 同时对新手极其友好. 但是由于 OpenWrt make configure 自身机制的缘故, 生成的配置文件鲁棒性较差, 需要经常重新生成上传配置, 有形中加重了维护负担, 使得使用起来不是很优雅, 但是强烈建议基础薄弱的玩家使用.

这个CI脚本适合哪些人?

使用教程:

在一切开始前, 你需要的是:

相关文章: 作者-糖炒栗子

1. 注册GitHub账号并开启GitHub Actions (自行搜索方法).

2. fork coolsnowwolf/lede 或者 OpenWrt trunk.

3. 上传openwrt-ci.ymlmerge-upstream.yml/.github/workflows/下.

4. 定制固件:

如果你希望定制你的固件:

代码里的注释部分详细介绍了如何在脚本中客制化你的固件. 简单来说, 你只需要解除注释相应行即可.

我已经准备一个正确的编写示例, 此配置基于 Lean 最新代码, 开启了所有预先写好的定制选项, 同时已经经过测试可用. 如果你缺乏对自己的信心, 可以随意借鉴.

5. 大功告成.

集成编译环境会自动开始编译. 现在返回你的库首页, 点击页面上方的Actions按钮就可以查看进度.

如何下载到编译完成的固件?

进入Actions标签页后, 如果相应的集成活动顺利完成 (显示为绿色), 点击页面右上方的Artifacts即可看到你的固件 (通常是一个压缩包). 点击即可开始下载.

db-one commented 4 years ago

牛逼感谢

peter-tank commented 4 years ago

照着撸了个最近的官包,打128M 大内存补丁后的 WNDR4300 和 WNDR3700 好像哪里不对,2小时后出来 firmware 600M,熟悉的指点指点

KFERMercer commented 4 years ago

照着撸了个最近的官包,打128M 大内存补丁后的 WNDR4300 和 WNDR3700 好像哪里不对,2小时后出来 firmware 600M,熟悉的指点指点

貌似是op trunk本身的问题. (可能吧) 虽然你的代码写的很乱, 但是逻辑还是在的.

能不能把编译时候实际用到的完整版的config文件也导出来,一起打包下载了?? 这次看到又添加了一些新的驱动,这些是我不需要的。。。 我想要下次编译的时候,禁止这些新的驱动添加到固件里面。。。 但是,我又不想在本地启动虚拟机来git pull。。。我都打算删掉虚拟机了。。。

这个很容易就可以做到. 另外有一件很重要的事, 请查阅https://github.com/KFERMercer/OpenWrt-CI/issues/9

bonnyandsky commented 4 years ago

你好,请问怎么把你的merge-upstream.yml文件放到我的目录下?我看好像没办法下载,

peter-tank commented 4 years ago

@KFERMercer 怎么从trunk抓指定tag的版本 ? 我从 github 和 git.openwrt.org clone 或wget *.tar.gz 后 git checkout 各种玩法,死活都是内核不对版。。。只有 master 才是最正确的

KFERMercer commented 4 years ago

@KFERMercer 怎么从trunk抓指定tag的版本 ? 我从 github 和 git.openwrt.org clone 或wget *.tar.gz 后 git checkout 各种玩法,死活都是内核不对版。。。只有 master 才是最正确的

由于没看到错误信息所以猜不出来

sunlanhao commented 4 years ago

你好,请问我想通过云编译加入魔改版的ssr,这样添加代码可以吗? S@%~V0A} DBH%ZA)XE)LP5M jo

KFERMercer commented 4 years ago

你好,请问我想通过云编译加入魔改版的ssr,这样添加代码可以吗? S@%~V0A} DBH%ZA)XE)LP5M jo

不知道, 没用过这个

bonnyandsky commented 4 years ago

我做了一个分支,名字叫ledenew,我打算以后同步L大的代码都用分支来同步,请问openwrt-ci.yml和merge-upstream.yml需要修改对应那些字段

Crazy365 commented 4 years ago

@KFERMercer 请教大佬,我在编译时需要手动输入一个 Y 进行确认(见下面日志),现在自动化无法输入,导致编译失败。不知有没有办法自动输入? Support legacy servers which use less secure dialects (CIFS_ALLOW_INSECURE_LEGACY) [Y/n/?] (NEW) aborted!

KFERMercer commented 4 years ago

@KFERMercer 请教大佬,我在编译时需要手动输入一个 Y 进行确认(见下面日志),现在自动化无法输入,导致编译失败。不知有没有办法自动输入? Support legacy servers which use less secure dialects (CIFS_ALLOW_INSECURE_LEGACY) [Y/n/?] (NEW) aborted!

已修复

Crazy365 commented 4 years ago

@KFERMercer 请教大佬,我在编译时需要手动输入一个 Y 进行确认(见下面日志),现在自动化无法输入,导致编译失败。不知有没有办法自动输入? Support legacy servers which use less secure dialects (CIFS_ALLOW_INSECURE_LEGACY) [Y/n/?] (NEW) aborted!

已修复

还是过不去,这里好像必须有输入才行。

KFERMercer commented 4 years ago

还是过不去,这里好像必须有输入才行。

加一行:

CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
Crazy365 commented 4 years ago

还是过不去,这里好像必须有输入才行。

加一行:

CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y

试了一下,还是不行

peter-tank commented 4 years ago

    - name: Firmware build_env keys set
      uses: actions/cache@master
      id: build_env
      with:
        path: .
        key: ${{ runner.os }}-openwrt-build-${{ hashFiles('**/.config') }}

    - name: Try make package/pkg/compile in cache
      if: steps.build_env.outputs.cache-hit != 'true'
      env:
        DEBIAN_FRONTEND: noninteractive
      run: |
        make package/nun-lean-pkg/compile source=path/to/source V=s

这样是不是就可以利用之前有编译环境增加编译自己的包?应该还不到2G限制吧。

KFERMercer commented 4 years ago

试了一下,还是不行

手里没k3所以没法测试. 真不行就把V=s删掉. 会强制选择默认.

    - name: Firmware build_env keys set
      uses: actions/cache@master
      id: build_env
      with:
        path: .
        key: ${{ runner.os }}-openwrt-build-${{ hashFiles('**/.config') }}

    - name: Try make package/pkg/compile in cache
      if: steps.build_env.outputs.cache-hit != 'true'
      env:
        DEBIAN_FRONTEND: noninteractive
      run: |
        make package/nun-lean-pkg/compile source=path/to/source V=s

这样是不是就可以利用之前有编译环境增加编译自己的包?应该还不到2G限制吧。

理论上可以.. 但是如果大雕修改工具链之类的话可能会翻车...

我没试过所以没发言权, 我会测试一下, 在此之前稳定优先

xinpenghan commented 4 years ago

编译x86,添加以下php环境插件,编译后发现固件里并没有php环境的以下插件 ,这个要怎么解决呢?
CONFIG_PACKAGE_php7-fpm=y CONFIG_PACKAGE_php7-mod-curl=y CONFIG_PACKAGE_php7-mod-gd=y CONFIG_PACKAGE_php7-mod-iconv=y CONFIG_PACKAGE_php7-mod-json=y CONFIG_PACKAGE_php7-mod-mbstring=y CONFIG_PACKAGE_php7-mod-opcache=y CONFIG_PACKAGE_php7-mod-session=y CONFIG_PACKAGE_php7-mod-zip=y

lbbboy commented 4 years ago

编译错误 .config:95:warning: unexpected data: make defconfig 53 Error opening terminal: unknown. 54 /home/runner/work/lede/lede/include/toplevel.mk:136: recipe for target 'menuconfig' failed 55 make[1]: *** [menuconfig] Error 1 56 make[1]: Leaving directory '/home/runner/work/lede/lede' 57 /home/runner/work/lede/lede/include/toplevel.mk:97: recipe for target '.config' failed 58 make: *** [.config] Error 2 麻烦帮排查下错误原因,弄了几次没能解决,谢谢。

peter-tank commented 4 years ago

编译错误 .config:95:warning: unexpected data: make defconfig 53 Error opening terminal: unknown. 54 /home/runner/work/lede/lede/include/toplevel.mk:136: recipe for target 'menuconfig' failed 55 make[1]: *** [menuconfig] Error 1 56 make[1]: Leaving directory '/home/runner/work/lede/lede' 57 /home/runner/work/lede/lede/include/toplevel.mk:97: recipe for target '.config' failed 58 make: *** [.config] Error 2

应当像这样保留注释吧: https://github.com/coolsnowwolf/lede/blob/2252757369baf3c2f526c5c7c3f6e9d57cdd2e79/.github/workflows/openwrt-ci.yml#L100-L105

KFERMercer commented 4 years ago

缩进错误

xynu617 commented 4 years ago

自动更新lean源码失败 从2天前开始的,自动更新的代码没动过

KFERMercer commented 4 years ago

自动更新lean源码失败 从2天前开始的,自动更新的代码没动过

https://github.com/KFERMercer/OpenWrt-CI/issues/36#issuecomment-567799868

请问这个怎么修改内核呢?

需要修改文件

xinpenghan commented 4 years ago

编译了几次Samba4,都是错误,以及强制不编译Samba了,为什么还是错误呢?

yulinsoft commented 4 years ago

还是过不去,这里好像必须有输入才行。

加一行:

CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y

试了一下,还是不行

这个问题你解决了吗,我也是困在这里了。

llfj commented 4 years ago

CIFS_ALLOW_INSECURE_LEGACY 也是一样 要手动输入Y 无法自动化。。怎么解决

dache123 commented 4 years ago

缩进错误

缩进错误

想修改成别的机型该怎么写呢?有范例吗?