Дженкинс пытается извлечь последний тег git… не работает

#git #jenkins #groovy

#мерзавец #дженкинс #заводной

Вопрос:

Я работаю над трубопроводом Дженкинса. Контекст: Многовариантный конвейер активирован для всех репозиториев.

Моя проблема: я пытаюсь извлечь последний тег git из репозитория, в то время как конвейер выполняет CI/CD для ветви функций. Я перепробовал много способов получения тега git, однако, какой бы метод я ни использовал, я всегда получаю либо null или что-то вроде » неизвестный вариант…».

Здесь соответствующий блок кода:

 script {  def tag = sh(returnStdout: true, script: "git tag --sort=-creatordate | head -n 1").trim()  echo "tag: ${tag}"  ...other script here... }  

Запуск команды git из командной строки работает, возвращая то, что я ожидаю от нее. У кого-нибудь есть идеи, почему это не работает?

Комментарии:

1.Вероятно, это проблема Дженкинса, а не Git, но, поскольку вы упомянули несколько репозиториев: если вы выполняете команду из. например, крючка Git, переменная среды $GIT_DIR может быть установлена в путь к репозиторию Git. В этом случае cd переход к другому рабочему дереву с другим репозиторием приводит к неожиданному эффекту: в качестве рабочего дерева используется новое расположение рабочего дерева, но в качестве репозитория продолжает использоваться старое хранилище. То есть вы должны сбросить GIT_DIR настройки перед записью компакт-диска.

2. Вы уверены, что проверяете репо git с помощью checkout scm или что-то в этом роде? Это звучит почти так, как будто нет локального репо git. Возможно, вам потребуется поместить полный конвейер вместо только «соответствующего» блока кода