Jenkins groovy - 如何从最新提交中检索标记?

问题描述 投票:2回答:1

要从branchName获取最新提交,我们运行以下代码:

treeMapData = git(branch: branchName, credentialsId: credential, url: "${gitLabServer}/${projectName}/${repo}.git")

根据我们的工作流程,确保每次提交都有一个标记

我们只想在标记提交时构建代码。


如何检索最新提交的标记名称?

git groovy jenkins-pipeline git-tag jenkins-groovy
1个回答
3
投票

如果詹金斯还没有,我们可以从回购中获取标签。

git fetch --tags

在我们的例子中,我们需要找到一个指向特定提交或HEAD的标记。值得庆幸的是,git中有一个方便的命令允许我们这样做。

git tag --points-at HEAD

使用awk我们可以把它变成一个groovy可以伪造的输出。

awk NF

所以我们首先检查推送的分支是否为主

if (env.BRANCH_NAME == 'master') {

锁定它

  lock('publish master') {

执行git标签shell脚本并将其分配给TAG

    TAG = sh (
      returnStdout: true,
      script: 'git fetch --tags && git tag --points-at HEAD | awk NF'
    ).trim()

如果标签存在,做一些事情!

    if (TAG) {
      stage('Deploy Prod') {
        echo "Deploying to Prod ${TAG}"
      }
    }

希望这能回答你的问题,或者至少会让你走上正轨。

© www.soinside.com 2019 - 2024. All rights reserved.