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 были заданы вышестоящим заданием)