首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何不顾需要下载gitlab管道中的所有工件

如何不顾需要下载gitlab管道中的所有工件
EN

Stack Overflow用户
提问于 2022-11-16 11:01:10
回答 2查看 22关注 0票数 0

下面的示例使用needs在second_job之后启动first_job。然而,second_job不再能够访问pre_job的伪制品。显然,我们可以添加needs: [pre_job, first_job],但是在.pre阶段有多个作业,我们希望下载它们的所有工件(而不知道哪些作业是准确运行的)。

是否存在needs只影响作业顺序而不影响工件下载的设置?

代码语言:javascript
代码运行次数:0
运行
复制
pre_job:
  stage: .pre
  script:
    - touch pre.txt
  artifacts:
    paths:
      - pre.txt

first_job:
  stage: check
  script:
    - touch first.txt
  artifacts:
    paths:
      - first.txt


second_job:
  stage: check
  script:
    - cat pre.txt
  needs:
    - first_job
EN

回答 2

Stack Overflow用户

发布于 2022-11-17 23:31:42

这并不好看,但如果您知道可以使用需求:可选关键字在前期运行的每一个可能的作业,就可以做到这一点。您需要将可能需要工件的每个作业作为可选依赖项列出。

示例:

代码语言:javascript
代码运行次数:0
运行
复制
second_job:
  stage: check
  script:
    - cat pre.txt
  needs:
    - job: first_job
      artifacts: true
    - job: pre_job
      artifacts: true
      optional: true
    - job: other_pre_job
      artifacts: true
      optional: true
    - job: another_pre_job
      artifacts: true
      optional: true
     ... <etc> ...

如果您能够定义可能需要工件的每个可能的作业,那么这将允许second_job有条件地依赖于在需要中定义的每个作业,因为optional关键字允许作业不存在。

在上面的示例中,如果用作业first_jobother_pre_job触发管道,那么second_job将等待前两个作业完成并从它们接收工件。

票数 1
EN

Stack Overflow用户

发布于 2022-11-16 11:52:00

嗯..。看来这根本不可能

当作业使用需要时,默认情况下它不再从以前的阶段下载所有工件,因为有需求的作业可以在早期阶段完成之前启动。使用configuration,您只能从需求配置中列出的作业下载工件。

来自https://docs.gitlab.com/ee/ci/yaml/index.html#needsartifacts

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

https://stackoverflow.com/questions/74459320

复制
相关文章

相似问题

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