我是gitlab CI的新手,所以我仍在努力解决这个问题,但是我想知道是否有可能执行以下操作?
开发人员在REPO A中工作
回购B中的质量检查工作
当来自REPO A的管道启动时,是否可以通过命令触发REPO B的管道并传递变量?
以这种方式,REPO A中的开发人员可以在项目中工作,例如登录表单,但是REPO B可以包含针对所有功能的整个端到端测试套件,因此,如果组建了一个新团队并从事REPO C,他们也可以在REPO B中触发测试。
这意味着QA始终在一个仓库中工作,如果另一个仓库想要进行部署,他们可以调用其测试子集,但是每晚REPO B可以使用不同的浏览器,设备等运行完整的端到端套件。
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 A和REPO C触发REPO B管道,请记住,必须替换上述URL中的REPO B项目ID,而不是示例ID。
[多项目管道的概念正好允许您期望的行为。
在您的情况下,这将在项目A和C中
externalTest:
variables:
ENVIRONMENT: aVariableValue
stage: deploy
trigger: my-namespace/repo-b