詹金斯:如何在 git 标签上触发管道

Joa*_*ira 5 continuous-integration continuous-deployment jenkins jenkins-pipeline jenkins-2

我们希望使用 Jenkins 生成特定项目里程碑的发布/部署。当标签被推送到 Git 存储库时,是否可以触发 Jenkins 管道(在 Jenkinsfile 或 Groovy 脚本中定义)?

我们托管了一个私有的 Gitlab 服务器,因此 Github 解决方案不适用于我们的案例。

Spe*_*one 5

这是目前管道/多分支工作流程中非常缺乏的东西。在此处查看相关票证:https : //issues.jenkins-ci.org/browse/JENKINS-34395

如果您不反对使用发布分支而不是标签,您可能会发现这样做更容易。例如,如果您决定将所有以 开头的分支release-都视为“发布分支”,则可以...

if( env.BRANCH_NAME.startsWith("release-") ) {
 // groovy code on release goes here
}
Run Code Online (Sandbox Code Playgroud)

如果您需要使用后面的名称release-,例如release-10.1变成10.1,只需创建一个像这样的变量......

if( env.BRANCH_NAME.startsWith("release-") ) {
 def releaseName = env.BRANCH_NAME.drop(8)
}
Run Code Online (Sandbox Code Playgroud)

这两个可能都需要一些方法白名单才能正常工作。