32

I am using a Perl script to trigger a build in Jenkins using LWP modules. This works but after executing the job, I would like to parse the console output.

Is there someway to get this?

3 Answers 3

77

Log into Jenkins and take a look at the bottom of the webpage near the right hand side and click on the REST API link. This will give you information about the Jenkins RESTful API which is a great way to pull information off of Jenkins once you understand how to construct the URL.

And, here's how you get the console text:

$ curl "${JENKINS_URL}/job/${JOB_NAME}/lastBuild/consoleText"

You can use Perl's various LWP modules to talk to Jenkins.

Sign up to request clarification or add additional context in comments.

6 Comments

Ugh… I was super excited when I saw this but it doesn't include the timestamps in the log messages!!! At least on version 1.595
I think the time stamps are not part of the log. It's an option for Jenkins to insert the time stamps when you view the log If you replace consoleText with consoleFull you'll get the log in HTML. You then need to parse that of course to extract the content. On Windows you can get that for free with Powershell. $resp = Invoke-Webrequest "$(JENKINS_URL)/job/$(JOB_NAME)/lastBuild/consoleFull" $resp.ParsedHtml.body.innerText > someFile.log (Powershell Core that is available also on Linux doesn't include ParsedHtml in the object due to a requirement to a MS DLL)
And now I found the real solution to this :D ${JENKINS_URL}/job/${JOB_NAME}/lastBuild/timestamps?appendLog&elapsed=HH:mm:ss.S
@Ingemar I believe the timestamps api method is provided by the Timestamper plugin. It also offers parameters like startLine, endLine, locale, etc.
Is there a way to include the pending build too? When I trigger a build it takes 2 top 3 seconds to initialize, during that time latestBuild indeed returns the previous build. I hate to add a sleep or something.
|
1

If you want to access the log from another Jenkins job that runs on the master, you can do it from a chained (child) job without needing to send an http GET. See https://stackoverflow.com/a/41974193/1580627.

Comments

0

Use the Log Parser Plugin for Jenkins. Read the page number 24 here for the configuration and other details.

1 Comment

Link points to nowhere

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.