Jenkins CI Stuff¶
work in progress.. YMMV..
Command Line Jenkins Control with Auth¶
use strict; use warnings; use LWP::UserAgent; use JSON::XS; sub jenkinsAPI { my $path = shift; my $params = shift || {}; my $ua = LWP::UserAgent->new(timeout => 10, agent => 'blabla/123'); # here's the trick: $ua->default_headers()->authorization_basic($jenkinsUser, $jenkinsKey); my $url = $jenkinsUrl . $path . '/api/json?pretty=true'; $url .= "&$_=$params->{$_}" for (sort keys %{$params}); DEBUG1("jenkinsAPI: %s", $url); my $resp = $ua->get($url); DEBUG1("jenkinsAPI: %s", $resp->status_line()); if ($resp->is_success()) { my $content = $resp->decoded_content(); # JSON data #DEBUG1("jenkins said:", split(/n/, $content)); return JSON::XS->new()->utf8()->decode( $content ); } else { ERROR("Ouch! %s", $resp->status_line(), 500); } } sub jenkinsPOST { my $path = shift; my $params = shift; my $ua = LWP::UserAgent->new(timeout => 10, agent => 'blabla/123'); # here's the tricks: $ua->requests_redirectable([ qw(GET HEAD POST) ]); # POSTs will redirect.. $ua->default_headers()->authorization_basic($jenkinsUser, $jenkinsKey); my $url = $jenkinsUrl . $path; DEBUG1("jenkinsPOST: %s", $url); #$params->{json} = JSON::XS->new()->utf8()->canonical(1)->pretty(1)->encode($params); my $resp = $ua->post($url, $params); DEBUG1("jenkins: %s", $resp->status_line()); #my $content = $resp->decoded_content(); #DEBUG1("jenkins said:", split(/n/, $content)); if ($resp->is_success()) { return 1; } else { ERROR("Ouch! %s", $resp->status_line()); return 0; } }
created: 2015-01-06, updated: 2015-09-16