我的Jenkins中有一个作业设置,它将git存储库(在Web上)复制到我们的本地(intranet)git。它可以在99%的时间内正常工作。
但是偶尔,由于我们的互联网连接不是很好,它无法连接到远程存储库。问题不在于连接问题,这是一个给定的问题。问题在于詹金斯如何处理它。
现在设置为每15分钟运行一次,以查找远程仓库中的更改。 (我们还没设法设置一个webhook)十次中有九次没有,它以“没有变化 - 好”结束。
当互联网连接不好时,git上的查询会超时,但不是中止作业,而是在15分钟后再次运行,它会疯狂并尝试下载整个仓库,这几乎是200mb大小,当然它会崩溃 - 因为,那时的连接并不好。最糟糕的部分?在我手动完成之前,作业不会再次运行。
有关如何解决此问题的任何提示?下面是一个显示Jenkins奇怪行为的日志。
16:30:09 > git fetch --tags --progress https://xxxxxx@git.ng.bluemix.net/yyy/mmmmm.git +refs/heads/*:refs/remotes/origin/*
16:40:09 ERROR: Timeout after 10 minutes
16:40:09 ERROR: Error cloning remote repo 'origin'
16:40:10 hudson.plugins.git.GitException: Command "git fetch --tags --progress https://xxxxxx@git.ng.bluemix.net/yyy/mmmmm.git +refs/heads/*:refs/remotes/origin/*" returned status code 143:
16:40:10 stdout:
16:40:10 stderr: remote: Counting objects: 45507, done.
16:40:10 remote: Compressing objects: 0% (1/397)
remote: Compressing objects: 1% (4/397)
remote: Compressing objects: 2% (8/397)
remote: Compressing objects: 3% (12/397)
remote: Compressing objects: 4% (16/397)
[...]
Receiving objects: 54% (24849/45507), 83.98 MiB | 82.00 KiB/s
Receiving objects: 54% (24849/45507), 84.04 MiB | 84.00 KiB/s
16:40:10 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1799)
16:40:10 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1525)
16:40:10 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:65)
答案 0 :(得分:1)
这可能不是最光荣的解决方案,但在高级项目选项下设置重试计数可能会减轻您的一些困境。如果设置了重试计数,Jenkins将在构建失败时重试检查存储库中的代码一定次数(无论它设置为什么)。
如果Jenkins服务器实际上崩溃了,听起来它可能是你提供的详细信息,那么我建议立即实现webhook,并进行手动构建,直到该过程得到纠正。在短时间内进行手动构建没有任何问题。它仍然是一种可接受的CI实践,尽管完全自动化是理想的。