我试图在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
...我已经使用GitLab CI在线林特工具来检查我的语法,它是正确的。
但当我推送密码时,它总是抱怨:
'test' job needs 'maven-build' job
but it was not added to the pipeline
You can also test your .gitlab-ci.yml in CI LintGitLab CI根本没有运行。
更新:最后我成功了。我认为needs的位置是敏感的,把所有的needs移到stage下面,它可以工作。我的原始脚本包括它们之间的一些其他配置。
发布于 2021-05-19 20:26:10
相互依赖的工作需要有同样的限制!
在您的例子中,这意味着共享相同的only目标:
stages:
- build
- test
maven-build:
stage: build
only:
- merge_requests
- master
- branches
test:
stage: test
needs: [ "maven-build" ]
only:
- merge_requests
- master
- branches从我的经验来看,应该适用^^
发布于 2021-08-23 20:53:56
我终于成功了。我认为需要的位置是敏感的,把所有的需求都移到舞台下面,它起作用了。
实际上..。GitLab 14.2 (2021年8月)的情况可能不再是这样:
无台阶管道 在管道配置中使用
needs关键字有助于减少循环时间,方法是忽略阶段排序和运行作业,而不等待其他人完成。 以前,needs只能在不同阶段的作业之间使用。 在这个版本中,我们已经删除了这个限制,这样您就可以在您想要的任何作业之间定义一个needs关系。 因此,您现在可以创建一个完整的CI/CD管道,而无需使用阶段,方法是在每个作业中包含needs以隐式配置执行顺序。 这使您可以定义一个较少冗长的管道,它需要更少的时间来创建,并且可以运行得更快。

发布于 2022-04-27 13:38:59
当触发规则不同时,两个作业中的规则应该是相同或其他情况下,GitLab不能在作业之间创建作业依赖关系。
https://stackoverflow.com/questions/67211211
复制相似问题