2 min read

Jenkins git克隆代码时出现"Timeout"错误

Jenkins git克隆代码时出现"Timeout"错误

构建项目时开发哥哥反馈有任务构建失败,构建了3个任务,有1个任务是失败的--重试了也是如此,于是查看了这几个仓库,发现除了代码仓库的容量大小不一致外,并无二致--任务失败的代码仓库容量比较大,已经接近1G的大小了。

同时从Jenkins任务的Console Output有如下报错信息:

+refs/heads/*:refs/remotes/origin/* # timeout=10 ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Command "git fetch --no-tags --progress -- https://git.xx.com.xx/xx/xxx-xxx.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: stdout:  stderr: remote: Enumerating objects: 562, done

结果提示是git在克隆代码失败导致整个构建任务失败,信息明朗了,于是尝试将timeout值改成10以上。

步骤

以多分支流水线为例,“分支源->高级的克隆行为->克隆和拉取操作的超时时间(分钟)”,缺省是10分钟,配置成高于10分钟

1
2


以上是针对单个任务的,实际上可以更改Jenkins的全局Timeout,参数如下:

 -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=1200

以kubernetes的编排YAML为例:

      containers:
        - name: jenkins2
          image: jenkins/jenkins:2.230-alpine
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
            - containerPort: 50000
          env:
            - name: LIMITS_MEMORY
              valueFrom:
                resourceFieldRef:
                  resource: limits.memory
                  divisor: 1Mi
            - name: JAVA_OPTS
              value: "-Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50-Dhudson.slaves.NodeProvisioner.MARGIN0=0.85"
            - name: JENKINS_JAVA_OPTIONS
              value: "-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true -Duser.timezone=Asia/Shanghai -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=1200"

参考引用