groovy 如何从最新提交中检索标签?

pod7payv  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(181)

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

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

根据我们的工作流程,确保每次提交都有一个标记
我们希望构建代码,只有当提交被标记。
如何检索最新提交的标记名称?

qyyhg6bp

qyyhg6bp1#

我们可以去仓库拿标签以防Jenkins还没拿到。

git fetch --tags

我们需要找到一个指向特定commit的标签,在我们的例子中是HEAD。幸运的是,git中有一个方便的命令可以让我们这样做。

git tag --points-at HEAD

使用awk,我们可以将其转换为groovy可以伪造的输出。

awk NF

因此,我们首先检查推入的分支是否为master分支

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}"
      }
    }

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

dfddblmv

dfddblmv2#

以防万一有人需要这个(像我一样):你需要从一个标记而不是从一个提交来构建。2然后env.TAG_NAME就可以使用了,你可以写这样的代码:

if(env.TAG_NAME) {
    ...
}

相关问题