当前位置: 首页 > article >正文

gitlab多项目流水线

背景是我有多个项目,希望其中一个项目被触发的时候,联动另外一个项目自动打包。然后我就看文档尝试操作了一下,所以有本文。

官方文档参考:https://gitlab.cn/docs/14.5/jh/ci/pipelines/multi_project_pipelines.html
不知道是不是我使用的方法不对,用上面的文档去操作有报错:(

可以使用gitlab提供的 trigger 方法,通过curl调用接口,触发下游的打包任务,比如:

curl --request POST \
--form "token=$TRIGGER_TOKEN" \
--form "ref=$DOWNSTREAM_BRANCH" \
--form "variables[UPSTREAM_VERSION]=$BUILD_VERSION" \
--form "variables[PIPELINE_SOURCE]=upstream" \
"https://gitlab.yeshen.org/api/v4/projects/$DOWNSTREAM_PROJECT_ID/trigger/pipeline"

注意点有

  1. project在gitlab的项目上有显示,比如 https://gitlab.yeshen.org/yeshen-awesome/yeshen-awesome-sdk,id就是 3

  2. 使用 variables 传递自定义参数到下游仓库,比如 --form “variables[PIPELINE_SOURCE]=upstream”

  3. 下游仓库需要提供token,token可以在 下游项目的 Settings > CI/CD > Pipeline triggers 中生成。

    即在yeshen-awesome项目中生成一个token,在这里: https://gitlab.yeshen.org/yeshen-awesome/yeshen-awesome-sdk/-/settings/ci_cd Pipeline triggers

  4. 上游仓库需配置token,上游项目的 CI/CD 变量 DOWNSTREAM_TRIGGER_TOKEN,在 Settings > CI/CD > Variables 中配置。

    即在testingsdk中配置token,在这里:https://gitlab.yeshen.org/yeshen-upstream/yeshen-upstream-client/-/settings/ci_cd Variables

一份参考的配置可以是如下

上游配置

stages:
  - relase
  - trigger

trigger_downstream:
  stage: trigger
  tags:
    - yeshen-pc
  variables:
    DOWNSTREAM_PROJECT_ID: "3"
    DOWNSTREAM_BRANCH: "branch-13"
    TRIGGER_TOKEN: $DOWNSTREAM_TRIGGER_TOKEN
  script:
    - |
      curl --request POST \
        --form "token=$TRIGGER_TOKEN" \
        --form "ref=$DOWNSTREAM_BRANCH" \
        --form "variables[UPSTREAM_VERSION]=$BUILD_VERSION" \
        --form "variables[PIPELINE_SOURCE]=upstream" \
        "https://gitlab.yeshen.org/api/v4/projects/$DOWNSTREAM_PROJECT_ID/trigger/pipeline"
  rules:
    - if: $CI_COMMIT_TAG
  needs:
    - job: relase_job 
      artifacts: true

下游配置

stages:
  - testing

testing_job:
  stage: testing
  image: yeshen/android_build:1.0.3
  tags:
    - yeshen-pc
  script:
    - echo "version_ $UPSTREAM_VERSION"
    - echo "Start building the sdk...testing"
    - echo "finish build"
  rules:
    - if: $PIPELINE_SOURCE == "upstream"


http://www.kler.cn/a/539580.html

相关文章:

  • 【系统架构设计师】嵌入式系统之JTAG接口
  • (2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型
  • 【redis】数据类型之list
  • 【MQ】Spring3 中 RabbitMQ 的使用与常见场景
  • STM32G474--Whetstone程序移植(单精度)笔记
  • 【Java】线上故障排查实战
  • Vue与Konva:解锁Canvas绘图的无限可能
  • JVM的性能优化
  • 查询已经运行的 Docker 容器启动命令
  • 2、Python面试题解析:如何进行字符串插值?
  • 了解大语言模型的基本原理(一)——Transformer工作原理
  • 动手学深度学习 -- 3.6 数学推演
  • 【C++学习篇】C++11第二期学习
  • Palatir和它的AIP
  • Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明
  • 2025新鲜出炉--前端面试题(一)
  • Transformer基础 多头自注意力机制
  • SQL自学,mysql从入门到精通 --- 第 6 天,sql中的子句使用
  • 开源+降本浅析及Deepseek模型在countdown游戏上的初探
  • 蓝桥杯C语言组:图论问题
  • 大数据项目4:基于spark的智慧交通项目设计与实现
  • 传统营销架构在当下如何进行优化转型?
  • 程序猿成长之路之数据挖掘篇——决策树分类算法(2)——构建决策树
  • transformers学习笔记——初级篇
  • Spring Boot 对接深度求索接口实现知识问答功能
  • 第433场周赛:变长子数组求和、最多 K 个元素的子序列的最值之和、粉刷房子 Ⅳ、最多 K 个元素的子数组的最值之和