Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【教程】会本地编译的情况下,怎么用GitHub Actions云编译? #2288

Closed
lietxia opened this issue Dec 4, 2019 · 16 comments
Closed

Comments

@lietxia
Copy link

lietxia commented Dec 4, 2019

为啥写这个

  1. 我看到其他2个教程把【怎么选机型】的部分略过了,这个很蛋疼,
    因为并不是每个人都要编译x86固件,而且每个机型的机型写法都不相同,
    你一个个的告诉他们哪个机型怎么写很麻烦反而是直接make menuconfig产生.config文件反而更简单

  2. 其他2个教程是让你fork源码,但是你fork的话,不会自动和lean的项目同步。等于说你要想办法解决冲突+想办法同步上游

基于以上两点,我是比较推荐用P3TERX的actions代码的,简单说就是编译的时候抓取一次lean的项目,这样你一直是最新的。

前提

  1. 已经会本地编译
  2. 有GitHub账号

第1步

打开自己编译目录,先和大屌源码同步一下

 git pull
 ./scripts/feeds update -a
 ./scripts/feeds install -a

然后执行 make menuconfig 选好后执行

make defconfig
./scripts/diffconfig.sh > seed.config

这样配置的差异部分就写入seed.config这个文件了
在命令行可以输入cat seed.config查看这个文件,也可以用别的软件打开
反正你先复制一下这个seed.config的文本内容,后面步骤要
image

第2步

  1. 打开 https://github.com/P3TERX/Actions-OpenWrt fork这个项目
    image

2.进入自己项目Actions页面
image

点击绿色的按钮

image

  1. 之后在自己fork出来的项目里的网页里创建一个新文件(点击Create new file)
    image

  2. 然后把前面提到的seed.config文件的内容粘贴进来,文件名写.config
    image

  3. 然后直接点提交
    image

第3步

其实已经没有第三步了,当你修改.config文件的时候,他就会触发自动编译,点击Actions就能看到编译的状况

要下载固件的话,等他编译完(一般需要2小时)

  1. 进项目的Actions页面
  2. 点页面左侧的Build OpenWrt查看编译详情
  3. 页面Artifacts有个OpenWrt firmware就是你要的固件( OpenWrt packages是插件包※没啥用)
    image

详细的教程可以看https://p3terx.com/archives/build-openwrt-with-github-actions.html

@KFERMercer
Copy link
Contributor

KFERMercer commented Dec 4, 2019

OpenWrt-CI现在已经可以自动更新上游并推送了. 至于为什么不支持直接读取.config, 我在教程里说过了, 但是我承认说的确实不太明白, 在这里我解释一下. 实际上是基于这几点考虑:

  • 直接读取.config会造成后期依赖混乱. (这是最重要的一点. 在不断的update配置文件的过程中, 势必会提高混乱度. 不利于配置可控.)
    • 这个问题很重要, 属于任何自己编译固件的人都需要了解的. 我可能会展开说下, 但是连续爆肝几天我已经累了(待编辑).
  • 由于需要直接在首层目录下直接添加一个.config, 会随着克隆到本地而取代默认配置.
  • 补充上一条, 实际上, 在根目录下添加任何文件都是需要经过慎重考虑的.
  • P3的脚本已有此功能.
  • 我做这个脚本的初衷是伸手党友好以及自用, P3的脚本确实很方便, 但是不适合开发者.

其实我一直在推荐基础薄弱的玩家去使用P3的脚本.

@iamggs
Copy link

iamggs commented Dec 5, 2019

我看@P3TERX教程,自己的编译环境生成.config后可以直接上传使用,不需要通过diffconfig.sh来找出差异部分上传,两者有何区别呢?

@lietxia
Copy link
Author

lietxia commented Dec 5, 2019

我看@P3TERX教程,自己的编译环境生成.config后可以直接上传使用,不需要通过diffconfig.sh来找出差异部分上传,两者有何区别呢?

diffconfig出来的比较小,只有差异部分。
.config原本是隐藏文件而且文件很长很大,这么操作一下方便一些。

区别用一个例子解释,(使用旧配置编译,用到新版的时候有区别。如果都是用最新源码产生的就没区别)

  1. 我选了samba插件
    make memuconfig出来的完整配置文件:会写着启用samba
    而diffconfig比较后,因为和默认选项一样,所以整个一行都没有,也不会写到seed.config里

  2. 然后lean更新了一个插件cifsd,用来取代samba和samba4,把samba的默认启用取消了。

如果直接用diffconfig产生的旧的seed.config直接编译的话:
samba消失,cifsd编进来了(重建.config的时候,samba因为默认值变成不选择了,所以新固件samba会消失。cifsd因为是默认值所以会编译进来)

如果用make menucongfig产生的旧的.config文件直接编译:
就会变成samba和cifsd一起编译进来

@iamggs
Copy link

iamggs commented Dec 5, 2019

我看@P3TERX教程,自己的编译环境生成.config后可以直接上传使用,不需要通过diffconfig.sh来找出差异部分上传,两者有何区别呢?

diffconfig出来的比较小,只有差异部分。
.config原本是隐藏文件而且文件很长很大,这么操作一下方便一些。

区别用一个例子解释,(使用旧配置编译,用到新版的时候有区别。如果都是用最新源码产生的就没区别)

  1. 我选了samba插件
    make memuconfig出来的完整配置文件:会写着启用samba
    而diffconfig比较后,因为和默认选项一样,所以整个一行都没有,也不会写到seed.config里
  2. 然后lean更新了一个插件cifsd,用来取代samba和samba4,把samba的默认启用取消了。

如果直接用diffconfig产生的旧的seed.config直接编译的话:
samba消失,cifsd编进来了(重建.config的时候,samba因为默认值变成不选择了,所以新固件samba会消失。cifsd因为是默认值所以会编译进来)

如果用make menucongfig产生的旧的.config文件直接编译:
就会变成samba和cifsd一起编译进来

感谢解答!

@RealKiro
Copy link

RealKiro commented Dec 5, 2019

基于以上两点,我是比较推荐用P3TERX的actions代码的,简单说就是编译的时候抓取一次lean的项目,这样你一直是最新的。

😯我是萌新,村里刚通网

Actions-OpenWrt对于上传自定义package是无效的,如果想进阶添加自己专属的定制可以试试build-openwrt

@P3TERX
Copy link

P3TERX commented Dec 5, 2019

基于以上两点,我是比较推荐用P3TERX的actions代码的,简单说就是编译的时候抓取一次lean的项目,这样你一直是最新的。

我是萌新,村里刚通网

Actions-OpenWrt对于上传自定义package是无效的,如果想进阶添加自己专属的定制可以试试build-openwrt

如果你是直接 push 到仓库,那么确实无效,因为我已经删除了相关代码。但这并不代表不能添加,你可以以拉取代码仓库的方式去添加,相关的使用方法可以去看我的博客。如果使用上有什么问题,欢迎随时提出来,后续我会持续改进我的方案。

@uoow
Copy link

uoow commented Dec 6, 2019

OpenWrt-CI现在已经可以自动更新上游并推送了. 至于为什么不支持直接读取.config, 我在教程里说过了, 但是我承认说的确实不太明白, 在这里我解释一下. 实际上是基于这几点考虑:

  • 直接读取.config会造成后期依赖混乱. (这是最重要的一点. 在不断的update配置文件的过程中, 势必会提高混乱度. 不利于配置可控.)

    • 这个问题很重要, 属于任何自己编译固件的人都需要了解的. 我可能会展开说下, 但是连续爆肝几天我已经累了(待编辑).
  • 由于需要直接在首层目录下直接添加一个.config, 会随着克隆到本地而取代默认配置.

  • 补充上一条, 实际上, 在根目录下添加任何文件都是需要经过慎重考虑的.

  • P3的脚本已有此功能.

  • 我做这个脚本的初衷是伸手党友好以及自用, P3的脚本确实很方便, 但是不适合开发者.

其实我一直在推荐基础薄弱的玩家去使用P3的脚本.

请问那个upstream的脚本会自动与L大的源码同步?是定时的还是什么时候?它自动同步完后会自动编译一次吗?

@wujunze
Copy link

wujunze commented Feb 10, 2020

不错哦

@cfso1234
Copy link

虽然有点一知半解,但是感觉大神就是大神,考虑问题比我这样的萌新全面多了

@rodso
Copy link

rodso commented Mar 3, 2020

最近几天编译的不能下载了是怎么回事,那个Build OpenWrt不能点进去了。。。

@EnnawYang
Copy link
Contributor

最近几天编译的不能下载了是怎么回事,那个Build OpenWrt不能点进去了。。。

连这个都要到这里问了?

@lietxia
Copy link
Author

lietxia commented Mar 4, 2020

最近几天编译的不能下载了是怎么回事,那个Build OpenWrt不能点进去了。。。

临时解决方法

按f12打开控制台,切换到console(或者叫控制台),输入以下代码回车

(function () {
    var a = document.querySelectorAll("a.link-gray-dark.css-truncate.css-truncate-target");
    for (var i = a.length; i--;) { a[i].innerText = "openwrt"; }
})()

image

彻底解决方法

检查yaml文件的

#=================================================
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: P3TERX
# Blog: https://p3terx.com
#=================================================

name: Build OpenWrt

这里的名字是不是删掉了

@EnnawYang
Copy link
Contributor

最近几天编译的不能下载了是怎么回事,那个Build OpenWrt不能点进去了。。。

临时解决方法

按f12打开控制台,切换到console(或者叫控制台),输入以下代码回车

(function () {
    var a = document.querySelectorAll("a.link-gray-dark.css-truncate.css-truncate-target");
    for (var i = a.length; i--;) { a[i].innerText = "openwrt"; }
})()

image

彻底解决方法

检查yaml文件的

#=================================================
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: P3TERX
# Blog: https://p3terx.com
#=================================================

name: Build OpenWrt

这里的名字是不是删掉了

如果以release方式触发的话删除当前release就能显示名字了

@ycg31
Copy link

ycg31 commented Mar 12, 2020

我看@P3TERX教程,自己的编译环境生成.config后可以直接上传使用,不需要通过diffconfig.sh来找出差异部分上传,两者有何区别呢?

diffconfig出来的比较小,只有差异部分。
.config原本是隐藏文件而且文件很长很大,这么操作一下方便一些。

区别用一个例子解释,(使用旧配置编译,用到新版的时候有区别。如果都是用最新源码产生的就没区别)

  1. 我选了samba插件
    make memuconfig出来的完整配置文件:会写着启用samba
    而diffconfig比较后,因为和默认选项一样,所以整个一行都没有,也不会写到seed.config里
  2. 然后lean更新了一个插件cifsd,用来取代samba和samba4,把samba的默认启用取消了。

如果直接用diffconfig产生的旧的seed.config直接编译的话:
samba消失,cifsd编进来了(重建.config的时候,samba因为默认值变成不选择了,所以新固件samba会消失。cifsd因为是默认值所以会编译进来)

如果用make menucongfig产生的旧的.config文件直接编译:
就会变成samba和cifsd一起编译进来

如果说我要禁用Lean大默认选中的插件呢 在config里加入 =n吗?还是is not set ? 如果实现 make memuconfig中M的功能 只编译成ipk但不进入固件呢,是=m还是=“!”?

@kml0798
Copy link

kml0798 commented Jul 16, 2023

为什么新建了.config之后action没反应呢?在此之前我修改了默认的仓库地址到了我fork的仓库,跟这个有关系吗?action里手动开始可以吗?

@siren202101
Copy link

有没有大佬教教GitHub Actions云编译如何把指定的ipk也发布出来?
例如ssp或passwall

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests