提问人:Connor 提问时间:11/17/2023 更新时间:11/17/2023 访问量:29
GitLab 在 2 个项目之间触发
GitLab triggers between 2 projects
问:
我有一个非常具体的方式,我需要我的项目来工作。我有 .bat 文件被提交到项目 A,其中包含一组参数,这些参数需要由项目 B 上的 Python 脚本操作。
我需要在提交新文件时触发项目 A,然后触发项目 B 使用 .bat 文件中的变量运行脚本 (sys.argv[1] - [4]
触发项目 B 后,我希望删除项目 A 中的文件,以便在下一个文件提交到项目 A 时没有任何冲突文件,因为一天内最多可以提交 100 个 .bat 文件
一旦 .bat 文件准备就绪,我尝试简单地使用 power automate 来触发管道,但是由于组织家伙,我无法这样做。我尝试浏览 GitLab wiki,这似乎是可能的,但不清楚我的 .gitlab-ci.yml 是如何在每个项目上构建的,以满足我的特定需求
答:
对我来说,目前还不完全清楚 bat 和 python 脚本应该如何交互以及如何定义变量。
但通常您可以使用下游管道,您可以在其中从父管道的项目中检索 .bat 文件,并在作业完成后从存储库中删除 bat 文件。
1. 将 bat 另存为 project-a 中的管道工件:
build_artifacts:
stage: build
artifacts:
paths:
- bat1.bat
- bat2.bat
- bat2.bat
在 project-b 管道中,您可以检索工件,如下所示:
test:
stage: test
script:
- python myscript.py -input bat1.bat
needs:
- pipeline: $PARENT_PIPELINE_ID
job: build_artifacts
现在,您的 python 脚本可以使用 bat 文件,因为它们已下载到您的 pipelines workdir 中
2. 你可以像这样从 project-a 触发 project-b 管道:
trigger_job:
trigger:
project: project-group/project-b
strategy: depend
如果需要,则使作业等待子管道的结果。strategy: depend
最后,您可以定义一个作业来删除 *bat 文件,但您需要创建一个令牌才能使用 Gitlab API,因为“CI_JOB_TOKEN”无权修改存储库。
通过使用关键字,您必须确保作业以正确的顺序运行stages
needs
评论