gpt4 book ai didi

gitlab - 我可以引用 gitlab 管道中的另一个项目而不是克隆它吗?

转载 作者:行者123 更新时间:2023-12-02 18:38:06 25 4
gpt4 key购买 nike

我对 gitlab pipeline 完全陌生,所以我不确定最好的方法是什么。我已经阅读了有关子模块和依赖项、触发其他管道的内容,但我很难理解什么有助于我在这里尝试实现的目标。

我有project_b,它是project_a的子模块。在project_b的.gitlab-ci.yml中,project_a当前正在被克隆,然后project_b被移动到子模块通常位于project_a中的位置:

...
default:
...
before_script:
- git clone (project_a)
- mv project_a /src
- rm -rf /src/submodules/project_b/*
- mount --bind /src/submodules/project_b
...

这是因为project_b依赖于project_a。

不过,据我了解,这意味着project_b是project_a的下游。

我不想每次运行project_b管道时都克隆整个project_a存储库。

我已经看到了大量有关为依赖项目触发下游管道的信息,但我唯一能找到的似乎与我的案例相关的是不久前提出的关于 gitlab 缺乏触发上游管道的功能的问题反而: Upstream triggering in Gitlab-CI aka pipeline dependencies

这个功能已经添加了吗?因为我确实在网上找不到任何信息。否则,关于如何绕过克隆整个project_a存储库的任何建议?我可能完全不在这儿,但我想知道的一件事是,是否有某种方法可以让project_b触发project_a的特定管道,只做我需要它做的事情来测试project_b?

如有任何建议,我们将不胜感激,谢谢!

最佳答案

Gitlab CI/CD multi-project pipelines没有上游和下游的内在概念,因此您只需在 trigger 关键字中引用项目名称即可创建一个触发另一个管道的管道:

# inside project B .gitlab-ci.yml

# this stage will trigger project A pipeline to run
merge_requests:
stage: test
trigger: my/project_a

您还可以使用rules关键字来运行下游管道中的特定阶段。

# in project A .gitlab-ci.yml

# this will never run when triggered by project B
merge_requests:
stage: test
script: echo "test some things"
rules:
- if: '$CI_PIPELINE_SOURCE == "trigger"'
when: never

# this stage will always run when triggered by project B
merge_request_downstream:
stage: test
rules:
- if: '$CI_PIPELINE_SOURCE == "trigger"'
script: echo "test some specific project B things"

因此,您可以将项目 B 的特定测试放入 merge_request_downstream 脚本中。希望这能回答你的问题。我不太确定这比在项目 B 脚本中克隆项目 A 更好,但这就是您通过多项目管道来完成它的方式。

关于gitlab - 我可以引用 gitlab 管道中的另一个项目而不是克隆它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68441840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com