npm install jenkins-api
varjenkinsapi=require('jenkins-api');// no authvarjenkins=jenkinsapi.init("http://jenkins.yoursite.com");// username/passwordvarjenkins=jenkinsapi.init("http://username:password@jenkins.yoursite.com");// API Tokenvarjenkins=jenkinsapi.init('https://username:token@jenkins.company.com');// Password that needs to be %-encodedconst{URL}=require('url');constjenkinsUrl=newURL('https://username@jenkins.company.com');jenkinsUrl.password='some_weirdPASSWORD123!@#$%^&*()~`\\/;\'';varjenkins=jenkinsapi.init(jenkinsUrl.href);If you need additional request parameters you can add them as explained in 'optional' section.
jenkins.build('job-in-jenkins',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.build_with_params('job-in-jenkins',(optional){depth: 1,<param>:<value>, token: 'jenkins-token',...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.stop_build('job-in-jenkins','build-number',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.console_output('job-in-jenkins','buildname',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.build_info('job-in-jenkins','build-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.last_build_info('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.last_completed_build_info('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.all_builds('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.test_result('job-in-jenkins','build-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});// jenkins.last_build_report('job-in-jenkins', (optional) {depth: 1, <param>:<value>, ...}, function(err, data) {// if (err){ return console.log(err); }// console.log(data)// });jenkins.delete_build('job-in-jenkins','build-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.all_jobs((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.get_config_xml('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.update_config('job-to-update',function(config){// function which takes the config.xml, and returns// the new config xml for the new jobreturnconfig.replace('development','feature-branch');},(optional){token: 'jenkins-token', ...},function(err,data){// if no error, job was copiedif(err){returnconsole.log(err);}console.log(data)});jenkins.update_job('job-to-update',xmlConfigString,(optional){token: 'jenkins-token', ...},function(err,data){// if no error, job was copiedif(err){returnconsole.log(err);}console.log(data)});jenkins.job_info('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.create_job('job-in-jenkins',xmlConfigString,(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});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 jobreturnconfig.replace('development','feature-branch');},(optional){token: 'jenkins-token', ...},function(err,data){// if no error, job was copiedif(err){returnconsole.log(err);}console.log(data)});jenkins.delete_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.enable_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.disable_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.last_success('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.last_result('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.queue((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.queue_item('queue-item-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.cancel_item('queue-item-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.computers((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.all_views((optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.create_view('new-view-name',(optional)viewMode='hudson.model.ListView',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.create_view('view-name',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});varviewConfig={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){returnconsole.log(err);}console.log(data)});jenkins.delete_view('view-in-jenkins',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.add_job_to_view('view-in-jenkins','job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.remove_job_from_view('view-in-jenkins','job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.all_jobs_in_view('view-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});jenkins.all_installed_plugins((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)})// var plugin = 'copyartifact@1.3.8';varplugin='copyartifact@current';jenkins.install_plugin(plugin,(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.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.
You can set the default configuration which will be use in all HTTP requests by calling init with the additional options parameter:
// default request optionsvarjenkins=jenkinsapi.init("http://jenkins.yoursite.com",{request: {strictSSL: false}});Futhermore, you can set your remote job token for authentication (as well as any other default url params):
// default request optionsvarjenkins=jenkinsapi.init("http://jenkins.yoursite.com",{request: {strictSSL: false}},{token: '<job_token_here>'});Since node-jenkins-api uses request/request as HTTP client, please refer to the documentation for available options. Default values can be found in the source code (search for "default").
Modeled after the Python Jenkins API