一尘不染

如何从Jenkinsfile内部标记当前的git changeset?

jenkins

我想标记当前的git changeset并从Jenkinsfile内部推送标记。如果标签已经存在,则必须将其替换。

我想使用此逻辑来标记随snapshot标记传递的内部版本,该标记将是移动标记。

我怎样才能做到这一点?


阅读 432

收藏
2020-07-25

共1个答案

一尘不染

这是我能够以这种方式实现的方法,但是,如果您知道更好的方法,我很乐意听到。

#!groovy

stage 'build'
node {

    repositoryCommiterEmail = 'ci@example.com'
    repositoryCommiterUsername = 'examle.com'

    checkout scm

    sh "echo done"

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

        sh("git config user.email ${repositoryCommiterEmail}")
        sh("git config user.name '${repositoryCommiterUsername}'")

        sh "git remote set-url origin git@github.com:..."

        // deletes current snapshot tag
        sh "git tag -d snapshot || true"
        // tags current changeset
        sh "git tag -a snapshot -m \"passed CI\""
        // deletes tag on remote in order not to fail pushing the new one
        sh "git push origin :refs/tags/snapshot"
        // pushes the tags
        sh "git push --tags"
    }
}
2020-07-25