我是gitlab CI的新手,所以我仍在努力解决这个问题,但我想知道是否有可能执行以下操作?
开发人员在REPO A中工作
在REPO B中进行质量检查
当来自REPO A的管道启动时,是否可以通过命令并传递变量来触发来自REPO B的管道?
通过这种方式,REPO A中的开发人员可以在项目中进行工作,例如登录表单,但是REPO B可以包含针对所有功能的整个端到端测试套件,因此,如果组建了一个新团队并从事REPO C工作,他们还可以在REPO B中触发测试。
这意味着质量保证始终在一个仓库中工作,如果另一个仓库要进行部署,他们可以调用其测试子集,但每晚REPO B可以使用不同的浏览器,设备等运行完整的端到端套件。>
答案 0 :(得分: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 A 和 REPO C 触发 REPO B 管道,请记住,必须替换 REPO B 项目ID,而不是示例ID。
答案 1 :(得分:1)
有多项目管道的概念,它完全允许您期望的行为。
在您的情况下,这将在Project A和C中
from pynput.mouse import Listener
def on_move(x, y):
pass
def on_click(x, y, button, pressed):
if pressed:
# Your code here
def on_scroll(x, y, dx, dy):
pass
with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
listener.join()
答案 2 :(得分:1)
@ doctor-wh,请阅读GitLab团队的这篇文章,它会以我需要的方式为我提供帮助。
当有人在REPO B上推送与REPO A相关的代码时,我需要启动REPO A的CI流程,因此这对我很有帮助。
https://docs.gitlab.com/ee/ci/multi_project_pipelines.html
希望它会对您有所帮助。