Jenkins - 在构建步骤期间检索完整的控制台输出

标签 jenkins continuous-integration hudson jenkins-plugins

上网搜了好几天,遇到类似this的问题.

我需要以原始(纯)文本检索控制台输出。但是,如果我能用 HTML 得到它也很好,我总是可以解析它。唯一的事情是我需要在构建步骤中获取它 ,这是一个问题,因为它应该可用的位置被截断了......

我尝试从以下 URL(相对于作业)检索控制台输出:

  • /consoleText
  • /logText/progressiveText
  • /logText/progressiveHTML

  • 这两个文本是纯文本,如果不是截断,那将是完美的,HTML 也是如此......正是我需要的 - 只有它被截断......

    我确信有可能以某种方式检索此信息,因为在查看 /consoleFull 时控制台实时更新,无需截断或缓冲。

    然而,在检查那个网页时,我没有找到我想要的内容,而是找到了它应该在的地方(我没有包括完整的页面代码,因为它几乎是不相关的,我相信那些回答能够找出并知道自己应该有什么)
          new Ajax.Request(href,{
              method: "post",
              parameters: {"start":e.fetchedBytes},
            requestHeaders: headers,
              onComplete: function(rsp,_) {
    
              var stickToBottom = scroller.isSticking();
              var text = rsp.responseText;
              if(text!="") {
                var p = document.createElement("DIV");
                e.appendChild(p); // Needs to be first for IE
                // Use "outerHTML" for IE; workaround for:
                // http://www.quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
                if (p.outerHTML) {
                  p.outerHTML = '<pre>'+text+'</pre>';
                  p = e.lastChild;
                }
                else p.innerHTML = text;
                Behaviour.applySubtree(p);
                if(stickToBottom) scroller.scrollToBottom();
              }
    
              e.fetchedBytes     = rsp.getResponseHeader("X-Text-Size");
              e.consoleAnnotator = rsp.getResponseHeader("X-ConsoleAnnotator");
                if(rsp.getResponseHeader("X-More-Data")=="true")
                  setTimeout(function(){fetchNext(e,href);},1000);
              else
                  $("spinner").style.display = "none";
              }
          });
    

    具体来说,我希望有一种方法可以让我从 text 获取内容不管它是什么。我不熟悉这种语言,因此不确定如何获得我想要的内容。插件无济于事,因为我想在构建步骤中检索此内容作为脚本的一部分

    最佳答案

    补充一些见解:当 Jenkins 构建正在进行时,对 .../consoleText URL 的响应最多达到 10000 行。
    我在 Python 中使用了“requests()”包。我用 curl 尝试了相同的 URL,但又只收到了前 10K 行。
    只有在构建完成后,这两种方法才会返回完整的日志(在我的例子中是 >22K 行)。

    我会进一步研究并希望报告回来。

    [2015-08-18] 更新:这似乎是一个已知问题(see here),它已在 Jenkins 1.618 及更高版本中修复。我仍在运行 1.615,因此无法验证。
    阿米尔

    关于Jenkins - 在构建步骤期间检索完整的控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792023/

    相关文章:

    docker - jenkins管道docker在docker代理上构建

    jenkins - 防止 Jenkins 在首次运行/种子作业时构建多分支管道的所有分支?

    grails - 与 Grails 持续集成

    ruby - 尽管 RVM 插件 Jenkins 使用了错误的 ruby​​ 版本

    java - 使用 jenkins 将 war 部署到 tomcat

    build - 有没有办法避免重复参数化 Jenkins 构建?

    linux - Jenkins 以非常高的 CPU 使用率运行

    tfs - TFS工作区映射冲突

    如果构建失败,Jenkins 不会执行 shell 脚本

    xcode - 用于使用最新 sdk 的 xcodebuild 参数。