jenkins-api
v0.3.1
Published
Jenkins API written in Node.js
Downloads
22,107
Readme
nodejs-jenkins-api
Install
Usage
Setup
var jenkinsapi = require('jenkins-api');
// no auth
var jenkins = jenkinsapi.init("http://jenkins.yoursite.com");
// username/password
var jenkins = jenkinsapi.init("http://username:[email protected]");
// API Token
var jenkins = jenkinsapi.init('https://username:[email protected]');
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
// jenkins.last_build_report('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {
// if (err){ return console.log(err); }
// console.log(data)
// });
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) {
// function which takes the config.xml, and returns
// the new config xml for the new job
return config.replace('development','feature-branch');
}
,(optional){token: 'jenkins-token', ...}
,function(err, data) {
// if no error, job was copied
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 no error, job was copied
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) {
// function which takes the config.xml, and returns
// the new config xml for the new job
return config.replace('development','feature-branch');
}
,(optional){token: 'jenkins-token', ...}
,function(err, data) {
// if no error, job was copied
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 = '[email protected]';
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:
// default request options
var jenkins = jenkinsapi.init("http://jenkins.yoursite.com", {strictSSL: false});
Futhermore, you can set your remote job token for authentication:
// default request options
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