nodejs-jenkins-api
Install
npm install jenkins-api
Usage
Setup
var jenkinsapi = require('jenkins-api');
var jenkins = jenkinsapi.init("http://jenkins.yoursite.com");
var jenkins = jenkinsapi.init("http://username:password@jenkins.yoursite.com");
var jenkins = jenkinsapi.init('https://username:token@jenkins.company.com');
If you need additional request parameters you can add them as explained in 'optional' section.
Builds
build
jenkins.build('job-in-jenkins', (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
build_with_params
jenkins.build_with_params('job-in-jenkins', (optional){depth: 1, <param>:<value>, token: 'jenkins-token',...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
stop build
jenkins.stop_build('job-in-jenkins', 'build-number', (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
console output
jenkins.console_output('job-in-jenkins', 'buildname', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
build info
jenkins.build_info('job-in-jenkins', 'build-number', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
last build info
jenkins.last_build_info('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
last completed build info
jenkins.last_completed_build_info('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
all builds
jenkins.all_builds('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
test result/report
jenkins.test_result('job-in-jenkins', 'build-number', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
last build report - OBSOLET use last_build_info
delete build data for job
jenkins.delete_build('job-in-jenkins', 'build-number', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
Jobs
all jobs
jenkins.all_jobs((optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
get config xml
jenkins.get_config_xml('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
update existing job configuration
jenkins.update_config('job-to-update'
,function(config) {
return config.replace('development','feature-branch');
}
,(optional){token: 'jenkins-token', ...}
,function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
update job
jenkins.update_job('job-to-update', xmlConfigString, (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
job info
jenkins.job_info('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
create job
jenkins.create_job('job-in-jenkins', xmlConfigString, (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
copy job
jenkins.copy_job('job-to-copy'
,'new-job-title'
,function(config) {
return config.replace('development','feature-branch');
}
,(optional){token: 'jenkins-token', ...}
,function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
delete job
jenkins.delete_job('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
enable job
jenkins.enable_job('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
disable job
jenkins.disable_job('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
last success
jenkins.last_success('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
last result
jenkins.last_result('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
Queue
get all queued items
jenkins.queue((optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
get one queued item
jenkins.queue_item('queue-item-number', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
cancel queued item
jenkins.cancel_item('queue-item-number', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
get all jenkins computers (aka workers)
jenkins.computers((optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
Views
get all views
jenkins.all_views((optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
create view
jenkins.create_view('new-view-name', (optional)viewMode = 'hudson.model.ListView', (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
view info
jenkins.create_view('view-name', (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
update view
var viewConfig = {
name: "view-in-jenkins",
"description": "This is the view-in-jenkins View",
"statusFilter": "",
"job-in-jenkins": true,
"useincluderegex": true,
"includeRegex": "prefix.*",
"columns": [{"stapler-class": "hudson.views.StatusColumn", "$class": "hudson.views.StatusColumn"}, {"stapler-class": "hudson.views.WeatherColumn", "$class": "hudson.views.WeatherColumn"}, {"stapler-class": "hudson.views.JobColumn", "$class": "hudson.views.JobColumn"}, {"stapler-class": "hudson.views.LastSuccessColumn", "$class": "hudson.views.LastSuccessColumn"}, {"stapler-class": "hudson.views.LastFailureColumn", "$class": "hudson.views.LastFailureColumn"}, {"stapler-class": "hudson.views.LastDurationColumn", "$class": "hudson.views.LastDurationColumn"}, {"stapler-class": "hudson.views.BuildButtonColumn", "$class": "hudson.views.BuildButtonColumn"}]
};
jenkins.update_view('view-in-jenkins', viewConfig, (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
delete view
jenkins.delete_view('view-in-jenkins', (optional){token: 'jenkins-token', ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
add job to view
jenkins.add_job_to_view('view-in-jenkins', 'job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
remove job from view
jenkins.remove_job_from_view('view-in-jenkins', 'job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
get all jobs in view
jenkins.all_jobs_in_view('view-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
if (err){ return console.log(err); }
console.log(data)
});
Plugins
get all installed plugins
jenkins.all_installed_plugins((optional){token: 'jenkins-token', ...}, function(err, data){
if (err){ return console.log(err); }
console.log(data)
})
install a plugin
var plugin = 'copyartifact@current';
jenkins.install_plugin(plugin, (optional){token: 'jenkins-token', ...}, function(err, data){
if (err){ return console.log(err, data); }
console.log(data)
});
NOTE: It will report successful even if the plugin is already installed.
NOTE: Prevent Cross Site Request Forgery exploits need be disabled in Configure Global Security.
Default configuration
You can set the default configuration which will be use in all HTTP requests by calling init with the additional options parameter:
var jenkins = jenkinsapi.init("http://jenkins.yoursite.com", {strictSSL: false});
Futhermore, you can set your remote job token for authentication:
var jenkins = jenkinsapi.init("http://jenkins.yoursite.com", {strictSSL: false}, '<job_token_here>');
Since node-jenkins-api uses request/request as HTTP client, please refer to the documentation for available options.
Notes
Modeled after the Python Jenkins API