#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. Возможно, вам потребуется поместить полный конвейер вместо только «соответствующего» блока кода