Search code examples
jenkinsjenkins-pipelinejenkins-blueocean

Pipeline get tag list


I am trying to get the latest tag from a repo Jenkinsfile (using Blue Ocean Declarative Pipelines) but it throws an error.

Command:

def tag = sh(script: 'git describe --tags $(git rev-list --tags --max-count=1)', returnStdout: true).trim()

Expected output:

v2.4.1

But I get:

fatal: No names found, cannot describe anything.

I went into the workspace and executed the command manually and received the same fatal error but when I clone manually I am able to get the version. Am I missing something with Jenkins Pipelines?

Note: I am able to get the commit id and branch name. Not the tags.


Solution

  • The solution is described here: https://issues.jenkins-ci.org/browse/JENKINS-45164

    Instead of using checkout scm use:

    checkout([
        $class: 'GitSCM',
        branches: scm.branches,
        doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
        extensions: [[$class: 'CloneOption', noTags: false, shallow: false, depth: 0, reference: '']],
        userRemoteConfigs: scm.userRemoteConfigs,
    ])
    

    Note, it will require by approving script access to methods scm.branches, scm.userRemoteConfigs etc