Git Publisher标记早期版本?

时间:2014-07-29 05:51:34

标签: git jenkins merge tags 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 个答案:

答案 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变量已由上游作业设置)