Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法
文章目录
- 1. Jenkins的参数化构建
- 1.1.如何使项目参数化
- 1.1.1.打开项目配置:
- 1.1.2.启用参数化构建:
- 1.1.3.添加参数:
- 1.1.4.保存配置:
- 1.1.5.使用参数:
- 1.1.6.触发构建时传递参数:
- 1.2.参数化构建的好处
- 2 .参数配置介绍
- 2 .1. 通用步骤和语法
- `传统方法步骤`
- `脚本式语法`
- `声明式语法`
- 2 .2. String Parameter(字符串参数)
- `传统方法步骤`
- `脚本式pipeline`
- `声明式pipeline`
- `注意事项`
- 2 .3. Choice Parameter(选项参数)
- `传统方法步骤`
- `脚本式pipeline`
- `声明式pipeline`
- 2 .4. Multi-line String Parameter(多行文本)
- `传统方法步骤`
- `脚本式pipeline`
- `声明式pipeline`
- 2 .5. Boolean Parameter(布尔类型参数)
- `传统方法步骤`
- `脚本式pipeline`
- `声明式pipeline`
- 2 .6. List Git Branches(列出git分支)
- `传统方法步骤`
- `脚本式pipeline`
- `声明式pipeline`
- 2 .7. extendedChoice复选框
- `传统方法步骤`
- `脚本式pipeline`
1. Jenkins的参数化构建
Jenkins的参数化构建是一项非常强大的功能,它允许你在触发构建时动态地传递参数给构建过程。这些参数可以影响构建的行为,比如选择不同的分支进行构建、设置环境变量、指定构建版本等。通过参数化构建,你可以使你的Jenkins构建更加灵活和可配置。
1.1.如何使项目参数化
1.1.1.打开项目配置:
在Jenkins的Web界面上,找到你想要参数化的项目,点击它的名称进入项目详情页。
点击左侧的“配置”或“Configure”链接来打开项目配置页面。
1.1.2.启用参数化构建:
在配置页面的“构建”部分或“General”部分(取决于Jenkins的版本和插件),你会看到一个名为“This project is parameterized”或类似的复选框。勾选这个复选框来启用参数化构建。
1.1.3.添加参数:
- 启用参数化构建后,你会看到一个“添加参数”或“Add Parameter”的下拉菜单。从这个菜单中选择你想要添加的参数类型。
- Jenkins提供了多种参数类型,包括字符串参数(String Parameter)、布尔参数(Boolean Parameter)、选择参数(Choice Parameter)、文件参数(File Parameter)等。根据你的需求选择合适的参数类型。
- 对于每个参数,你需要设置它的名称(Name)和描述(Description),以及根据参数类型设置其他必要的属性,比如默认值、可选值等。
1.1.4.保存配置:
设置好所有参数后,点击页面底部的“保存”或“Save”按钮来保存你的配置。
1.1.5.使用参数:
- 在构建脚本或Jenkinsfile中,你可以使用这些参数。对于Freestyle项目,你可以在构建步骤中引用参数,比如使用${PARAM_NAME}来引用名为PARAM_NAME的参数。
- 对于Pipeline项目,你可以在Jenkinsfile中使用params对象来访问参数,比如params.PARAM_NAME。
1.1.6.触发构建时传递参数:
- 当你手动触发构建时(比如点击“立即构建”按钮),Jenkins会提示你输入参数的值。
- 如果你是通过脚本或API触发构建,你也可以在触发时传递参数的值。
1.2.参数化构建的好处
- 灵活性:通过参数化构建,你可以很容易地改变构建的行为,而不需要修改构建脚本或配置。
- 可重用性:你可以为不同的构建场景创建不同的参数集,从而重用同一个构建项目。
- 可维护性:将构建逻辑和参数分离,使得构建逻辑更加清晰和易于维护。
- 安全性:通过参数化构建,你可以更安全地管理敏感信息,比如密码和密钥,因为你可以使用Jenkins的凭据插件来安全地存储和传递这些信息。
2 .参数配置介绍
2 .1. 通用步骤和语法
传统方法步骤


脚本式语法
timestamps {properties ([parameters ([string(name: 'NEW_BRANCH', defaultValue: '' , description:'', trim: true),choice(choices: ['mysql', 'oracle'], description: '''选择数据库类型''', name: 'DATABASE', trim: true),])])
}
timestamps 会在输出日志前面添加时间戳
参数化内容都放入到parameters ([])里面
多行内容用逗号分隔
声明式语法
pipeline {parameters { //参数化构建choice choices: ['true', 'false'], description: '测试', name: 'test'string name: 'NEW_BRANCH', defaultValue: '', description:'', trim: true}
}
多行内容用换行符分隔
声明式语法大部分都可以从Jenkins上获取


以字符串参数为例


2 .2. String Parameter(字符串参数)

传统方法步骤


参数解释:
Name 定义参数的名字,在脚本中可以通过这个名字获取对应的值
Default Value 默认值,即VERSION的默认值为1.0.0
Description 描述信息
Trim the string 去掉值两边的空格,如果值为' 1.0.0 ',那么最终获取到的值为1.0.0
脚本式pipeline
string(name: 'VERSION', defaultValue: '1.0.0' , description:'版本号', trim: true),
注意:取值的方法有两种
println VERSION或者
println params.VERSION
声明式pipeline
parameters {string defaultValue: '1.0.0', description: '版本号', name: 'VERSION', trim: true
}
注意事项
如果没有设置参数名VERSION,那么params.VERSION的值为null如果设置了参数名VERSION,但没有传入值,则params.VERSION的值为空,params.VERSION.size()的值为0
2 .3. Choice Parameter(选项参数)

传统方法步骤

参数解释:
Name 定义参数的名字,在脚本中可以通过这个名字获取对应的值
Choices 可选值,每行代表一项可选值
Description 描述信息
脚本式pipeline
choice(choices: ['mysql', 'oracle'], description: '数据库类型', name: 'DB_TYPE'),
声明式pipeline
parameters {choice choices: ['mysql', 'oracle'], description: '数据库类型', name: 'DB_TYPE'
}
2 .4. Multi-line String Parameter(多行文本)

传统方法步骤

参数解释:
Name 定义参数的名字,在脚本中可以通过这个名字获取对应的值
Default Value 默认值,即VERSION的默认值为192.168.1.2192.168.1.3
Description 描述信息
脚本式pipeline
text(name: 'K8S_NODE', defaultValue: '192.168.1.2192.168.1.3' , description:'k8s节点IP'),
声明式pipeline
parameters {text defaultValue: '192.168.1.2192.168.1.3', description: 'k8s节点IP', name: 'K8S_NODE'
}
2 .5. Boolean Parameter(布尔类型参数)

传统方法步骤

脚本式pipeline
booleanParam(defaultValue: true, description: '是否构建,默认为true', name: 'IS_BUILD'),
声明式pipeline
parameters {booleanParam defaultValue: true, description: '是否构建,默认为true', name: 'IS_BUILD'
}
2 .6. List Git Branches(列出git分支)
依赖插件:List Git Branches Parameter


传统方法步骤


参数解释:
Name 定义参数的名字,在脚本中可以通过这个名字获取对应的值
Repository URL git仓库地址
Credentials 凭据(通常为账号密码),可以点击右边的Add进行配置
Parameter Type 可以选分支或Tag,也可以都选
Tag Filter 过滤tag号
Branch Filter 添加过滤规则;只显示dev和hotfix分支。支持扩展正则.*/y?featureY?-.*、.*/hotfix-DEVOPS.V2.*release$、*/DEVOPS.V[1-2]{1}[0-1]{1}*release
Quick Filter 添加搜索功能
脚本式pipeline
listGitBranches(branchFilter: '.*/dev||.*/hotfix.*', credentialsId: 'a2b624d4-567d-4ff2',defaultValue: '', name: 'BRANCH', quickFilterEnabled: true, remoteURL: 'https://gitee.com/liuhaomin/springcloud.git', selectedValue: 'NONE',sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_BRANCH')
credentialsId,每配置一个凭据就会生成对应的credentialsId,可以到凭据管理处查看
声明式pipeline
parameters {listGitBranches branchFilter: '.*/dev||.*/hotfix.*', credentialsId: 'a2b624d4-567d-4ff2', defaultValue: '', name: 'BRANCH', quickFilterEnabled: true, remoteURL: 'https://gitee.com/liuhaomin/springcloud.git', selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH'
}
2 .7. extendedChoice复选框
参考文章:Jenkins 参数化构建(Extended Choice Parameter)
依赖插件:Extended Choice Parameter

传统方法步骤


脚本式pipeline
properties([parameters([extendedChoice(description: '跳过指定的git工程', multiSelectDelimiter: ',', name: 'SKIP_GIT_PRODUCT', quoteValue: false, saveJSONParameterToFile: false,type: 'PT_CHECKBOX', value: 'web,backend,db',defaultValue: 'web',visibleItemCount: 3),]),])
解释:
multiSelectDelimiter 指定分隔符,这里指定的是逗号
type为PT_CHECKBOX 表示复选框
defaultValue 设置默认值
visibleItemCount 界面展示选项行数,默认为5
jenkins harbor安装
Jenkins参数化构建详解(This project is parameterized)
相关文章:
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
Cerebras 推出 CePO,填补推理与规划能力的关键空白
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
广东省食品销售中高级题库及答案
1.有关食品安全标准的说法正确的是(C)。 A.鼓励性标准 B.推荐性标准 C.强制性标准 D.引导性标准 2.食品经营许可证载明的许可事项发生变化的,食品经营者应当在变化后(D)个工作日内向原发证的食品药品监督管理部门申请变更经营许可。 A.3 B.5 C.7 D.10 3.食品销售经营者对食品…...
JAVA基础-深入理解Java内存模型(一)-- 重排序与先行发生原则(happens-before)
深入理解Java内存模型(一)-- 重排序 很棒的一个关于Java内存模型系列文章,首先感谢作者,转载自深入理解java内存模型系列文章 ,为了方便阅读,做了一些内容整合和重排版。 提纲 Java线程之间的通信对程序…...
【Lambda】java之lambda表达式stream流式编程操作集合
java之lambda表达式&stream流式编程操作集合 1 stream流概念1.1 中间操作1.1.1 无状态操作1.1.2 有状态操作 1.2 终端操作1.2.1 非短路操作1.2.2 短路操作 2 steam流的生成2.1 方式一:数组转为stream流2.2 方式二:集合转为steam流2.3 方式三…...
家具购物小程序+php
基于微信小程序的家具购物小程序的设计与实现 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的家具购物小程序的设计与实现的开发全过程。通过分析基于微信小程序的家具购物小程序的设计与实…...
【GIS教程】使用GDAL-Python将tif转为COG并在ArcGIS Js前端加载-附完整代码
目录 一、数据格式 二、COG特点 三、使用GDAL生成COG格式的数据 四、使用ArcGIS Maps SDK for JavaScript加载COG格式数据 一、数据格式 COG(Cloud optimized GeoTIFF)是一种GeoTiff格式的数据。托管在 HTTP 文件服务器上,可以代替geose…...
VB.net进行CAD二次开发(二)与cad交互
开发过程遇到了一个问题:自制窗口与控件与CAD的交互。 启动类,调用非模式窗口 Imports Autodesk.AutoCAD.Runtime Public Class Class1 //CAD启动界面 <CommandMethod("US")> Public Sub UiStart() Dim myfrom As Form1 New…...
【NLP 11、Adam优化器】
祝你先于春天, 翻过此间铮铮山峦 —— 24.12.8 一、Adam优化器的基本概念 定义 Adam(Adaptive Moment Estimation)是一种基于梯度的优化算法,用于更新神经网络等机器学习模型中的参数。它结合了动量法(Momentum&…...
51单片机应用开发(进阶)---串口接收字符命令
实现目标 1、巩固UART知识; 2、掌握串口接收字符数据; 3、具体实现目标:(1)上位机串口助手发送多字符命令,单片机接收命令作相应的处理(如:openled1 即打开LED1;closeled1 即关…...
redis 怎么样删除list
在 Redis 中,可以使用以下方法删除列表或列表中的元素: 1. 删除整个列表 使用 DEL 命令删除一个列表键: DEL mylist这个命令会删除键 mylist 及其值(无论 mylist 是一个列表还是其他类型的键)。 2. 删除列表中的部分…...
【数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】
目录😋 任务描述 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现快速排序算法。 测试说明 平台会对你编写的代码进行测试: 测试输入示例: 10 6 8 7 9 0 1 3 2 4 5 (说明:第一行是元素个数&a…...
npm或yarn包配置地址源
三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装:yarn install 注意…...
STUN服务器用于内网NAT的方案
在内网中部署 STUN 服务器的场景通常用于处理多层 NAT 或内网客户端之间的通信需求,尤其是在大企业或学校等复杂网络环境下。通过 STUN 服务器,可以帮助客户端设备检测和适配 NAT 转换规则,进而支持 WebRTC 或其他实时通信技术的正常运行。 …...
Linux 简单命令总结
1. 简单命令 1.1. ls 列出该目录下的所有子目录与文件,后面还可以跟上一些选项 常用选项: ・-a 列出目录下的所有文件,包括以。开头的隐含文件。 ・-d 将目录象文件一样显示,而不是显示其下的文件。如:ls -d 指定目…...
Vue.js组件开发:提升你的前端工程能力
Vue.js 是一个用于构建用户界面的渐进式框架,它允许开发者通过组件化的方式创建可复用且易于管理的代码。在 Vue.js 中开发组件是一个直观且高效的过程,下面我将概述如何创建和使用 Vue 组件,并提供一些最佳实践。 1. 创建基本组件 首先&am…...
使用 Pandas 读取 JSON 数据的五种常见结构解析
文章目录 引言JSON 数据的五种常见结构1. split 结构2. records 结构3. index 结构4. columns 结构5. values 结构 引言 在日常生活中,我们经常与各种数据打交道,无论是从网上购物的订单信息到社交媒体上的动态更新。JSON(JavaScript Object…...
C++鼠标轨迹算法(鼠标轨迹模拟真人移动)
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Go mysql驱动源码分析
文章目录 前言注册驱动连接器创建连接交互协议读写数据读数据写数据 mysqlConncontext超时控制 查询发送查询请求读取查询响应 Exec发送exec请求读取响应 预编译客户端预编译服务端预编译生成prepareStmt执行查询操作执行Exec操作 事务读取响应query响应exec响应 总结 前言 go…...
GNSS误差源及差分定位
GNSS误差源: (一)卫星星历误差 由星历信息所得出的卫星位置坐标与实际位置坐标的偏差就是星历误差。星历信息是由 GPS 地面部分测量计算后传入空间部分的。由于卫星在运动中要受到各种摄动力的作用, 而地面部分又很难精确测量这些作用力,…...
Keil MDK Debug 命令行常用命令
适用:Keil MDK-ARM (uVision5),进入 Debug 模式后,下方的 Command 窗口或 View → Command Window 打开。一、断点管理 (BKPT / BS / BL) 硬件断点 (Breakpoint Set) BS <func> ; 在函数入口设断点 BS <func&…...
基于SpringBoot+Vue的CRM客户管理系统毕设
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot与Vue框架的CRM客户管理系统以解决传统客户关系管理中存在的信息孤岛现象与业务流程低效问题。当前企业客户管理普遍面临数据…...
构建企业级安全运维体系:从SSH堡垒机到自动化管控平台
1. 项目概述:从“GMSSH/GMClaw”看现代远程访问与管理的演进最近在和一些做基础设施和运维的朋友交流时,他们频繁提到一个组合词:“GMSSH/GMClaw”。乍一听,这像是一个内部代号或者某个新工具的名字。深入聊下去才发现,…...
TDAD时间序列异常检测实战:从算法原理到生产部署
1. 项目概述:从零开始理解TDAD最近在GitHub上看到一个名为“TDAD”的项目,仓库地址是zd8899/TDAD。乍一看这个缩写,很多朋友可能会有点懵,这到底是做什么的?是某个新框架,还是一个数据处理工具?…...
2026年高口碑GNSS变形监测一体机推荐:提升水库安全解决方案
随着基础设施监测需求的上升,单北斗形变监测一体机逐渐成为各大工程的首选。利用GNSS桥梁形变监测技术、这些设备能够实时监控水库和大坝重要结构的安全情况。单北斗GNSS应用在数据传输和处理上,展现出高效性与可靠性。用户在选择时应关注不同型号的价格…...
【紧急预警】NotebookLM在广义相对论语境下的概念漂移现象:基于57篇PRL论文的偏差审计报告
更多请点击: https://intelliparadigm.com 第一章:【紧急预警】NotebookLM在广义相对论语境下的概念漂移现象:基于57篇PRL论文的偏差审计报告 现象复现与基准测试协议 我们在标准LIGO-PRL语料集(v2.3)上对NotebookLM…...
微信AI助手实战:基于大模型的智能消息处理机器人搭建指南
1. 项目概述与核心价值 最近在折腾一个挺有意思的开源项目,叫 Wechat-AI-Assistant。简单来说,它就是一个能帮你自动处理微信消息的“智能小秘书”。想象一下,你正在开会,或者忙得脚不沾地,微信上却不断弹出各种消息&a…...
从‘一片黑’到重点突出:手把手教你用ArcGIS为乡镇规划图添加专业级影像蒙版
从‘一片黑’到重点突出:手把手教你用ArcGIS为乡镇规划图添加专业级影像蒙版 在乡镇规划汇报中,一张能清晰传达重点区域的地图往往比千言万语更有说服力。想象一下这样的场景:当决策者面对一张全区域亮度均一的遥感影像时,他们的视…...
终极Cookie本地导出指南:如何安全获取cookies.txt文件
终极Cookie本地导出指南:如何安全获取cookies.txt文件 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在Web开发、API测试和自动化脚本…...
Wingman:基于模板化与自动化的现代项目脚手架工具实践
1. 项目概述:一个为开发者量身定制的“僚机”在软件开发的世界里,我们常常需要处理一些重复、琐碎但又至关重要的任务:比如为新项目搭建一个结构清晰、配置完善的脚手架;或者在接手一个老项目时,快速理解其依赖、脚本和…...
