git-Parameter插件在pipeline共享库中的实践详解
文章发布较早,内容可能过时,阅读注意甄别。
此插件能够方便的动态获取远程仓库的分支以及 tag,从而便于开发者通过搜索快速构建自己想要部署的分支。
这里仅以如下内容作为参考,用最详细的参数,一次讲解分支与 tag 同时可用的方案如下:
pipeline {
agent any
environment {
// 定义项目git地址
GIT_URL="https://github.com/klimas7/exampleA.git"
}
parameters {
gitParameter (branch:'', branchFilter: 'origin/(.*)', defaultValue: 'master', description: '选择将要构建的分支', name: 'BRANCH', quickFilterEnabled: true, selectedValue: 'TOP', sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_BRANCH_TAG', useRepository: env.GIT_URL)
}
stages {
stage('Example') {
steps {
checkout(
[$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, submoduleCfg: [], extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
branches: [[name: "$BRANCH"]],userRemoteConfigs: [[url: "${env.GIT_URL}", credentialsId: "cicd-pass"]]]
)
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
如上参数基本上已经涵盖了所有的可用选项,接下来对各个参数进行一一详细解读。
# 重要参数
name
:定义最终选择之后赋值的变量名称,注意与 checkout 中要对应上。type
:指定过滤的类型,除去另外两个不常用的,基本上直接选择第三个就好。可选参数有如下几项:
PT_TAG
:标签PT_BRANCH
:分支PT_BRANCH_TAG
:分支或标签PT_REVISION
:修订版本,不常用PT_PULL_REQUEST
:pull 请求,不常用
branchFilter
:一般这里必须设置为'origin/(.*)’
,否则将无法正常获取分支或标签。defaultValue
:在共享库场景中,包含多个仓库,需要构建两次配置才能落位,所以这里最好全部写成 master。quickFilterEnabled
:是否开启搜索功能,非常好用,当然设为 true。useRepository
:非常关键,如果一个流水线中有多个 git 仓库的定义,则指定 git 仓库才能让插件正常发挥作用。
# 辅助参数
description
:定义该参数的说明信息。branch
:定义要查找的分支名称,不过此参数一般不设置任何内容。selectedValue
:定义选择的排序方式,可选参数有如下几项:NONE
,TOP
,DEFAULT
,一般用TOP
就好。sortMode
:定义数据的排序方式,有:NONE
,ASCENDING_SMART
,DESCENDING_SMART
,ASCENDING
,DESCENDING
,一般使用DESCENDING_SMART
倒序即可。tagFilter
:标签的过滤,一般不需要过滤,直接用*
。
以上基本上就是该插件的所有参数的详解了,一般情况下,知道了 pipeline 中的配置方式,那么只需要一跑,在自由风格中配置也都是易如反掌的事情了。
我在共享库当中应用的时候,发现首次构建之后,总是无法正常使用该插件,那么基于默认项,点两次构建之后,插件就能够正常使用了,当然,这里需要排除掉 Jenkins 主机无法正常拉取对应代码的情况。
后来我明白了,构建两次的原因,第一次是 pipeline 脚本的语法检查,以及参数项落位的过程,并不会做任何实质性操作,第二次会进入真正的构建,构建就会拉代码,而此插件,正是需要工作空间有了代码之后才可以正常工作的!
上次更新: 2024/11/19, 23:11:42