一.简介

一般选择分支构建,Git Parameter插件即可。这里是应用pipline的同时,可以选择分支进行构建。

Dynamic Parameter 可以动态的生成我们想要的一些参数,使用的语言是groovy。获取参数后,将变量传递到pipline中,用于脚本使用。

二.配置

1.在插件中找到 Dynamic Parameter Plug-in 进行安装

2.创建一个流水线项目

3.在参数化构建过程选择 Dynamic choice Parameter

git后面那段地址,就是项目的地址,不过只能获取一个项目的

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脚本,这里只写变化的一段

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那里修改一下

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命令切换分支

stage 'checkout'
dir('business_pay'){
git branch: 'master', credentialsId: 'jenkins', url: 'http://1.1.1.1/dd/xx.git'
sh "git checkout $release_tag"
}

四.其它方法

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方式:

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'
}
}
}
}

Jenkins动态选择分支/tag的更多相关文章

  1. PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)

    PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版) 先看流程图: 大概介绍一下: 版本选择使用jenkins 中的 git parameter 插件实现 回滚方式 ...

  2. jenkins实现手动选择分支构建项目-Git Paramater

    先下载插件: Git Paramater 参照: jenkins-参数化构建(三)插件:Git Parameter https://www.cnblogs.com/zhaojingyu/p/98624 ...

  3. Kubernetes Jenkins动态创建Slave

    目录 0.前言 1.Jenkins部署 2.配置jenkins动态slave 3.dubbo服务构建 3.1.制作dubbo镜像底包 3.2.制作slave基础镜像 3.2.1.Maven镜像 3.2 ...

  4. gitlab分支代码本地拉取及jenkins关联gitlab分支

    git本地拉取 git init git remote add origin http://47.*.*.*:8089/back_dev/claimeureka.git git fetch origi ...

  5. php使用post动态选择头像和js事件动态改变头像

    <html> <head> <meta http-equit="Content-type" content="text/html" ...

  6. 【SAP BO】【WEBI】【转】Webi实现动态选择度量

    我们都知道Web Intelligence具有高级的分析功能,是一个非常灵活的报表工具.在这篇文章里,我会演示一个使用Webi实现动态选择度量对象的方案.首先解释一下什么是”动态选择度量”:例如我们有 ...

  7. vue动态class——实现tag的选中状态

    vue动态class——实现tag的选中状态 <template> <div class="common-nav"> <div class=" ...

  8. 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)

    一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...

  9. ExpandoObject与DynamicObject的使用 RabbitMQ与.net core(一)安装 RabbitMQ与.net core(二)Producer与Exchange ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler) .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

    ExpandoObject与DynamicObject的使用   using ImpromptuInterface; using System; using System.Dynamic; names ...

随机推荐

  1. Go语言核心36讲(Go语言实战与应用六)--学习笔记

    28 | 条件变量sync.Cond (下) 问题 1:条件变量的Wait方法做了什么? 在了解了条件变量的使用方式之后,你可能会有这么几个疑问. 1.为什么先要锁定条件变量基于的互斥锁,才能调用它的 ...

  2. vue2与vue3的差异(总结)?

    vue作者尤雨溪在开发 vue3.0 的时候开发的一个基于浏览器原生 ES imports 的开发服务器(开发构建工具).那么我们先来了解一下vite Vite Vite,一个基于浏览器原生 ES i ...

  3. 90-95年CPU功耗感知调度研究

    最近读了三篇1990-1995年的通过调度来降低cpu能耗的文章[1] [2] [3],简单总结一下该年代单核CPU功耗感知的调度策略. Motivation 随着便携式设备逐渐兴起,人们对降低其功耗 ...

  4. [zoj3990]Tree Equation

    记$dep(T)$为树$T$的深度(根节点深度为0),则有$\begin{cases}dep(A+B)=\max(dep(A),dep(B))\\dep(A\cdot B)=dep(A)+dep(B) ...

  5. [bzoj1858]序列操作

    考虑建立一棵线段树,维护:1.左端点的连续1和:2.右端点的连续1和:3.最长1的连续子序列:4.1的个数:5.将0和1交换后上面的四项:6.懒标记具体实现中,需要注意细节,可以看代码(比较短) 1 ...

  6. 新玩法-使用AllArgsConstructor+filal代替autowired

    和下面的代码一样: Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了 还有一种写法: @Requir ...

  7. java内部类的调用方式

    public class DotThis { public class Inner{ public DotThis outer(){ return DotThis.this; }; } /* 1.第一 ...

  8. .NET Core 3.0 JsonSerializer.Deserialize 返回dynamic类型对象

    .NET Core 3.0 JsonSerializer.Deserialize to dynamic object 因为官方还不支持返回动态类型的对象,只能自己手写一个,临时测试了下没问题,还有些地 ...

  9. ceph简单了解

    ceph简介 ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能.可靠性和可扩展性. 目前已经得到众多云计算厂商的支持并被广泛应用.RedHat及OpenStack都可以与Ceph整合以支持 ...

  10. R合并数据框有重复匹配时只保留第一行

    前言 合并数据框有重复匹配时通常会返回所有的匹配,如何只保留匹配的第一行呢?其实这个需求也很常见.如芯片探针ID和基因ID往往多对一,要合并ID对应矩阵和芯片表达矩阵时. 数据例子 data = da ...