[英]Gitlab-CI multi-project-pipeline
目前我正在尝试了解 Gitlab-CI 多项目管道。 如果另一个管道已经完成,我想实现运行管道。
示例:我有一个项目nginx
保存在命名空间baseimages
,其中包含一些配置,如 fast-cgi-params。 ci 文件如下所示:
stages:
- release
- notify
variables:
DOCKER_HOST: "tcp://localhost:2375"
DOCKER_REGISTRY: "registry.mydomain.de"
SERVICE_NAME: "nginx"
DOCKER_DRIVER: "overlay2"
release:
stage: release
image: docker:git
services:
- docker:dind
script:
- docker build -t $SERVICE_NAME:latest .
- docker tag $SERVICE_NAME:latest $DOCKER_REGISTRY/$SERVICE_NAME:latest
- docker push $DOCKER_REGISTRY/$SERVICE_NAME:latest
only:
- master
notify:
stage: notify
image: appropriate/curl:latest
script:
- curl -X POST -F token=$CI_JOB_TOKEN -F ref=master https://gitlab.mydomain.de/api/v4/projects/1/trigger/pipeline
only:
- master
现在我想让多个项目依赖这个图像,如果我的 baseimage 发生变化,例如新的 nginx 版本,让它们重建。
baseimage
|
---------------------------
| | |
project1 project2 project3
如果我向另一个项目添加触发器并在 $GITLAB_CI_TOKEN 中插入生成的令牌,则外部管道将启动,但没有文档中所示的组合图( https://docs.gitlab.com/ee/ci/multi_project_pipelines.html )
如何显示完整的管道图? 我是否必须将依赖于我的 baseimage 的每个项目添加到 baseimage 的 CI 文件中,或者是否可以在每个项目中订阅 baseimage-pipline?
多项目管道是GitLab Premium 9.3 中引入的付费功能,只能使用 GitLab 的 Premium 或 Silver 模型访问。
在深入研究文档之后,我发现了一个小句子,其中指出 Gitlab CE 提供标记为 Core-Feature 的功能。
我们有 50 多个 Gitlab 软件包需要它。 我们过去所做的是将提交推送到下游包,等待 CI 完成,然后将另一个提交推送到上游包,等待 CI 完成等。这非常耗时。
您可以做的另一件事是手动触发构建,您可以手动确定顺序。
如果这些都不适合你或者你想要更好的方法,我构建了一个工具来帮助做到这一点,称为Gitlab Pipes 。 我在内部使用了好几个月,并意识到人们需要这样的东西,所以我做了工作将其公之于众。
基本上它会侦听 Gitlab 通知,当它看到对包的提交时,它会读取.gitlab-pipes.yml
文件以确定项目依赖项。 它将能够构建项目的依赖关系图并在下游提交上构建消费者包。
文档在这里,它有点告诉你它是如何工作的。 然后主应用程序网站就在这里。
如果您单击版本历史记录...
来自multi_project_pipelines它会显示。
在 GitLab 12.8 的所有层中都可用。
13.10-pre
多项目管道可视化被标记为高级,但是在我的 ee 版本中,下游/上游链接的可视化是有效的。
所以参考使用桥接作业触发下游管道
在 GitLab 11.8 之前,需要实现一个管道作业,负责发出 API 请求以触发不同项目中的管道。
在 GitLab 11.8 中,GitLab 提供了一个新的 CI/CD 配置语法来简化这项任务,并避免需要 GitLab Runner 来触发跨项目管道。 以下说明配置桥接作业:
rspec:
stage: test
script: bundle exec rspec
staging:
variables:
ENVIRONMENT: staging
stage: deploy
trigger: my/deployment
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.