动态参数 maven_使用Jenkins Git参数实现分支标签动态选择

ccb5a69c0251d7e989c1a6bdab8dac4d.png

1.1 为什么要使用GIT参数?

我们为什么要使用 git参数呢? 每个项目代码库都会有不同的分支,(如果你没有用多分支流水线的情况下)对于普通的流水线项目我们可以 让一条流水线来支持多个分支的发布,其实有时候你会发现每个分支的集成步骤都是差不多的。如果出现差异步骤我们也可以在jenkinsfile中根据不同的分支执行不同的stage。

如何解决固定分支问题? 起初我们的流水线项目配置分支可能是采用的选项参数。 创建一个选项参数然后把项目经常用到的分支给更新上去,最后开发人员在发布的时候来选择对应的分支。看似解决了固定分支问题,但是后期维护起来非常困难,需要不断的更改参数值。

创建一个字符参数设置一个默认值,然后 交给开发人员自己填写。这样的确方便了配置管理人员,给开发人员增加了负担,手动输入避免不了带来了错误发生的可能。

我们来通过下面的内容,掌握如何使用 git参数实现动态分支构建呢?


1.2 在FREESTYLE项目中使用

当你的项目还没有使用pipeline,可以参考以下的配置来使用git参数。当然如果你在调试pipeline项目的时候使用git参数经常出现问题的话,也可以看下在freestyle项目中如何使用,了解git参数的工作原理。

我们在项目的配置中,勾选参数化构建。然后添加git参数。选择变量名称和参数类型。

f470e3c920a2e3b6b57e936f30ec9478.png

然后鼠标滚动到下面,填写项目代码库的信息。

bf58b670c4ab0e96e68ffa277bbcee3d.png

最后保存配置,回到作业首页,我们点击项目的参数化构建。此时你会看到项目代码库对应的所有分支已经出现了,我们可以选择分支并构建了。

b1b0ba55df79a810d2df0d145a427082.png

1.3 在PIPELINE项目中使用

1.3.1 普通的Pipeline项目

这里把普通的pipeline项目定义为 未将Jenkinsfile内容保存在版本控制系统中,而是存储在该JOB中。

首先我们添加一个srcUrl参数定义项目代码库的地址,便于后期在pipeline中调用。

ccaf01ac13eae19a19eaad35c939c49d.png

然后添加git参数branchName,定义为分支类型。

e6d4b8d5affdc597ff42296dbd0f15bb.png

编写Jenkinsfile

//pipelinepipeline{    agent { node { label "build"}}            stages{​        stage("CheckOut"){            steps{                script{                                       println("${branchName}")                                    checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],                               doGenerateSubmoduleConfigurations: false,                               extensions: [],                               submoduleCfg: [],                               userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',                               url: "${srcUrl}"]]])​                }            }        }    }}​
f4ccbbcec29c144994fc932d5c565121.png

然后保存配置,回到作业首页。构建一次,然后就能够获取到项目代码库的分支了。

051dc994588c493294d007fab3df39cf.png

对于将jenkinsfile保存在作业中,这种方式有利有弊,好处是可以方便我们进行代码调试,坏处是不利于统一管理。大家酌情使用。


1.3.2 流行的Pipeline项目

这里流行的Pipeline项目我们理解为 此job使用的jenkinsfile文件存储在git版本控制系统中。

首先我们创建一个测试jenkinsfile,保存在git项目中,命名为git.jenkinsfile。此文件内容与上面那种方式是一样的,只不过将jenkinsfile纳入了版本控制。

​​//pipelinepipeline{    agent { node { label "build"}}            stages{​        stage("CheckOut"){            steps{                script{                                       println("${branchName}")                                    checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],                               doGenerateSubmoduleConfigurations: false,                               extensions: [],                               submoduleCfg: [],                               userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',                               url: "${srcUrl}"]]])​                }            }        }    }}​

然后我们来创建一个新的流水线项目。注意情况我们 现在用到了两个仓库,一个是Jenkinsfile仓库,另一个是 项目代码仓库。 创建一个参数srcUrl用于存储项目 代码仓库的URL。

ec698609da38c536c1a7dc1f52a075a0.png

默认git参数会识别到Jenkinsfile的仓库,所以我们需要在git参数的高级设置中指定我们要使用的仓库地址。 80%错误因为没有指定仓库导致获取分支错误等问题。

b7c197df0bb49c604eaa184bccc415b7.png

填写Jenkinsfile仓库信息。

23e5ba5fd5d2f537425d1da02c793da6.png

最后我们来构建一次就能够获取到项目代码仓库的分支信息了。这里经常出现获取 分支的问题,请仔细参考上面的步骤一定要在git参数中指定好我们要用的仓库,否则会出现分支获取失败等问题。

9d5ae331976a9d26085dcb5b0bfc7903.png

1.3.3 使用Pipeline as Code

我们将参数信息全部放到Jenkinsfile中存储。此时生成的代码就不区分在作业中保存还是在版本控制系统中保存了。 不过还是建议大家把jenkinsfile纳入版本控制系统中保存。

我们如何生成Jenkinsfile代码? 很方便的工具,我们导航到 流水线语法-> Declarative Directive Generator 。

f60738544cf0a07366c2a3382b9160dd.png

最后完整的Jenkinsfile如下所示:

​​//pipelinepipeline{    agent { node { label "build"}}        parameters {      string defaultValue: 'http://192.168.1.200:30088/idevops/idevops-maven-service.git',              description: '',              name: 'srcUrl',              trim: false                   gitParameter  branch: '',                     branchFilter: '.*',                     defaultValue: 'origin/master',                     description: '',                     name: 'branchName',                     quickFilterEnabled: false,                     selectedValue: 'NONE',                     sortMode: 'NONE',                     tagFilter: '*',                     type: 'PT_BRANCH',                     useRepository: 'http://192.168.1.200:30088/idevops/idevops-maven-service.git'        }    stages{​        stage("CheckOut"){            steps{                script{                                       println("${branchName}")                                    checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]],                               doGenerateSubmoduleConfigurations: false,                               extensions: [],                               submoduleCfg: [],                               userRemoteConfigs: [[credentialsId: 'gitlab-admin-user',                               url: "${srcUrl}"]]])​                }            }        }    }}​

同样的配置过程,我们构建 一次之后就能够 正常获取到项目代码库的分支信息了。

1.4 总结

你是不是在使用git参数时也遇到了相同的问题呢? 此文章能够 帮助到大家避免问题的出现。这个git参数还是有些不方便的。随着内部devops平台的功能扩展,目前发布都是通过 devops平台中来完成参数的选择,最后生成一个Jenkins作业来运行。 这种情况下选择分支和标签就放在了外围的devops平台中了,这样jenkins的参数使用什么类型都无所谓了。


#DevOps# #持续集成# #Jenkins#

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

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

相关文章

走线和交互式布线_画PCB时,一些非常好的布线技巧

画PCB时,一些非常好的布线技巧布线是PCB设计过程中技巧最细、限定最高的,即使布了十几年布线的工程师也往往觉得自己不会布线,因为看到了形形色色的问题,知道了这根线布了出去就会导致什么恶果,所以,就变的…

相机裁剪旋转_怎么旋转视频画面角度

在用手机或相机拍摄视频时,有时候画面会出现镜像、画面倒转的情况,影响观看体验,那么视频怎么旋转才能将画面变为正常播放?有很多方法可以做到,以下我为你挑选了最简单的工具,详细给你说说:在线…

新代数控系统参数说明书_台湾新代宏程序编程书

点击右上角关注公众号,每天更新其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点&…

pycharm 开发app_windows及mac下开发Excel, python+xlwings开发环境配置

背景:孩子他妈天天excel办公,看她每天大量重复性的工作,她是时候学习python来解放自己了,虽然我不用python ~ ~网络搜索 xlwings 是python下非常强大的处理Excel的库开发IDE选择Pycharm或者vs code配置开发环境,折腾了…

sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程

本篇笔记将为大家介绍 SequoiaDB 巨杉数据库查询 SQL 语句的执行过程,以及查询语句执行过程中实例层、协调节点、编码节点、数据节点各自承担的功能。应用程序或用户想要从数据库查询需要的数据,首先通过 API 或 client 端连接数据库,将查询 …

服务器主机linux安装mysql_linux服务器上安装mysql

mysql版本:mysql-5.6.44-linux-glibc2.12-x86_64.tarlinux操作系统和版本信息:1、检查linux服务器上是否已安全mysql[rootlocalhost ~]# rpm -qa|grep -i mysql未安装则无任何信息返回,若已安装则会返回已安装的版本信息,可通过--…

mysql中rownum分页_Oracle数据库中rownum分页

测试人员在项目测试中发现查询结果列表分页的时候,有的数据在好几页中重复显示,有的则一次都不显示,经过分析sql,原来问题出在测试人员在项目测试中发现查询结果列表分页的时候,有的数据在好几页中重复显示&#xff0c…

python买东西_Python实战之ATM+购物车

学python一个月以来的第一个工程级别项目!!!!!1.首先分析项目需求:模拟实现一个ATM 购物商城程序额度 15000或自定义---->注册功能实现购物商城,买东西加入 购物车,调用信用卡接口结账----->购物车,支付可以提现,手续费5%----->提现…

multi source replication mysql_MySQL 5.7多源复制(Multi-Source Replication)

MySQL5.7.6以后开始支持多源复制Multi-Source Replication,可以将多个主的库同步到一台slave上,从而增加从的利用率,出节省了机器,也可用于备份。首先设置master_info_repository和relay_log_info_repository两个参数,这存储同步信…

列模式 文本编辑器_UltraEdit 24.2 文本编辑器免费版

UltraEdit是由IDM官方最新出品的文本编辑器版本,它是一款性价比全球一流的文本、十六进制,HTML、PHP、Java 和 JavaScript程序文本编辑器,被认为是世界上最好的文本编辑器。UltraEdit可以满足您的所有需求,例如代码突出显示&#…

在linux中加固mysql_mysql在linux下的安装

安装环境:系统是 centos6.51、下载下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads下载版本:我这里选择的5.6.33,通用版,linux下64位也可以直接复制64位的下载地址,通过命令下载&#x…

mysql 多条记录选择一套_2020-11-09-Mysql(练习题第一套)

遗留问题 select语句中的别名问题 group by 中的别名问题# sql-表 FACT_DAY_SC-字段 DEPT_ID varchar(20) 电厂TJSJ_DATE DATE 日期FSL number 日发电量create table FACT_DAY_SC(DEPT_ID varchar(20),TJSJ_DATE DATE,FSL LONG);insert into FACT_DAY_SC values (10001,2020-12…

wamp的mysql触发器教程_wamp里的mysql怎么做出这个

这个表怎么做这个是phpmyadmin,他是一个独立的程序,并不是wamp独有的,你也可以独立下载phpmyadmin来使用。首先,phpmyadmin你可以把他看作是一个php写的mysql管理工具。前端页面实际上就是HTML,和一般的网页没有什么区…

wx轮播图接口学习用json格式_零基础学小程序008----列表和轮播图的实现,小程序解析json数据...

点击下面网址进入系列教程上一节带领大家实现领简单的计算器,这节来带领大家学习小程序列表功能。本节知识点1,定义本地json文件2,本地文件引入3,小程序列表渲染实现4,解析本地json(为解析网络json做准备)学习之前先来…

云服务器怎么装mysql_云服务器(windows环境)安装mysql图文教程

1、首先进入的是安装引导界面2、然后进入的是类型选择界面,这里有3个类型:Typical(典型)、Complete(完全)、Custom(自定义)。这里建议选择“完全”(Complete)安装,这样可以自定义选择MySQL的安装目录,然后点“Next”下一步&#x…

阿里mysql 二进制_Mysql binlog 之阿里canal

1、What is Canal?canal [kənl],中文翻译为 水道/管道/沟渠/运河,主要用途是用于 MySQL 数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发;历史背景是早期阿里巴巴因为杭州…

java 基本类型 引用类型_Java中的基本类型和引用类型变量的区别

基本类型:基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。引用类型:是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所…

mysql 学生成绩等级_JSP+SSM+Mysql实现的学生成绩管理系统

项目简介本系统是基于JSPSSMMysql实现的学生成绩管理系统。主要实现的功能有教师管理、学生管理、课程管理、学生成绩管理。难度等级:中等技术栈编辑器Eclipse Version: 2020-03 (4.15.0)前端技术基础:htmlcssJavaScript框架:JQueryH-ui后端技…

java ajax 导出excel文件_springMVC(4)---生成excel文件并导出

springMVC(4)---生成excel文件并导出在开发过程中,需要将数据库中的数据以excel表格的方式导出。首先说明。我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口,用来处理Excel对象。其实POI不仅仅只能处理excel,它还可以处理…

java swing 模拟发牌_用java设计一个发牌程序

展开全部// 发牌程序。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class CardBuffer //加互斥锁的缓冲区{private int value;private boolean isEmpty true; //value是否为空的信号量private int order0; //信号量,e68a8462616964757…