Skip to content

Repository files navigation

nodejs-jenkins-api

NPM VersionNPM downloadsLicenseGithub Issues

Install

npm install jenkins-api

Usage

Setup

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.

Builds

build

jenkins.build('job-in-jenkins',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.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){returnconsole.log(err);}console.log(data)});

stop build

jenkins.stop_build('job-in-jenkins','build-number',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

console output

jenkins.console_output('job-in-jenkins','buildname',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.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){returnconsole.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){returnconsole.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){returnconsole.log(err);}console.log(data)});

all builds

jenkins.all_builds('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.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){returnconsole.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){returnconsole.log(err);}console.log(data)});

Jobs

all jobs

jenkins.all_jobs((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.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){returnconsole.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 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)});

update job

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)});

job info

jenkins.job_info('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

create job

jenkins.create_job('job-in-jenkins',xmlConfigString,(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.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 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)});

delete job

jenkins.delete_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

enable job

jenkins.enable_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

disable job

jenkins.disable_job('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

last success

jenkins.last_success('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

last result

jenkins.last_result('job-in-jenkins',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

Queue

get all queued items

jenkins.queue((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.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){returnconsole.log(err);}console.log(data)});

cancel queued item

jenkins.cancel_item('queue-item-number',(optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

get all jenkins computers (aka workers)

jenkins.computers((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

Views

get all views

jenkins.all_views((optional){depth: 1,<param>:<value>, ...},function(err,data){if(err){returnconsole.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){returnconsole.log(err);}console.log(data)});

view info

jenkins.create_view('view-name',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)});

update view

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)});

delete view

jenkins.delete_view('view-in-jenkins',(optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.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){returnconsole.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){returnconsole.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){returnconsole.log(err);}console.log(data)});

Plugins

get all installed plugins

jenkins.all_installed_plugins((optional){token: 'jenkins-token', ...},function(err,data){if(err){returnconsole.log(err);}console.log(data)})

install a plugin

// 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.

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 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").

Notes

Modeled after the Python Jenkins API

About

Jenkins API for NodeJS

Resources

Stars

365 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages