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

时间:2017-09-01 19:15:52

标签: github jenkins-pipeline

您是否看到并且您有解决方案或调查此问题的想法:

  • jenkins管道作业使用GitHub SCM中的Pipeline间歇性地挂起克隆/结帐
  • jenkins日志中没有关于这种情况的报道
  • 似乎只是在我们有很多活动时(通常在sprint演示之前)
  • 经过一段时间后清除 - 还没有能够发现很多模式

    检查git git@github.com:MyTeam/myproject into / var / lib / jenkins / jobs / myproject-dev-deploy / workspace @ script to read deploy / dev-Jenkinsfile  git rev-parse --is-inside-work-tree #timeout = 10 从远程Git存储库中获取更改  git config remote.origin.url git@github.com:MyTeam/myproject#timeout = 10 从git@github.com获取上游更改:MyTeam / myproject  git --version #timeout = 10 使用GIT_SSH设置凭证部署myproject的密钥  git fetch --tags --progress git@github.com:MyTeam/myproject + refs / heads / :refs / remotes / origin / ```

2 个答案:

答案 0 :(得分:1)

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

Jenkins Windows shell 批量命令将使用' 系统'帐户处理git命令,其ssh密钥设置与gerrit插件或登录帐户不同。

甲。不同的git ssh密钥路径

' 系统'的git ssh键帐户设置如下:

  • C:\的Windows \ system32 \设置\ systemprofile \的.ssh
  • C:\的Windows \ Syswow64资料\配置\ systemprofile \的.ssh

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

B中。在know_host文件中注册密钥

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

  1. 在Windows中登录您的本地帐户
  2. SSH这个git远程路径直接ssh <git remote web site> -p <port>,输入yes来注册密钥 enter image description here

  3. 复制已注册的密钥表单本地帐户know_host(C:\ Users \ .ssh)您将看到文件底部的内容:

  4.   

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

    1. 粘贴到&#39; 系统&#39; know_host文件。

      • C:\的Windows \ system32 \设置\ systemprofile \的.ssh
      • C:\的Windows \ Syswow64资料\配置\ systemprofile \的.ssh
    2. 我想你现在就能解决你的问题! 享受吧!

答案 1 :(得分: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 git@github.com: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推送备份等。

  • 在另一个网络区域重复测试并比较结果