gitlab多项目流水线

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

官方文档参考:https://gitlab.cn/docs/14.5/jh/ci/pipelines/multi_project_pipelines.html

不知道是不是我使用的方法不对,用上面的文档去操作有报错:(

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

sh 复制代码
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 "variablesPIPELINE_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"
相关推荐
极小狐19 小时前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
snow@li19 小时前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
极小狐2 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
DevOps老兵3 天前
AI Infra实战11:模型部署Pipeline——CI/CD自动化
人工智能·ci/cd·ai·自动化·gitlab
极小狐3 天前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
极小狐3 天前
用 Flow 编排 Agent 智能体:极狐GitLab Duo 自定义工作流实战
ai·gitlab·agent·devops·flow·duo
陈皮糖..3 天前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab
11路没有终点4 天前
GitLab CI/CD 高级模式实战:include 模板库 / trigger 子流水线 / matrix 并行
ci/cd·gitlab
11路没有终点4 天前
GitLab CE CI/CD 入门指引手册:从零搭建第一条流水线
ci/cd·gitlab
2501_928996224 天前
Agent 开发的 API 选型:从 Function Calling 到多模型协作的中科热备底层逻辑
服务器·重构·gitlab