gitlab CI是否有可能触发另一个管道?

问题描述 投票:1回答:2

我是gitlab CI的新手,所以我仍在努力解决这个问题,但是我想知道是否有可能执行以下操作?

开发人员在REPO A中工作

回购B中的质量检查工作

当来自REPO A的管道启动时,是否可以通过命令触发REPO B的管道并传递变量?

以这种方式,REPO A中的开发人员可以在项目中工作,例如登录表单,但是REPO B可以包含针对所有功能的整个端到端测试套件,因此,如果组建了一个新团队并从事REPO C,他们也可以在REPO B中触发测试。

这意味着QA始终在一个仓库中工作,如果另一个仓库想要进行部署,他们可以调用其测试子集,但是每晚REPO B可以使用不同的浏览器,设备等运行完整的端到端套件。

automation gitlab-ci qa
2个回答
1
投票

Triggering pipelines through the API的文档中有一种方法使我们能够在当前运行的管道中使用GitLab API触发另一个管道:

这种触发方式只能在内部调用时使用 .gitlab-ci.yml,并创建可见的依赖管道关系 在管道图上。例如:

build_docs:   
    stage: deploy   
    script:
        - curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://gitlab.example.com/api/v4/projects/9/trigger/pipeline   
    only:
        - tags

以这种方式触发的管道还公开了一个特殊变量: CI_PIPELINE_SOURCE=pipeline

如果要从REPO AREPO C触发REPO B管道,请记住,必须替换上述URL中的REPO B项目ID,而不是示例ID。


0
投票

[多项目管道的概念正好允许您期望的行为。

请参见https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#creating-multi-project-pipelines-from-gitlab-ciyml

在您的情况下,这将在项目A和C中

externalTest: 
    variables: 
        ENVIRONMENT: aVariableValue
    stage: deploy 
    trigger: my-namespace/repo-b
© www.soinside.com 2019 - 2024. All rights reserved.