Jenkins参数化构建详解(This project is parameterized)

news2025/3/1 18:07:56

本文详细介绍了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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …

shell编程(完结)

shell编程(完结) 声明! 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…

ctfshow-web 151-170-文件上传

151. 我们首先想到就是上传一句话木马。但是看源代码限制了png。 (1)改前端代码。 这里是前端限制了上传文件类型,那我们就改一下就好了嘛,改成php。 这里直接修改不行,给大家推荐一篇简短文章,大家就会了&#xff08…

Docker的初识

目录 1. 容器技术发展史1.1 Jail 时代1.2 云时代1.3 云原生时代1.3.1 Google & Docker 竞争1.3.2 k8s 成为云原生事实标准 2. 虚拟化和容器化的概念2.1 什么是虚拟化、容器化2.2 为什么要虚拟化、容器化?2.3 虚拟化实现方式2.3.1 应用程序执行环境分层2.3.2 虚拟…

Jenkins流水线初体验(六)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…

链式设计模式——装饰模式和职责链模式

一、装饰模式 1、概述 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 ConcreteComponent :是定义了一个具体的对象,可以给这个对象添加一些职责;Decorator :装饰抽象…

JavaEE多线程案例之阻塞队列

上文我们了解了多线程案例中的单例模式,此文我们来探讨多线程案例之阻塞队列吧 1. 阻塞队列是什么? 阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则. 阻塞队列是⼀种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续⼊队列就会…

【Linux】VMware 安装 Ubuntu18.04.2

ISO镜像安装步骤 选择语言 English 选择键盘布局 English 选择系统 Ubuntu 虚拟机网卡地址,默认即可 代理地址,默认空即可 镜像地址,修改成阿里云地址 选择第二项,LVM 磁盘扩容技术 第一块硬盘名sda,默认…

Unity游戏实战

很小的时候在键盘机上玩过一个游戏叫寻秦,最近看有大佬把他的安卓版做出来了,打开封面就是Unity,想自己也尝试一下。

R语言的数据结构-向量

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中,数据结构是非常关键的部分,它提…

CTF misc 流量分析特训

以下题目来源于西电的靶场,从NewStar CTF开始 wireshark_checkin 进来看一下http流,结果真的找到flag了(感觉有点狗运),第一道流量分析题就这么奇奇妙妙的解出来了 wireshark_secret 根据提示猜测flag可能在图片里&…

React v19稳定版发布12.5

🤖 作者简介:水煮白菜王 (juejin/csdn同名),一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持&a…

【JVM】JVM基础教程(三)

上一章:【JVM】JVM基础教程(二)-CSDN博客 目录 运行时数据区 应用场景 程序计数器 程序计数器在运行时会出现内存溢出吗? 栈 IDEA的debug工具查看栈帧的内容 栈帧的组成 局部变量表 关于 this 的内存存储 操作数栈 帧…

Postman Sandbox 项目教程

Postman Sandbox 项目教程 postman-sandbox Sandbox for Postman Scripts to run in Node.js or browser 项目地址: https://gitcode.com/gh_mirrors/po/postman-sandbox 1. 项目介绍 Postman Sandbox 是一个用于在 Node.js 或浏览器中执行 Postman 脚本的沙盒环境。它…

Maven、mybatis框架

一、Maven介绍 1.概念: Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载,可能下载地址不同意。这些jar之间…

Python连接和操作Elasticsearch详细指南

Python连接和操作Elasticsearch详细指南 一、服务器端配置1. 修改 Elasticsearch 配置文件2. 开放防火墙端口 二、本地 Python 连接 Elasticsearch1. 连接 Elasticsearch2. 索引操作3. 文档操作4. 搜索内容5. 聚合查询6. 批量操作 三、注意事项四、故障排除结论 Elasticsearch …

获得日志记录之外的新视角:应用程序性能监控简介(APM)

作者:来自 Elastic David Hope 日志记录领域即将发生改变。在这篇文章中,我们将概述从单纯的日志记录到包含日志、跟踪和 APM 的完全集成解决方案的推荐流程。 通过 APM 和跟踪优先考虑客户体验 企业软件开发和运营已成为一个有趣的领域。我们拥有一些非…

Python - 面向对象;类和对象;方法属性;init,self;魔法方法;析构方法;函数方法区别(六)

一、面向对象编程(OOP) 定义 面向过程(Procedure Oriented Programming, POP)是一种程序设计范式,主要关注的是实现功能的步骤,设计时模块化和流程化。面向过程编程是一种以过程为中心的编程方式,它将问题分解成一系…

源码编译安装MySQL

MySQL相应版本的tar包下载 在5.7的版本的MySQL编译安装的时候,需要依赖C语言的库文件【boost】, 如上图所示,如果你使用第一个MySQL的tar包,还需要去网上去下载boost即C语言的库文件,但是第二个tar包就既包含MySQL的源…