Jenkins Pipeline动态使用Git分支名称的技巧
Editor's Note
很实用的技巧,Get一下吧!
The following article is from 日拱一兵 Author tan日拱一兵
前言
在上一篇 Jenkins 使用环境变量 中,帮助大家使用一条 Docker 命令就可以快速玩转 Jenkins,同时用最简单的方式解释了 Jenkins 中让人混乱的环境变量,本文还是接着变量说点事情
一般成熟的项目流程都会通过 Jenkins Pipeline 来做 CI 部分,在默认 Jenkins 环境配置中,Jenkins Pipeline 分为两种:
Pipeline (单分支 Pipeline) Multibranch Pipeline (多分支 Pipeline)
如下图:
如果使用了多分支 Pipeline
,就不会存在动态使用分支名称的问题了。如果你想使用单分支 Pipeline,又想动态使用分支,那本文就派上用场了
Jenkins 中动态使用分支名称
新建单分支 Pipeline后,可以在界面中看到 This project is parameterized
, 勾选上,然后添加 String 类型的参数,如下图所示,String 类型的参数名称为 BranchName
, 默认值是 master
分支
向下滚动,来配置 Jenkins Pipeline,其中在指定 Jenkins Pipeline 分支的位置,就可以使用上面刚刚创建的变量 BranchName
了,如下图所示,配置成
*/${BranchName}
注意:如果勾选 Lightweight checkout 可能会出现下面的 Error
stderr: fatal: Couldn't find remote ref refs/heads/${BranchName}
以这种方式,Jenkins Pipeline 会动态根据分支名称来拉取代码,同样也可以在 Jenkinsfile 中动态使用刚刚创建好的 BranchName
pipeline {
...
parameters {
string(name: 'BranchName', defaultValue: 'master', description: null)
}
stages {
stage ('Test Branch Name') {
steps {
echo "${env.BranchName}"
}
}
}
}
当点击左侧 Build with Parameters 后,我们就可以动态输入分支名称来运行 job 了
总结
在 Jenkins 中,其实这是一种很常见的动态使用参数的方式,config 的其他参数也可以动态引用变量,大大增加灵活性,如果你要维护 JenkinsPipelie 相关的内容,你大概率会遇到这种需求,这个小技巧收入囊中吧。
往期推荐
点击下方卡片关注我,订阅更多开发者资讯