Дженкинс Groovy - Как получить тег из последнего коммита? - PullRequest
0 голосов
/ 01 марта 2019

Чтобы получить последний коммит из branchName, мы запускаем следующий код:

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

Гарантируется, что для каждого коммита существует один тег, согласно нашему рабочему процессу

Мы хотим создать код, только если коммит помечен.


Как получить имя тега для этого последнего коммита?

1 Ответ

0 голосов
/ 04 марта 2019

Мы можем извлечь теги из репо, если Дженкинс еще этого не сделал.

git fetch --tags

Нам нужно найти тег (ы), которые указывают на конкретную фиксацию или HEAD в нашем случае,К счастью, в git есть удобная команда, которая позволяет нам это делать.

git tag --points-at HEAD

Используя awk, мы можем превратить это в вывод, который groovy может фальсифицировать.

awk NF

Итак, сначала мы проверим, является ли нажатая ветвь master

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

заблокировать его

  lock('publish master') {

выполнить скрипт оболочки git tag и присвоить его 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}"
      }
    }

Надеюсь, это ответит на ваш вопрос или, по крайней мере, поможет вам выбрать правильный путь.

...