我有一个非常具体的方式来让我的项目发挥作用。我将 .bat 文件提交给项目 A,其中包含需要由项目 B 上的 Python 脚本执行操作的参数集合。
我需要在提交新文件时触发项目 A,然后触发项目 B 使用 .bat 文件中的变量运行脚本 (sys.argv[1] - [4]
一旦项目 B 被触发,我希望删除项目 A 中的文件,以便当下一个文件提交到项目 A 时,不会有任何冲突的文件,因为一天内最多可能提交 100 个.bat 文件
我尝试过在 .bat 文件准备好后简单地使用自动电源来触发管道,但由于组织人员的原因,我无法这样做。我尝试过浏览 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
在项目-b 管道中,您可以像这样检索工件:
test:
stage: test
script:
- python myscript.py -input bat1.bat
needs:
- pipeline: $PARENT_PIPELINE_ID
job: build_artifacts
现在您的 python 脚本可以使用 bat 文件,因为它们是在您的管道工作目录中下载的
2。您可以从项目 a 触发项目 b 管道,如下所示:
trigger_job:
trigger:
project: project-group/project-b
strategy: depend
如果您想要的话,
strategy: depend
会让作业等待子管道的结果。
最后,您可以定义一个作业来删除 *bat 文件,但您需要创建一个令牌才能使用 Gitlab API,因为“CI_JOB_TOKEN”无权修改存储库。
通过使用
stages
或 needs
关键字,您必须确保作业以正确的顺序运行