gitlab多项目流水线

news/2025/2/11 10:18:02/

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

官方文档参考: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- triggertrigger_downstream:stage: triggertags:- yeshen-pcvariables:DOWNSTREAM_PROJECT_ID: "3"DOWNSTREAM_BRANCH: "branch-13"TRIGGER_TOKEN: $DOWNSTREAM_TRIGGER_TOKENscript:- |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_TAGneeds:- job: relase_job artifacts: true

下游配置

stages:- testingtesting_job:stage: testingimage: yeshen/android_build:1.0.3tags:- yeshen-pcscript:- echo "version_ $UPSTREAM_VERSION"- echo "Start building the sdk...testing"- echo "finish build"rules:- if: $PIPELINE_SOURCE == "upstream"

http://www.ppmy.cn/news/1571133.html

相关文章

安卓基础(方法总结)

instanceof instanceof 是 Java 中的一个 运算符,用来检查一个对象是否是某个类或接口的实例(对象)。它会返回 true 或 false,表示对象是否属于某个类型的实例。 object instanceof ClassName object:要检查的对象…

SQL自学,mysql从入门到精通 --- 第 5 天,对函数的处理

对函数的处理 新建一个成绩表 rootmysqldb 09:39: [d1]> create table score (-> name varchar(30),-> chinese int,-> math int,-> music int,-> team int,-> magic int,-> computer int-> ); Query OK, 0 rows affected (0.01 sec)rootmysqldb…

【JavaEE进阶】Spring MVC(1)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ Maven Maven是⼀个项⽬管理⼯具,通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包. Maven提高了我们的开发效率,减少了bug,Maven提供的功能非常多,我们主…

LINUX——内核

引言 Linux 内核(Kernel)是操作系统的核心,负责管理计算机的硬件资源并为用户空间程序提供基础服务。它是 Linux 生态的“心脏”,驱动着从嵌入式设备到超级计算机的各类系统。理解 Linux 内核的设计原理和核心机制,是…

教程 | Hadoop极简部署指南(Docker-Compose版)

📦 前置环境准备 1. 安装Docker 安装依赖工具 sudo yum -y install yum-utils配置阿里云镜像源(国内加速) sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装社区版Docker sudo yu…

如何开发Vue组件:简明教程

如何开发Vue组件:简明教程 什么是Vue组件?创建Vue组件的基本步骤示例:创建一个简单的按钮组件 什么是Vue组件? Vue.js是一个用于构建用户界面的渐进式框架。Vue组件是Vue应用的基础构建块,它们允许你将UI拆分为独立且…

前端项目打包完成后dist本地起node服务测试运行项目

1、新建文件夹 node-test 将打包dist 文件同步自定义本地服务文件夹node-test 中,安装依赖包。 npm install express serve-static cors 2、新创建服务文件js server.js 构建链接及端口 const express require(express); const path require(path); const co…

JavaScript:CPU缓存预取以及确定数据下直接更改数组length的好处

CPU缓存预取以及确定数据下直接更改数组length的好处 1. CPU 缓存预取(Cache Preloading):CPU 缓存预取:为什么反向填充栈能利用缓存预取: 2. 为什么可以直接改变数组的 length:数组的动态长度:…