首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins REST API用于获取作业和作业控制台日志

Jenkins REST API用于获取作业和作业控制台日志
EN

Stack Overflow用户
提问于 2017-07-11 12:09:57
回答 4查看 18.5K关注 0票数 8

如何使用Jenkins REST API获取作业的详细信息以及控制台输出

构建示例

控制台输出:

我正在使用以下命令获取控制台日志的路径

echo $JENKINS_HOME/jobs/$JOB_NAME/builds/${BUILD_NUMBER}/log

echo $BUILD_URL/consoleText

它将提供控制台日志的路径

http://localhost:8080/job/Echo/25//consoleText

但是,如果我尝试使用c#.net从其中获取数据,它将通过我来处理一个异常

我使用以下代码来获取数据

代码语言:javascript
运行
复制
 public string Download_Contents(string URI)
    {
        string Data = string.Empty;
        try
        {
            using (var wc = new System.Net.WebClient())
                Data = wc.DownloadString(URI);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return Data;
    }

例外:

EN

回答 4

Stack Overflow用户

发布于 2018-01-22 21:43:35

因此,为了使用consoleFull,我使用curl得到了非常脏的输出

示例:

代码语言:javascript
运行
复制
curl -s -S  -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/consoleFull"

输出:包含html内容的许多行:

代码语言:javascript
运行
复制
 <span class="timestamp"><b>09:04:32</b> </span><span style="color: #00CD00;">ok:</span>

所以我的解决方案是使用:

代码语言:javascript
运行
复制
curl -s -S  -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/logText/progressiveText?start=0"

并且您将获得相同的控制台日志输出,但不包含html、span之类的内容

票数 18
EN

Stack Overflow用户

发布于 2017-07-11 13:46:17

要使脚本化客户端(如wget)调用需要授权(如计划构建)的操作,请使用HTTP BASIC身份验证来指定用户名和API令牌。

请参阅带有示例的Authentication

票数 0
EN

Stack Overflow用户

发布于 2018-07-06 20:36:50

我们可以通过上面提到的http://localhost:8080/job/Echo/25//consoleText地址获取控制台日志

代码语言:javascript
运行
复制
URL urls = new URL("http://localhost:8080/job/Echo/25//consoleText"); 
HttpURLConnection connection = (HttpURLConnection) urls.openConnection(); 
connection.setDoOutput(true); 
//connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36");

System.setProperty("http.agent", "Chrome");
connection.setInstanceFollowRedirects(false); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Content-Type", "application/json");

// Convert to a JSON object to print data
/*HttpServletRequest request;*/
BufferedReader br = new BufferedReader(new InputStreamReader(
        (connection.getInputStream())));

这对我很有效,如果有任何问题,请用ping命令

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45025231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档