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

San*_*Dvs 3 c# jenkins jenkins-plugins jenkins-pipeline

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

构建示例

建物

控制台输出:

构建的控制台输出

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

回显$ JENKINS_HOME / jobs / $ JOB_NAME / builds / $ {BUILD_NUMBER} / log

回声$ BUILD_URL / consoleText

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

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

但是如果我尝试使用c#.net从中获取数据,它将通过我出现异常

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

 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;
    }
Run Code Online (Sandbox Code Playgroud)

例外:

例外

dsa*_*don 7

所以对于使用consoleFull我正在使用非常肮脏的输出curl

例:

curl -s -S  -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/consoleFull"
Run Code Online (Sandbox Code Playgroud)

输出:用html内容包装的许多行:

 <span class="timestamp"><b>09:04:32</b> </span><span style="color: #00CD00;">ok:</span>
Run Code Online (Sandbox Code Playgroud)

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

curl -s -S  -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/logText/progressiveText?start=0"
Run Code Online (Sandbox Code Playgroud)

并且您将获得相同的控制台日志输出,而没有html,span的东西


use*_*900 0

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

请参阅使用示例进行身份验证