Jenkins动态化阶段步骤

Jenkins中如何去根据入参动态化阶段步骤呢?

Groovy语言基础

  1. 定义一个列表变量

    def list = []
    
  2. 定义一个mapkv结构变量

    def map = [:]
    

如何可以动态化阶段步骤

动态化步骤:其实就是,在jenkins pipeline中根据入参或者其他变量列表,动态化的生成步骤列表。比如:在一个job中拉取多个仓库的代码,仓库的数量是不确定的,根据环境变量参数动态任意自定义的。

一、利用parallel函数实现

parallel函数声明式的写法如下:

pipeline {agent nonestages {stage('Run Tests') {parallel {stage('Test On Windows') {agent {label "windows"}steps {bat "run-tests.bat"}post {always {junit "**/TEST-*.xml"}}}stage('Test On Linux') {agent {label "linux"}steps {sh "run-tests.sh"}post {always {junit "**/TEST-*.xml"}}}}}}
}

那如何用代码拼装任务列表呢?其实声明式写法,也是调用一个函数将参数传递。所以就可以定义一个闭包函数列表的方式去调用parallel 函数

代码写法如下:

pipeline {agent anystages {stage("dynamic-steps") {steps {script {def taskList = [:]def list = ["task1", "task2"].toList()for (i = 0; i < list.size(); i++) {echo "${i}"def index = i;def taskName = list[i]taskList["${taskName}"] = {echo("${index}=========${taskName}")}}echo "${toJson(taskList)}"parallel(taskList)}}}}}

其中入参是一个类似mapkv结构。

  1. key: 就是任务的名称
  2. value: 闭包函数,就是要执行的任务函数

在Blue Ocean中的效果大概如下(不是上面代码生成效果图,是我实际应用中产生的效果图):
多任务效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26488.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务 云原生:gRPC 客户端、服务端的通信原理

gRPC Hello World protoc 是 Protobuf 的核心工具&#xff0c;用于编写 .proto 文件并生成 protobuf 代码。在这里&#xff0c;以 Go 语言代码为例&#xff0c;进行 gRPC 相关代码编写。 下载 protoc 工具&#xff1a;https://github.com/protocolbuffers/protobuf/releases&a…

【单谐波非线性振动问题求解器 GUI 】使用单个谐波表示解决 MDOF 非线性振动问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ceph存储的应用

ceph存储的应用 一&#xff1a;创建 CephFS 文件系统 MDS 接口1.服务端操作1&#xff09;在管理节点创建 mds 服务2&#xff09;查看各个节点的 mds 服务3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统4&#xff09;查看mds状态&#xff0c;一个up&#xff0c;其余两个…

Java使用JNI实现C文件的调用

1.使用IDEA新建工程 构建最基本的maven类型就行&#xff0c;文件结构如下&#xff1a; 其中最主要的类如下&#xff1a; package org.linx;public class TestJNI {static {/*** 加载jni库&#xff0c;有一个重要的点就是生成的为libnative.so&#xff0c;下面加载代码需要消…

Python应用实例(二)数据可视化(四)

数据可视化&#xff08;四&#xff09;下载数据 1.CSV文件格式1.1 分析CSV文件头‘1.2 打印文件头及其位置1.3 提取并读取数据1.4 绘制温度图表1.5 在图表中添加日期 从网上下载数据&#xff0c;并对其进行可视化。网上的数据多得令人难以置信&#xff0c;大多未经仔细检查。如…

设计模式day03

01gradle极速安装与配置入门 下载6.8.2版本,配置环境变量 配置镜像仓库 给gradle安装目录下init.d文件夹&#xff0c;放一个init.gradle文件&#xff0c;内容如下&#xff1a; gradle.projectsLoaded {rootProject.allprojects {buildscript {repositories {def JCENTER_URL…

西贝柳斯Sibelius2023旗舰版曲谱大师必备音乐软件

乐谱太复杂&#xff0c;打起来太费时间&#xff1f;革命性的省时功能&#xff0c;如磁性布局和动态分谱&#xff0c;能够快速创作复杂的乐谱。音色库太简陋&#xff0c;找起来麻烦&#xff1f;收藏丰富的音色库供您直接使用&#xff0c;涵盖最广泛的专业级乐器&#xff0c;支持…

TortoiseGit 入门指南08:浏览引用以及在引用间切换

在上一节 创建分支 中&#xff0c;我们学会了在分支上开发新功能&#xff0c;那么随之而来的问题是&#xff1a;如何查看项目又多少分支&#xff1f;如何再切换到主分支&#xff1f;这节来解决这些问题。 在回答之前&#xff0c;需要先了解一个 Git 术语&#xff1a;引用&…

docker-compose安装redis高可用哨兵集群(一主二从三哨兵)

以redis 7.0为例子 直接上代码 docker-compose.yaml version: 3.3 services:master:image: redis:7.0container_name: redis-master#restart: alwayscommand: redis-server --port 6379 --requirepass root --appendonly yes --masterauth root --replica-announce-ip 192.1…

duilib绝对定位与相对定位

文章目录 前言1、绝对位置&#xff08;floattrue&#xff09;2、窗口3、布局及控件4、相对位置&#xff08;floatfalse&#xff09;5、窗口6、布局与控件7、嵌套在布局与控件之中的布局与控件 前言 duilib中窗口&#xff0c;布局&#xff0c;控件等在屏幕上的显示位置都是按照…

mpVue 微信小程序基于vant-weapp 组件的二次封装TForm 表单组件(修改源码插槽使用)

一、前言 1、mpVue微信小程序不支持动态组件&#xff08;<component> &#xff09; 2、mpVue微信小程序不支持动态属性及事件穿透&#xff08;$attrs和$listeners&#xff09; 3、mpVue微信小程序不支持render函数 二、最终效果 三、配置参数&#xff08;Attributes&…

WEB:lottery

背景知识 dirsearch扫描 题目 原题目应该使用dirsearch扫描发现git泄露然后使用Githack复原的但是攻防世界这边直接把源码给了我们 下载附件可得到 打开文件后进行代码审计 function buy($req){require_registered();require_min_money(2);$money $_SESSION[money];$numbers…