Jenkins 构建时动态获取参数

文章目录

问题

在做jenkins项目时,有些参数不是固定写死的,而是动态变化的,这时我们可以用 Active Choices 插件来远程调用参数

问题解决方案:执行构建前使用Groovy Scrip调用本地脚本,本地脚本执行获取参数的逻辑

本文所用环境:centos7 、jenkins2.107

简介

Active Choices 插件用于参数动态变化的 Jenkins 作业,可以是创建脚本、动态和交互式作业参数。Active Choices参数可以动态更新,并且可以呈现为组合框、复选框、单选按钮或丰富的 HTML UI 小部件。

Active Choices 参数使用 Groovy 或(可选)Scriptler Groovy 脚本编写脚本。这些自定义脚本支持使用 Jenkins Java API、系统环境变量、全局节点属性以及潜在的外部 Java 和 Javascript 库。

安装插件后,可以使用三种新参数类型:

  1. Active Choices Parameter
  2. Active Choices Reactive Parameter
  3. Active Choices Reactive Reference Parameter

注意:Reactive Parameter 参数允许参数显示为格式化的 HTML。使用此功能配置作业时,请注意参数的呈现方式以及它可能产生的安全问题

Active Choices 参数允许用户选择构建参数的值为:

  • 动态生成(使用 Groovy 或Scriptler脚本)
  • 根据其他 UI 参数动态更新
  • 多值(可以有多个值)
  • 使用各种 UI控件呈现,包括动态 HTML(请注意相关安全风险)

Groovy 脚本配置

参数化构建选择Active Choices Reactive Parameter,低版本只可选择Groovy Script

无论是Groovy 代码或 Scriptlet 脚本,该脚本必须返回java.util.List 、Array或java.util.Map,如下例所示:

bash 复制代码
return ['Option 1', 'Option 2', 'Option 3']

要解决本文问题我们设置如下Groovy代码:

groovy 复制代码
def command = "sh get_list.sh"
def proc = command.execute()
proc.waitFor()
def list = []
list = "${proc.in.text}" .eachLine { line ->
    list << line
}
return list

注意get_list.sh在jenkins部署机器上,存放路径为jenkins项目启动路径,内容也较为简单,根据实际修改

bash 复制代码
echo "Option0"
echo "Option1"
echo "Option2"
echo "Option3"

进阶

  1. 如果我们想某些参数不可选或者默认选一个参数又如何设置呢?
    那就是Groovy返回值加上 :selected 或:disabled
    类似如下:
bash 复制代码
echo "Option0:selected"
echo "Option1"
  1. Active Choices Reactive 参数配置有一组与上面显示的 Active Choices 参数类似的选项。但是,该参数提供了附加的"引用参数"配置选项。
    即当任何"引用参数"发生更改时,这些参数会触发Active Choices Reactive参数的自动刷新
相关推荐
laoliu19961 小时前
Odoo 18企业版源码 包含 部署教程
运维·服务器
守城小轩1 小时前
基于Chrome140的Quora账号自动化(关键词浏览)——运行脚本(三)
运维·自动化·chrome devtools·指纹浏览器·浏览器开发
未来之窗软件服务1 小时前
幽冥大陆(五十五)ASR SetThreadInformation C语言识别到自动化软件
运维·自动化·asr·东方仙盟·操作系统级别错误
开开心心就好1 小时前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
Lbwnb丶2 小时前
检测服务器是否是虚拟化,如KVM,VM等
linux·运维·服务器
老猿讲编程2 小时前
【车载信息安全系列4】基于Linux中UIO的HSE应用实现
linux·运维·服务器
鸡吃丸子2 小时前
初识Docker
运维·前端·docker·容器
wanhengidc2 小时前
巨椰 云手机 云游戏稳定运行
运维·服务器·arm开发·游戏·云计算
林义满2 小时前
大促零宕机背后的运维升级:长三角中小跨境电商的架构优化实践
大数据·运维·架构