How to get the details of the job along with it console output using Jenkins REST API
example of builds
console output:
I am using foll
we can get console log with Above URL mentioned http://localhost:8080/job/Echo/25//consoleText
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())));
it worked for me if any queries please ping me
So for using the consoleFull
i'm getting very dirty output using curl
example:
curl -s -S -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/consoleFull"
output: many lines wrapped with html stuff:
<span class="timestamp"><b>09:04:32</b> </span><span style="color: #00CD00;">ok:</span>
so my solution is to use:
curl -s -S -u "user":"password" "http://jenkins.domain.com/job/my_job_name/1077/logText/progressiveText?start=0"
and you will get the same console log output without the html,span stuff
To make scripted clients (such as wget) invoke operations that require authorization (such as scheduling a build), use HTTP BASIC authentication to specify the user name and the API token.
See Authentication with samples
You can try to use Jenkins API to obtain the crumbs based on the authentication (user/pass or user/token).
I'll paste below some code illustrating how to do that (it's powershell but the idea is the same and it's straight-forward to translate it to C#):
$user = 'user'
$pass = 'password'
# The header is the username and password concatenated together
$pair = "$($user):$($pass)"
# The combined credentials are converted to Base 64
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
# The base 64 credentials are then prefixed with "Basic"
$basicAuthValue = "Basic $encodedCreds"
# This is passed in the "Authorization" header
$Headers = @{
Authorization = $basicAuthValue
}
# Make a request to get a crumb. This will be returned as JSON
$json = Invoke-WebRequest -Uri 'http://jenkinsserver/jenkins/crumbIssuer/api/json' -Headers $Headers
# Parse the JSON so we can get the value we need
$parsedJson = $json | ConvertFrom-Json
# See the value of the crumb
Write-Host "The Jenkins crumb is $($parsedJson.crumb)"
# Extract the crumb filed from the returned json, and assign it to the "Jenkins-Crumb" header
$BuildHeaders = @{
"Jenkins-Crumb" = $parsedJson.crumb
Authorization = $basicAuthValue
}
Invoke-WebRequest -Uri "http://jenkinsserver/jenkins/job/Run%20a%20script/build" -Headers $BuildHeaders -Method Post
Source: https://octopus.com/blog/jenkins-rest-api