Git Publisher помечает предыдущую версию?

Есть ли способ настроить Jenkins и надстройку Git Publisher, чтобы пометить ревизию, которая не находится во главе основной ветви?

Мы хотели бы управлять нашим процессом интеграции с помощью пары шагов, которые последовательно проверяют наше программное обеспечение, и упростить его в автоматическом режиме, помечая последнюю ревизию, прошедшую первый шаг, а затем добавляя другой тег к этой ревизии, когда она проходит. второй шаг. Вполне возможно, что некоторые более поздние ревизии тем временем потерпели неудачу на первом этапе или что-то в этом роде, поэтому мы больше не добавляем тег в заголовок. Мы предполагаем, что есть и другие сценарии, которые также могут вызывать такие теги без заголовка.

Я попытался проверить нужный тег на шаге "Выполнить команду" или указав тег в поле "Git SCM Branch", но продолжаю нажимать ошибку слияния не-ff, потому что я не могу получить или перебазировать после применения тега.

Единственное нажатие - это добавляемый тег.

Это возможно?

Вот что в выводе консоли:

 > /usr/bin/git tag -l test-tag
 > /usr/bin/git tag -a -f -m Testing tag built from environment variable test-tag
Pushing tag test-tag to repo origin
 > /usr/bin/git config --get remote.origin.url
 > /usr/bin/git push ssh://jenkins@ncs-gerrit.inhouse.com:29418/ncs-test test-tag
ERROR: Failed to push tag test-tag to origin
hudson.plugins.git.GitException: Command "/usr/bin/git push ssh://jenkins@ncs-gerrit.inhouse.com:29418/ncs-test test-tag" returned status code 1:
stdout: 
stderr: To ssh://jenkins@ncs-gerrit.inhouse.com:29418/ncs-test
 ! [rejected]        test-tag -> test-tag (non-fast-forward)
error: failed to push some refs to 'ssh://jenkins@ncs-gerrit.inhouse.com:29418/ncs-test'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

1 ответ

Решение

Это еще не доступно, но есть билет для этого:

https://issues.jenkins-ci.org/browse/JENKINS-22499

После нескольких дней царапин на голове я нашел обходной путь, основанный на этом вопросе:

Кэшируйте учетные данные git на коробке jenkins:

$ git config --global credential.helper 'cache --timeout 600'

что делает учетные данные доступными для шага сборки Execute Shell в Jenkins:

$ /usr/local/bin/git tag -a "v${APPLICATION_VERSION}(${BUILD_DISPLAY_NAME})" ${GIT_COMMIT} -m "Tag at ${BUILD_ID}"
$ /usr/local/bin/git push Bitbucket "v${APPLICATION_VERSION}(${BUILD_DISPLAY_NAME})"

(Примечание: переменные APPLICATION_VERSION и GIT_COMMIT были заданы вышестоящим заданием)

Другие вопросы по тегам