有没有办法配置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.
答案 0 :(得分:0)
这还没有,但有一张票:
https://issues.jenkins-ci.org/browse/JENKINS-22499
经过几天的抓挠,我发现了基于this question的解决方法:
在jenkins框上缓存git凭据:
$ git config --global credential.helper 'cache --timeout 600'
使凭据可用于Jenkins中的Execute Shell构建步骤:
$ /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变量已由上游作业设置)