21

Jenkins实战应用–git-Parameter插件在pipeline共享库中的实践详解 |坐而言不如起而行...

 3 years ago
source link: http://www.eryajf.net/5328.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Jenkins实战应用–git-Parameter插件在pipeline共享库中的实践详解 |坐而言不如起而行! 二丫讲梵
> 术业专攻 > 自动化运维 > Jenkins > <四十二>Jenkins实战应用–git-Parameter插件在pipeline共享库中的实践详解
本文预计阅读时间 5 分钟

此插件能够方便的动态获取远程仓库的分支以及tag,从而便于开发者通过搜索快速构建自己想要部署的分支。

这里仅以如下内容作为参考,用最详细的参数,一次讲解分支与tag同时可用的方案如下:

  1. pipeline {
  2. agent any
  3. environment {
  4. // 定义项目git地址
  5. GIT_URL="https://github.com/klimas7/exampleA.git"
  6. }
  7. parameters {
  8. 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)
  9. }
  10. stages {
  11. stage('Example') {
  12. steps {
  13. checkout(
  14. [$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, submoduleCfg: [], extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
  15. branches: [[name: "$BRANCH"]],userRemoteConfigs: [[url: "${env.GIT_URL}", credentialsId: "cicd-pass"]]]
  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:定义选择的排序方式,可选参数有如下几项:NONETOPDEFAULT,一般用TOP就好。
  • sortMode:定义数据的排序方式,有:NONEASCENDING_SMARTDESCENDING_SMARTASCENDINGDESCENDING,一般使用 DESCENDING_SMART倒序即可。
  • tagFilter:标签的过滤,一般不需要过滤,直接用 *

以上基本上就是该插件的所有参数的详解了,一般情况下,知道了pipeline中的配置方式,那么只需要一跑,在自由风格中配置也都是易如反掌的事情了。

71cfeb93ly1gkpuz7jil3j20sg16otcu.jpg

我在共享库当中应用的时候,发现首次构建之后,总是无法正常使用该插件,那么基于默认项,点两次构建之后,插件就能够正常使用了,当然,这里需要排除掉Jenkins主机无法正常拉取对应代码的情况。

后来我明白了,构建两次的原因,第一次是pipeline脚本的语法检查,以及参数项落位的过程,并不会做任何实质性操作,第二次会进入真正的构建,构建就会拉代码,而此插件,正是需要工作空间有了代码之后才可以正常工作的!


weinxin


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK