1

我们的构建包含一个本地 shell 命令,它根据启动构建的参数创建一个本地 git 分支。将文件复制到目的地后,目标是将新分支推送到存储库,以便如果将来对该分支有更新,可以将其拉出。在我创建的后期构建和要推送的分支中,两者都以以下错误结束

using GIT_ASKPASS to set credentials PAT (****)
 > /usr/bin/git push *GITURL* HEAD:UAT-sprint-20-96 -f # timeout=10
ERROR: Failed to push branch UAT-sprint-20-96 to origin
hudson.plugins.git.GitException: Command "/usr/bin/git push *GIT_URL* HEAD:UAT-sprint-20-96 -f" returned status code 128:
stdout: 
stderr: 
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2450)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:2051)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:84)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$8.execute(CliGitAPIImpl.java:2536)
    at hudson.plugins.git.GitPublisher.perform(GitPublisher.java:316)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:753)
    at hudson.model.Build$BuildExecution.post2(Build.java:177)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:698)
    at hudson.model.Run.execute(Run.java:1932)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Build step 'Git Publisher' marked build as failure

(GIT_URL 只是为了隐私而替换了实际的 URL)stderr 中没有实际的错误,因此很难弄清楚当它失败时会发生什么。在服务器 CLI 中运行实际命令可以正常工作,询问用户名和密码。此服务器没有实际的公共 IP;它的互联网访问是通过我们公司的网络。我可以克隆存储库的事实表明这不是连接问题,但我可能是错的。我环顾四周,看看是否有人遇到过这个问题,但我发现与管道作业有关(这不是)。我们还尝试使用“运行 shell 脚本”选项推送分支,但它失败了,即使在 URL 中包含用户名和令牌也是如此。有没有人遇到过这个?我们使用 Azure Dev Ops 作为我们的 git。任何见解都会有所帮助。谢谢你。

4

1 回答 1

2

结果证明这是我的配置错误。出于某种我无法理解的原因,Jenkins 配置将较早的值传递或连接到分支名称中,从而导致 Git 分支 (UAT-sprint-20-96) 不存在。

于 2021-05-13T21:47:17.570 回答