2

我在 jenkins 中运行多个作业,它们都在同一个 repo 中但在不同的文件中工作,但有时在推送时似乎存在竞争条件错误。

当两个作业(或更多)同时运行时会发生这种情况。他们从 github repo 中提取,然后在每个作业中更改不同的文件,什么时候推送以及在第二个作业之前推送另一个作业,最终会出现推送问题。试图解决这个竞争条件我在提交之前做'git pull',然后我再做一次'git pull',以防在那段时间另一个工作更新了repo,然后我运行'git push'但有时另一个工作之前推送我可以推动导致推动失败

有没有办法只告诉 git 推送一个文件?(我不相信,但可能是我错了)或者有人遇到这种情况并有避免这种竞争条件的好方法?

这是我通常得到的错误:

git push 
Error reading response length from authentication socket.
To git@github.com:<my repo>.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:<my repo>.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

谢谢!

4

1 回答 1

1

首先,如果你的 CI 系统提交并推送到 git 存储库,你可能做错了。但也许你有一个非常非常好的理由这样做。

解决此问题的唯一方法是防止提交和推送的作业同时运行。您可以通过使用像https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin之类的插件或创建一个只有 1 个执行程序的从站并将此类作业限制为仅在该从站上运行来做到这一点.

于 2012-07-06T22:48:47.087 回答