gitlab 只在子管道中运行一个作业
gitlab only runs one job in child-pipeline
我有一个 gitlab-ci.yml 创建并触发一个子 .yml
stages:
- child-pipeline-generator
- child-pipeline-trigger
generate-child-pipeline:
stage: child-pipeline-generator
tags:
- GroupRunner
script:
- $(./generate-build.ps1) *>&1 > child-pipeline-gitlab-ci.yml
- (Get-Content child-pipeline-gitlab-ci.yml) | Set-Content child-pipeline-gitlab-ci.yml -Encoding UTF8
artifacts:
paths:
- child-pipeline-gitlab-ci.yml
trigger-child-pipeline:
stage: child-pipeline-trigger
trigger:
include:
- artifact: child-pipeline-gitlab-ci.yml
job: generate-child-pipeline
strategy: depend
生成的 yml 看起来像
build_1:
tags:
- GroupRunner
script:
- echo 'build_1'
build_2:
tags:
- GroupRunner
script:
- echo 'build_2'
但是当执行时只有作业 1 (build_1) 出现在下游列表中
原来问题出在 powershell 输出的编码上。 powershell 5 的默认编码是 UFT16BOM,我对 UTF8 的重新编码导致 UFT8BOM,gitlab 无法正确处理。我的解决方案是用 ASCII 编码。
我无法解释的是为什么它能够正确解释第一份工作,我认为编码会导致全有或全无的结果。可能是第一份工作后的 CRLF-CRLF 导致了错误
我有一个 gitlab-ci.yml 创建并触发一个子 .yml
stages:
- child-pipeline-generator
- child-pipeline-trigger
generate-child-pipeline:
stage: child-pipeline-generator
tags:
- GroupRunner
script:
- $(./generate-build.ps1) *>&1 > child-pipeline-gitlab-ci.yml
- (Get-Content child-pipeline-gitlab-ci.yml) | Set-Content child-pipeline-gitlab-ci.yml -Encoding UTF8
artifacts:
paths:
- child-pipeline-gitlab-ci.yml
trigger-child-pipeline:
stage: child-pipeline-trigger
trigger:
include:
- artifact: child-pipeline-gitlab-ci.yml
job: generate-child-pipeline
strategy: depend
生成的 yml 看起来像
build_1:
tags:
- GroupRunner
script:
- echo 'build_1'
build_2:
tags:
- GroupRunner
script:
- echo 'build_2'
但是当执行时只有作业 1 (build_1) 出现在下游列表中
原来问题出在 powershell 输出的编码上。 powershell 5 的默认编码是 UFT16BOM,我对 UTF8 的重新编码导致 UFT8BOM,gitlab 无法正确处理。我的解决方案是用 ASCII 编码。 我无法解释的是为什么它能够正确解释第一份工作,我认为编码会导致全有或全无的结果。可能是第一份工作后的 CRLF-CRLF 导致了错误