Action 迁移 CNB 的疑问#38
Github Action 通过 strategy.matrix 并行测试多 OS /语言版本组合,这个在 CNB 上如何实现?同样,如果想要运行非容器化任务(如 macOS 应用编译)这个如何实现?
jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] node: [14, 16, 18] steps: - name: Check Node.js ${{ matrix.node }} on ${{ matrix.os }} run: node --version - ... build_macos_app: runs-on: macos-12 steps: - name: Build Xcode project run: xcodebuild -project *** - ...
Action 提供 Self-hosted Runner 自托管运行器,这样可访问内网服务(数据库,私有仓库等)。后续是否支持自托管?后续能否类似 act 这样可以在本地进行调试?
jobs: build: runs-on: [self-hosted, gpu]
Action 支持通过 upload-artifact/download-artifact 实现产物跨流水线传递。CNB 现在可以通过 Volume 来解决这个问题,但是感觉不是很方便,希望官方能出一个解决方案。
jobs: define-matrix: runs-on: ubuntu-latest outputs: colors: ${{ steps.colors.outputs.colors }} steps: - name: Define Colors id: colors run: | echo 'colors=["red", "green", "blue"]' >> "$GITHUB_OUTPUT" produce-artifacts: runs-on: ubuntu-latest needs: define-matrix strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Define Color env: color: ${{ matrix.color }} run: | echo "$color" > color - name: Produce Artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.color }} path: color consume-artifacts: runs-on: ubuntu-latest needs: - define-matrix - produce-artifacts strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Retrieve Artifact uses: actions/download-artifact@v4 with: name: ${{ matrix.color }} - name: Report Color run: | cat color
Action 支持通过 concurrency 控制一组作业/工作流运行的并发。例如,一组作业/工作流在运行时,主分支上有了新的推送(紧急修复 bug),这时应该取消上一个并发组的运行,并且启动新运行。
concurrency
Action 支持通过 working-directory 设置默认的工作目录,CNB 中好像没有(或许没找到...)
working-directory
CNB 现在好像只支持作业级环境变量/密钥设置,不支持设置工作流级环境变量/密钥?
下面的应该不属于这个主题~
Pipeline
下面的两个问题也回答了吧:
围观围观
@haorwen(haorwen)
详见流水线语法 | 云原生构建指定环境变量。可以定义一组环境变量,在任务执行中使用。对当前 Pipeline 内的非插件任务均有效。
文档里给出的是作业级,也就是不支持工作流级的?
@haorwen(haorwen) 详见流水线语法 | 云原生构建指定环境变量。可以定义一组环境变量,在任务执行中使用。对当前 Pipeline 内的非插件任务均有效。 文档里给出的是作业级,也就是不支持工作流级的?
@Ryanjie(Jaime) pipeline就是流水线级啊()
目前暂时没有官方方式实现,你可以在写工作流的时候进行检测,如果有在运行的工作流就用api接口进行停止
这个 api 接口是?或者说相关接口文档在哪?
@Ryanjie(Jaime) 文档地址https://api.cnb.cool/,可以先查询构建列表然后停止一个构建
@haorwen(haorwen) 我以为我弄错了... cnb 现在的就是设置任务级的环境变量,并不是流水线级的。
https://cnb.cool/prevailna/workflows-test/-/build/logs/cnb-du6-1j2jqcodb 这个是测试
@Ryanjie(Jaime) Pipeline: 表示一个流水线,包含一个或者多个阶段 Stage,每个 Stage 依次执行。 Stage: 表示一个构建阶段,可以由一个或者多个任务 Job 组成。 Job: 最基本的任务执行单元。
你的意思是想设置整个文件级别的env?所有pipeline共用吗,那么目前暂不支持,你可以使用yaml的锚点语法实现差不多的效果
@Ryanjie(Jaime) Pipeline: 表示一个流水线,包含一个或者多个阶段 Stage,每个 Stage 依次执行。 Stage: 表示一个构建阶段,可以由一个或者多个任务 Job 组成。
@haorwen(haorwen) 所以 VAR 应该定义为为工作流级的吧(范围:所有工作流)
看来只能使用 yaml 的语法了。补充:import 虽然没有 schema 错误提示,但是实验后也不能读取
谢谢大佬的耐心解答 @haorwen(haorwen)
Github Action 通过 strategy.matrix 并行测试多 OS /语言版本组合,这个在 CNB 上如何实现?同样,如果想要运行非容器化任务(如 macOS 应用编译)这个如何实现?
jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] node: [14, 16, 18] steps: - name: Check Node.js ${{ matrix.node }} on ${{ matrix.os }} run: node --version - ... build_macos_app: runs-on: macos-12 steps: - name: Build Xcode project run: xcodebuild -project *** - ...Action 提供 Self-hosted Runner 自托管运行器,这样可访问内网服务(数据库,私有仓库等)。后续是否支持自托管?后续能否类似 act 这样可以在本地进行调试?
jobs: build: runs-on: [self-hosted, gpu]Action 支持通过 upload-artifact/download-artifact 实现产物跨流水线传递。CNB 现在可以通过 Volume 来解决这个问题,但是感觉不是很方便,希望官方能出一个解决方案。
jobs: define-matrix: runs-on: ubuntu-latest outputs: colors: ${{ steps.colors.outputs.colors }} steps: - name: Define Colors id: colors run: | echo 'colors=["red", "green", "blue"]' >> "$GITHUB_OUTPUT" produce-artifacts: runs-on: ubuntu-latest needs: define-matrix strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Define Color env: color: ${{ matrix.color }} run: | echo "$color" > color - name: Produce Artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.color }} path: color consume-artifacts: runs-on: ubuntu-latest needs: - define-matrix - produce-artifacts strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Retrieve Artifact uses: actions/download-artifact@v4 with: name: ${{ matrix.color }} - name: Report Color run: | cat color