首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将需求关系添加到GitLab CI yaml,但得到了一个错误:作业没有添加到管道中

将需求关系添加到GitLab CI yaml,但得到了一个错误:作业没有添加到管道中
EN

Stack Overflow用户
提问于 2021-04-22 10:11:16
回答 4查看 12.3K关注 0票数 26

我试图在Gitlab CI yaml配置文件中添加作业之间的需求。

代码语言:javascript
复制
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在线林特工具来检查我的语法,它是正确的

但当我推送密码时,它总是抱怨:

代码语言:javascript
复制
    '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

GitLab CI根本没有运行。

更新:最后我成功了。我认为needs的位置是敏感的,把所有的needs移到stage下面,它可以工作。我的原始脚本包括它们之间的一些其他配置。

EN

回答 4

Stack Overflow用户

发布于 2021-05-19 20:26:10

相互依赖的工作需要有同样的限制!

在您的例子中,这意味着共享相同的only目标:

代码语言:javascript
复制
stages:
  - build
  - test

maven-build:
  stage: build
  only:
    - merge_requests
    - master
    - branches

test:
  stage: test
  needs: [ "maven-build" ]
  only:
    - merge_requests
    - master
    - branches

从我的经验来看,应该适用^^

票数 29
EN

Stack Overflow用户

发布于 2021-08-23 20:53:56

我终于成功了。我认为需要的位置是敏感的,把所有的需求都移到舞台下面,它起作用了。

实际上..。GitLab 14.2 (2021年8月)的情况可能不再是这样:

无台阶管道 在管道配置中使用needs关键字有助于减少循环时间,方法是忽略阶段排序和运行作业,而不等待其他人完成。 以前,needs 只能在不同阶段的作业之间使用。 在这个版本中,我们已经删除了这个限制,这样您就可以在您想要的任何作业之间定义一个needs 关系。 因此,您现在可以创建一个完整的CI/CD管道,而无需使用阶段,方法是在每个作业中包含needs以隐式配置执行顺序。 这使您可以定义一个较少冗长的管道,它需要更少的时间来创建,并且可以运行得更快。

文档问题

票数 6
EN

Stack Overflow用户

发布于 2022-04-27 13:38:59

当触发规则不同时,两个作业中的规则应该是相同或其他情况下,GitLab不能在作业之间创建作业依赖关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67211211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档