有没有办法告诉詹金斯克隆Git回购有多远?

时间:2012-05-30 01:50:32

标签: git jenkins

我现在有一个在Jenkins运行的构建,我在控制台输出中看到的只有:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/Main
Checkout:Main / /var/lib/jenkins/workspace/Main - hudson.remoting.LocalChannel@820ea4
Using strategy: Default
Cloning the remote Git repository
Cloning repository origin

我理解这可能是因为Git进程尚未刷新其输出流;但令人沮丧的是,如果我从终端运行git clone,那么我可以清楚地看到实时更新的百分比,告诉我该命令的完成程度。

除了:

之外并不重要
  1. 我需要尽快关闭这台机器。
  2. 此特定仓库需要时间进行克隆(例如超过一小时)。
  3. 因此,如果克隆比例为90%,我想让它完成。如果它更像50%那么我想要杀死构建并在早上重新开始。
  4. 有人知道是否有可能以某种方式得到我渴望的信息?

2 个答案:

答案 0 :(得分:2)

搜索克隆并查看它检查git版本的位置,以确定它是否通过了--progress标志。如果您的构建已经开始,那么您可以做的并不多,但为了将来参考,这可能会有所帮助。

--progress
       Progress status is reported on the standard error stream by default
       when it is attached to a terminal, unless -q is specified. This
       flag forces progress status even if the standard error stream is
       not directed to a terminal.

答案 1 :(得分:0)

我看到了类似的症状,我发现它是由Jenkin的Git插件clone()方法中的工作区的递归删除引起的(请参阅下面的代码片段)。就我而言,我们有许多共享一个自定义工作区的作业,因此删除调用需要数小时才能完成。删除自定义工作区后,克隆操作成功完成。

来自https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitAPI.java

final String source = remoteConfig.getURIs().get(0).toPrivateString();

listener.getLogger().println("Cloning repository " + source);
final int[] gitVer = getGitVersion();

try {
    workspace.deleteRecursive();  // This line was taking forever
} catch (Exception e) {
    e.printStackTrace(listener.error("Failed to clean the workspace"));
    throw new GitException("Failed to delete workspace", e);
}

(这应该是对前一个答案的评论,但我还没有代表发表评论。)