Jenkins Intermittent在管道作业上从github挂起git clone / checkout

问题描述 投票:1回答:2

你有没有看到并且你有解决方案或调查这个问题的想法:

  • 使用来自GitHub SCM的Pipeline的jenkins管道作业间歇性地挂起克隆/结账
  • jenkins日志中没有任何关于这种情况的报道
  • 只有在我们有很多活动时才会发生(通常在sprint演示之前)
  • 在一段时间后清除 - 尚未能检测到很多模式 检查git [email protected]:MyTeam/myproject到/ var / lib / jenkins / jobs / myproject-dev-deploy / workspace @ script读取deploy / dev-Jenkinsfile git rev-parse --is-inside-work- tree#timeout = 10从远程Git存储库获取更改git config remote.origin.url [email protected]:MyTeam/myproject#timeout = 10从[email protected]获取上游更改:MyTeam / myproject git --version# timeout = 10使用GIT_SSH设置凭证myproject的部署密钥git fetch --tags --progress [email protected]:MyTeam/myproject + refs / heads /:refs / remotes / origin /```
github jenkins-pipeline
2个回答
1
投票

我通过git clone命令遇到了这个问题,解决这个问题花了我2天的时间。如果你在jenkins上运行windows shell / batch的git命令,可能是因为git ssh key问题...

Jenkins windows shell或batch命令将使用'system'帐户来处理git命令,其ssh密钥设置与gerrit插件或登录帐户不同。


A.不同的git ssh密钥路径

'system'帐户的git ssh键在以下路径中设置:

  • C:\ WINDOWS \ system32 \设置\ systemprofile \的.ssh
  • C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \的.ssh

您可以在系统帐户的这些路径中检查ssh密钥。


B.在known_hosts文件中注册密钥

Jenkins不会自动将已知主机的新密钥导入known_hosts文件。您可以通过以下步骤手动执行此操作:

  1. 在Windows中登录您的本地帐户
  2. SSH这个git远程路径直接ssh <git remote web site> -p <port>,键入是注册密钥enter image description here
  3. 从本地帐户known_hosts(C:\ Users \ .ssh)复制注册密钥,您将看到文件底部喜欢:

[gerrit.cartography.com]:29168,[10.25.174.78]:29418 SSH-RSA AAAAB3NzaC1yc2EAASSSSAQABAAAAgQDPHbDKCHL3oPbzDn3qaVZR8S1EZx / rb500Th / fjQYg5jrJ7PBMVVUyNTpJ2moje5hLYjNsVtXtcoNEZjImGul2dl3f + eHrCB27X5198jr8Wj66I / xsQCLEngd7l3velsdfgd3432fsdDiFaE9INjDjgngfNzlFA + CYpFsnaorZ6XSPQ ==

  1. 粘贴到'system'know_host文件。 C:\ WINDOWS \ system32 \设置\ systemprofile \的.ssh C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \的.ssh

我想你现在就能解决你的问题!好好享受!


0
投票

java应用程序中一个可怕的间歇性问题?我们去的JVM设置。幸运的是,CloudBees写了一篇关于这个Tuning Jenkins GC For Responsiveness and Stability with Large Instances的精彩文章

事实证明这不是主要因素。真正的原因是网络配置和备份作业对饱和度的影响。还是一篇优秀的文章。

以下是我们调试它的方式:

`

#!/usr/bin/env bash

echo Clearing Previous Run
rm -rf /tmp/debug-repo-http
rm -rf /tmp/debug-repo-ssh

echo clone1: `date`
time git clone https://github.com/github/debug-repo /tmp/debug-repo-http

echo clone2: `date`
time git clone [email protected]:github/debug-repo /tmp/debug-repo-ssh

echo Ping: `date`
time ping -c 10 github.com

#echo traceroute: `date`
#traceroute github.com
  • 设置jenkins作业以尝试结帐,失败并报告是否需要超过30秒 - 一次通过管道+插件和一次通过shell脚本
  • 开始运行各种测试:转储所有docker镜像并重新拉动,s3拉备份,s3推送备份等。
  • 在另一个网络区域重复测试并比较结果
© www.soinside.com 2019 - 2024. All rights reserved.