我正在尝试在 Gitlab CI yaml 配置文件中的作业之间添加需求。
stages:
- build
- test
- package
- deploy
maven-build:
stage: build
only:
- merge_requests
- master
- branches
...
test:
stage: test
needs: [ "maven-build" ]
only:
- merge_requests
- master
...
docker-build:
stage: package
needs: [ "test" ]
only:
- master
...
deploy-stage:
stage: deploy
needs: [ "docker-build" ]
only:
- master
...
deploy-prod:
stage: deploy
needs: [ "docker-build" ]
only:
- master
when: manual
...
Run Code Online (Sandbox Code Playgroud)
我已经使用 GitLab CI 在线 lint 工具来检查我的语法,它是正确的。
但是当我推送代码时,它总是抱怨:
'test' job needs 'maven-build' job
but it was not added to the pipeline
You can also test your .gitlab-ci.yml in CI Lint
Run Code Online (Sandbox Code Playgroud)
GitLab CI 根本没有运行。
更新:我终于做到了。我认为这个needs位置很敏感,needs在 下全部移动stage,它起作用了。我的原始脚本在它们之间包含了一些其他配置。
小智 8
相互依赖的 CI 作业需要具有相同的限制!
在您的情况下,这意味着共享相同的only目标:
stages:
- build
- test
maven-build:
stage: build
only:
- merge_requests
- master
- branches
test:
stage: test
needs: [ "maven-build" ]
only:
- merge_requests
- master
- branches
Run Code Online (Sandbox Code Playgroud)
根据我的经验,这应该有效^^
\n\n最后我成功了。我觉得需求位置很敏感,把所有需求移到台下,有效
\n
实际上... GitLab 14.2(2021 年 8 月)可能不再是这种情况:
\n\n\n无级管道
\n\n
needs在管道配置中使用关键字可以忽略阶段顺序并运行作业而无需等待其他作业完成,从而有助于缩短周期时间。以前,
\nneeds只能在不同阶段的作业之间使用。在此版本中,我们\xe2\x80\x99 删除了此限制,以便您可以定义
\nneeds所需的任何作业之间的关系。因此,您现在可以通过
\n\n\nneeds在每个作业中包含隐式配置执行顺序来创建完整的 CI/CD 管道,而无需使用阶段。
\n这使您可以定义一个不太冗长的管道,创建时间更少并且运行速度更快。
| 归档时间: |
|
| 查看次数: |
1321 次 |
| 最近记录: |