logo
2
10
WeChat Login

如何将现有的 GitHub Actions 工作流迁移到 CNB ,以实现更高效的 OpenWrt 固件自动构建。#36

Resolved
created 2025-08-13
Edit

如何将现有的 GitHub Actions 工作流迁移到 CNB 平台,以实现更高效的 OpenWrt 固件自动构建。

GitHub Actions 工作流在迁移过程中遇到了一些配置和功能上的障碍,尤其是在 .cnb.yml 的语法适配和平台特性差异方面。

GitHub Actions 使用 YAML 的 jobs 和 steps 结构,而 CNB 使用 stages 和 tasks,并且对脚本格式和环境变量的处理方式略有不同。

CNB 是否支持类似 docker buildx 的多架构构建?希望能够在 CNB 中构建并打包多个架构的 OpenWrt 固件或 Docker 镜像。

GitHub Actions 示例:多架构构建

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [x86_64, armv7, aarch64]
steps:
- name: Build multi-arch image
run: docker buildx build --platform linux/${{ matrix.arch }} ...

在 CNB 中如何实现类似功能?目前CNB好像只能通过单一任务构建,无法并行或区分架构。

如何 CNB 平台正确上传指定目录下的构建产物?是否支持自定义 artifact 名称或路径??

Developer

cnb 支持 docker buildx

#3

added labels
有效问题
assigned self
Administrator

能力上是支持的,无论是 buildx 多架构构建,还是并行构建的能力。

  1. buildx 多架构构建可以参见 @sixther(段超) 上方引用的 #3

  2. 并行构建上,CNB 不支持 matrix 这种语法,但是多个 pipeline 是可以并行跑的,比如

main: # 触发分支
  push: # 触发事件,对应一个构建,可以包含多条 Pipeline。即可以是数组,也可以是对象。
    - name: pipeline-1 # Pipeline 结构体
      stages:
        - name: stage-1 # Stage 结构体
          jobs:
            - name: job-1 # Job 结构体
              script: echo
    - name: pipeline-2 # Pipeline 结构体
      stages:
        - name: stage-2 # Stage 结构体
          jobs:
            - name: job-2 # Job 结构体
              script: echo
  1. 语法简化方面,没有使用 matrix,而是使用了 YAML 的高阶语法来简化书写,具体可参见 https://cnb.cool/examples/ecosystem/you-dont-konw-cnb-yaml
added labels
擂主团已回答
Resolved ISSUE
Assignee
(苗兆丰)
Label
擂主团已回答
有效问题
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant