当前位置: 首页 > news >正文

Jenkins 构建时动态获取参数

文章目录

    • 问题
    • 简介
    • Groovy 脚本配置
    • 进阶

问题

在做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,如下例所示:

return ['Option 1', 'Option 2', 'Option 3']

要解决本文问题我们设置如下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项目启动路径,内容也较为简单,根据实际修改

echo "Option0"
echo "Option1"
echo "Option2"
echo "Option3"

进阶

  1. 如果我们想某些参数不可选或者默认选一个参数又如何设置呢?
    那就是Groovy返回值加上 :selected 或:disabled
    类似如下:
echo "Option0:selected"
echo "Option1"
  1. Active Choices Reactive 参数配置有一组与上面显示的 Active Choices 参数类似的选项。但是,该参数提供了附加的“引用参数”配置选项。
    即当任何“引用参数”发生更改时,这些参数会触发Active Choices Reactive参数的自动刷新
    在这里插入图片描述
http://www.lryc.cn/news/188028.html

相关文章:

  • android app开机自启动
  • XSS CSRF
  • 新加坡星银行项目组笔试题面试题
  • 基于SpringBoot的智能物流管理系统
  • 【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。
  • HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)
  • springboot项目静态资源映射
  • 【Linux初阶】多线程1 | 页表的索引作用,线程基础(优缺点、异常、用途),线程VS进程,线程控制,C++多线程引入
  • Flink--9、双流联结(窗口联结、间隔联结)
  • 家政服务行业做开发微信小程序可以实现什么功能
  • 20哈希表-三数之和
  • JVM 运行时数据区和垃圾收集算法
  • Java基于SpringBoot的高校招生系统
  • 6. Python使用Asyncio开发TCP服务器简单案例
  • 景联文科技:AI大模型强势赋能,助力自动驾驶迭代升级
  • 多周期CPU设计
  • Go 复合类型之字典类型介绍
  • 对于无法直接获取URL的数据爬虫
  • 35.树与二叉树练习(1)(王道第5章综合练习)
  • JSON数据处理工具-在线工具箱网站tool.qqmu.com的使用指南
  • leetcode:190. 颠倒二进制位
  • Spring Cloud--@RefreshScope动态刷新的注意事项
  • visual-studio-code通过跳板机连接远程服务器的配置操作
  • LuatOS-SOC接口文档(air780E)-- gpio - GPIO操作
  • 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
  • 通过Node.js获取高德的省市区数据并插入数据库
  • 记一次 .NET某账本软件 非托管泄露分析
  • Oracle笔记-对ROWNUM的一次理解(简单分页)
  • 系统架构设计:10 论数据湖技术及其应用
  • 【MySQL】基本查询(三)聚合函数+group by