Jenkins
Jenkins新闻
Jenkins入门系列
系列-1 Jenkins是什么?
系列-2 Jenkins安装
系列-3 Jenkins配置管理工具
系列-4 Jenkins配置php项目
系列-5 Jenkins配置java项目
系列-6 pipeline是什么?
系列-7 声明式语法
Jenkins原理说明
Jenkins安装部署
Jenkins服务维护
Jenkins优化
Jenkins备份
Jenkins汉化
Jenkins监控
Jenkins配置代码化
Jenkins 报错合集
Jenkins Job迁移
Jenkins 关闭和重启的实现方式
Jenkins安全检查
Jenkins插件管理
Jenkins插件维护
Jenkins常用插件
Jenkins配置_job
Jenkins分布式与并行
Jenkins构建通知
Jenkins触发构建
Jenkins构建配置
Jenkins自动化部署
Jenkins制品管理
pipeline脚本管理
效验pipeline语法
pipeline 共享库
pipeline groovy
pipeline post指令
jenkins pipeline语法
pipeline option指令
pipeline 步骤
pipeline parameters指令
pipeline when指令
pipeline input步骤
pipeline 结构设计
Declarative Pipeline 基础语法
Jenkins配置_系统
Jenkins环境变量
Jenkins凭证管理
Jenkins视图管理
jenkins集成openldap
Jenkins使用案例
Jenkins动态选择分支/tag
Jenkins检测Maven项目是否引用快照包
Jenkins集成jira
Jenkins获取jar包的快照号
Jenkins获取发版人的人名
Jenkins多分支构建
Jenkins远程发布制品
Jenkins性能测试
Jenkins单元测试
Pipeline生产实战
Jenkins代码检查
jenkins实例 nodejs项目
Jenkins实例 自由风格项目
pipeline配置前端项目
pipeline配置java项目
Jenkins实例 Maven项目
本文档使用 MrDoc 发布
-
+
home page
Jenkins动态选择分支/tag
[TOC] ## 一.简介 一般选择分支构建,Git Parameter插件即可。这里是应用pipline的同时,可以选择分支进行构建。  Dynamic Parameter 可以动态的生成我们想要的一些参数,使用的语言是groovy。获取参数后,将变量传递到pipline中,用于脚本使用。 ## 二.配置 1.在插件中找到 Dynamic Parameter Plug-in 进行安装 2.创建一个流水线项目 3.在参数化构建过程选择 Dynamic choice Parameter  git后面那段地址,就是项目的地址,不过只能获取一个项目的 ```c def gettags = ("git ls-remote -h git@1.1.1.1:dd/xx.git").execute() gettags.text.readLines().collect { it.split()[1].replaceAll('refs/heads/', '') }.unique() ``` 4.编写pipline脚本,这里只写变化的一段 ```c stage 'checkout' dir('business_pay'){ git branch: release_branch, credentialsId: 'jenkins', url: 'http://1.1.1.1/dd/xx.git' } ``` 5.构建的时候,就会有选择提示了 ## 三.配置tag 1.tag和上述配置一样,不过在Dynamic choice Parameter那里修改一下 ```c def gettags = ("git ls-remote -t --refs git@1.1.1.1:dd/xx.git").execute() gettags.text.readLines().collect { it.split()[1].replaceAll('refs/tags/', '') }.unique() ``` 2.然后pipeline里进行下修改,用git命令切换分支 ```c stage 'checkout' dir('business_pay'){ git branch: 'master', credentialsId: 'jenkins', url: 'http://1.1.1.1/dd/xx.git' sh "git checkout $release_tag" } ``` ## 四.其它方法 ```python def branchType = BRANCH_NAME.tokenize('/').last().trim() isReleaseBranch = branchType == 'tmo_ps_gp15' || branchType == 'master' branch = isReleaseBranch ? branchType : BRANCH_NAME.trim() originalBuildNumber = BUILD_NUMBER revision = "1.0.${BUILD_NUMBER}" def setDisplayName(){ if (BUILD_NUMBER != originalBuildNumber) { currentBuild.displayName = "${revision}-${branch} (resume ${BUILD_NUMBER})" } else if (isReleaseBranch){ currentBuild.displayName = "${revision}-${branch}" } } BRANCH_NAME.tokenize('/').last().trim() 可以拿到你当前checkout下来是哪个branch, tokenize('/').last().trim() 意思就是以 / 切割 然后取最后一个元素并且去除该元素左右两边得空格,这样就可以拿到你checkout得branch isReleaseBranch = branchType == 'tmo_ps_gp15' || branchType == 'master' 意思就是如果 你上面定义得branchType 等于tmo_ps_gp15 或者是master 分支得时候, isReleaseBranch 就等于呢个分支名且为true branch = isReleaseBranch ? branchType : BRANCH_NAME.trim() 意思就是当isReleaseBranch为true得情况下,branch等于branchType ,如果为false就重新抓取你checkout得branch name 用于下面pipeline得判断而已 你可以根据你构建/部署情况而定 一个pipeline同一个代码可以作用于不同分支,不同分支得构建/部署不同得情况下,我都是在开头去判断得 后面你代码就可以直接 if(isReleaseBranch){xxxx}了 ``` ## 五.List Git Branches插件 插件List Git Branches可以根据选项获取远程仓库的分支或者tag,形成列表选项,除了在job进行图形配置,还可以通过pipeline进行配置,在job过百的情况下搭配共享库会很方便。 界面配置:  具体说明 Name:变量名词,用于传递到pipeline根据分支发布 Repository URL:远程仓库的地址,从这个仓库获取分支 Credentials:选择的凭证,根据这个来访问远程仓库 Parameter Type:获取的类型,可选TAG、分支、分支+TAG Sort Mode:排序的方式 Tag Filter:过滤tag的正则,如果获取类型是分支,这个配置可以忽略 Branch Filter:过滤分支的正则 Default Value:如果获取不到默认的分支 Selected Value:不太清楚,选择NONE或者DEFALUT即可 List Size:这是显示的列表个数 效果:  pipeline方式: ```python pipeline { agent any parameters { listGitBranches branchFilter: 'refs/heads/(.*)', defaultValue: 'master', name: 'branch_name', type: 'PT_BRANCH', remoteURL: 'http://10.0.15.1/xxx/xxx.git', credentialsId: 'jenkins', selectedValue: 'DEFAULT', sortMode: 'ASCENDING' } stages { stage('Example') { steps { git branch: "${params.branch_name}", credentialsId: 'jenkins', url: 'http://10.0.15.1/xxx/xxx.git' } } } } ```
日行一善
May 13, 2021, 3 p.m.
Share documents
Collection documents
Last
Next
Scan wechat
Copy link
Scan your mobile phone to share
Copy link
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
QQ粉丝交流群:882382311
Markdown文件
share
link
type
password
Update password