Git Parameter
官网地址:Git Parameter
该插件允许您在构建中分配 git 分支、标签、拉取请求或修订号作为参数。
示例管道脚本
分支类型 - 基本用法
声明式管道
// Using git without checkout
pipeline {
agent any
parameters {
gitParameter branchFilter:'origin/(.*)', defaultValue:'master', name:'BRANCH', type:'PT_BRANCH'}
stages {stage('Example'){
steps {
git branch:"${params.BRANCH}", url:'https://github.com/jenkinsci/git-parameter-plugin.git'}}}}
脚本流水线
properties([parameters([gitParameter(branch:'',
branchFilter:'origin/(.*)',
defaultValue:'master',
description:'',
name:'BRANCH',
quickFilterEnabled:false,
selectedValue:'NONE',
sortMode:'NONE',
tagFilter:'*',
type:'PT_BRANCH')])])
node {
git branch:"${params.BRANCH}", url:'https://github.com/jenkinsci/git-parameter-plugin.git'}
重要设置:
- 应该设置一个
default
值,因为初始构建必须获取此信息 - 使用
git
应设置 branchFilter 为*origin/(.\*)*
(origin 是远程服务器名称)
参数类型:
- PT_TAG
- PT_BRANCH
- PT_BRANCH_TAG
- PT_REVISION
- PT_PULL_REQUEST
如果您需要使用其他类型(除分支之外)参数,则必须在其中使用
git checkout
标签类型
// Using git within checkout
pipeline {
agent any
parameters {
gitParameter name:'TAG',
type:'PT_TAG',
defaultValue:'master'}
stages {stage('Example'){
steps {checkout([$class:'GitSCM',
branches:[[name:"${params.TAG}"]],
doGenerateSubmoduleConfigurations:false,
extensions:[],
gitTool:'Default',
submoduleCfg:[],
userRemoteConfigs:[[url:'https://github.com/jenkinsci/git-parameter-plugin.git']]])}}}}
分支标签类型
pipeline {
agent any
parameters {
gitParameter name:'BRANCH_TAG',
type:'PT_BRANCH_TAG',
defaultValue:'master'}
stages {stage('Example'){
steps {checkout([$class:'GitSCM',
branches:[[name:"${params.BRANCH_TAG}"]],
doGenerateSubmoduleConfigurations:false,
extensions:[],
gitTool:'Default',
submoduleCfg:[],
userRemoteConfigs:[[url:'https://github.com/jenkinsci/git-parameter-plugin.git']]])}}}}
修订类型
pipeline {
agent any
parameters {
gitParameter name:'REVISION',
type:'PT_REVISION',
defaultValue:'master'}
stages {stage('Example'){
steps {checkout([$class:'GitSCM',
branches:[[name:"${params.REVISION}"]],
doGenerateSubmoduleConfigurations:false,
extensions:[],
gitTool:'Default',
submoduleCfg:[],
userRemoteConfigs:[[url:'https://github.com/jenkinsci/git-parameter-plugin.git']]])}}}}
拉取请求类型
pipeline {
agent any
parameters {
gitParameter name:'PULL_REQUESTS',
type:'PT_PULL_REQUEST',
defaultValue:'1',
sortMode:'DESCENDING_SMART'}
stages {stage('Example'){
steps {checkout([$class:'GitSCM',
branches:[[name:"pr/${params.PULL_REQUESTS}/head"]],
doGenerateSubmoduleConfigurations:false,
extensions:[],
gitTool:'Default',
submoduleCfg:[],
userRemoteConfigs:[[refspec:'+refs/pull/*:refs/remotes/origin/pr/*', url:'https://github.com/jenkinsci/git-parameter-plugin.git']]])}}}}
选项
参数类型
在管道中使用的名称
type: 'PT_TAG' or 'PT_BRANCH' or 'PT_BRANCH_TAG' or 'PT_REVISION' or 'PT_PULL_REQUEST'
解释
PT_TAG
或
PT_BRANCH
或
PT_BRANCH_TAG
:
使用
git ls-remote
命令获取远程标签或分支的插件。
在使用来自 Git Client 的 getRemoteReferences 的代码插件中,查看 CliGitAPIImpl 中的实现。
package org.jenkinsci.plugins.gitclient
//...publicinterfaceGitClient{//...
Map<String, ObjectId>getRemoteReferences(String remoteRepoUrl, String pattern,boolean headsOnly,boolean tagsOnly)throws GitException, InterruptedException;//...}
分支
在管道中使用的名称
branch
分支过滤器
在管道中使用的名称
branchFilter
标签过滤器
在管道中使用的名称
tagFilter
排序模式
在管道中使用的名称
sortMode: 'NONE' or 'ASCENDING_SMART' or 'DESCENDING_SMART' or 'ASCENDING' or 'DESCENDING'
您可以为
tags/revision/branches/branches_or_tags/pull
请求选择以下排序选项
- none
- descending
- ascending
- ascending smart
- descending smart
对于智能变体,比较将数字序列视为单个字符。由格雷姆希尔提供。
默认值
在管道中使用的名称
defaultValue
在 0.9.9 或更高版本中,最好设置一个默认值,因为该值使用初始构建(在管道中)。
获取数据发生错误时返回默认值。
选定值
在管道中使用的名称
selectedValue: 'NONE' or 'TOP' or 'DEFAULT'
使用存储库
在管道中使用的名称
useRepository
您没有在插件中设置 git 存储库,此插件使用在 SCM 部分的项目中定义的 git 存储库!
如果在任务中定义了多个存储库,则此选项指定在获取数据时要考虑哪个存储库。
如果未定义该选项,则采用第一个定义的存储库。
此选项是一个正则表达式,与 “存储库 URL” 进行比较。
您可以通过几种方式定义多个 SCM,您可以使用 Multiple SCMs Plugin,在一个 SCM 中指定多个 “存储库 URL” 或在管道中定义它们。
考虑一个基于两个存储库的示例:
https://github.com/klimas7/exampleA.git
https://github.com/klimas7/exampleB.git
- 管道:复杂示例
pipeline { agent any parameters { gitParameter branchFilter:'origin.*/(.*)', defaultValue:'master', name:'BRANCH_A', type:'PT_BRANCH', useRepository:'.*exampleA.git' gitParameter branchFilter:'origin.*/(.*)', defaultValue:'master', name:'BRANCH_B', type:'PT_BRANCH', useRepository:'.*exampleB.git'} stages {stage('Example'){ steps { git branch:"${params.BRANCH_A}", url:'https://github.com/klimas7/exampleA.git' git branch:"${params.BRANCH_B}", url:'https://github.com/klimas7/exampleB.git'}}}}
未设置 “使用存储库” 时的示例:
- 管道:未设置使用存储库
pipeline { agent any parameters { gitParameter branchFilter:'origin.*/(.*)', defaultValue:'master', name:'BRANCH', type:'PT_BRANCH'} stages {stage('Example'){ steps { git url:'https://github.com/klimas7/exampleA.git'dir('dir-for-exampleB'){ git url:'https://github.com/klimas7/exampleB.git'}}}}}
版权归原作者 归-尘 所有, 如有侵权,请联系我们删除。