GitHub - link89/jenkins-fire-cli: A Jenkins command line tool built with python-fire that wraps the jenkins-cli and job-dsl-core.

2 min read Original article ↗

A Jenkins command line tool built with python-fire that wraps the jenkins-cli and job-dsl-core.

Prerequisite

You need to ensure Java and Python>=3.8 are in the PATH to use this tool.

Install

It can be installed by the following command.

pip install jenkins-fire-cli

Get Started

Provision

You need to set Jenkins site url and user credential for the first time

jenkins-fire-cli config set jenkins.url http://your-jenkins-site
jenkins-fire-cli config set user.name john.doe

# user.token is optional, but you will be asked to type it when it is missing
# either api token or user's password will be OK, but it's recommneded to use token for the sake of security
jenkins-fire-cli config set user.token passw0rd 

# check configuration by running
jenkins-fire-cli config show

Before you start to run Jenkins commands, don't forget to run the init command for the first time, which will download jenkins-cli.jar and job-dsl-core-standalone.jar automatically.

Run jenkins-cli commands

As jenkins-fire-cli is a wrapper of jenkins-cli and job-dsl-core to make them easier to use, you can find the document of jenkins-cli in your Jenkins site or run the following command to open it in browser.

jenkins-fire-cli doc --open

You can use the run sub-command to execute jenkins-cli command, for example

jenkins-fire-cli run list-jobs  
# It is equivalent to "java -jar jenkins-cli.jar -s http://localhost:9090/ -webSocket list-jobs"

# For command with multiple arguments you need to quote them with ""
jenkins-fire-cli run "get-job my-job"  

Run job-dsl commands

You can also run the job-dsl command. For example you have a job-dsl script with the following content.

// file: /tmp/sample.dsl
pipelineJob('job-dsl-plugin') {
  definition {
    cpsScm {
      scm {
        git {
          remote {
            url('https://github.com/jenkinsci/job-dsl-plugin.git')
          }
          branch('*/master')
        }
      }
      lightweight()
    }
  }
}

Then you can run the following command to generate the job XML configuration.

jenkins-fire-cli dsl /tmp/sample-dsl.groovy

Then you will find a file named job-dsl-plugin.xml is generated. Now you can run another command to create this job in jenkins:

jenkins-file-cli run 'create-job job-dsl-plugin' < job-dsl-plugin.xml

Then you will find a new job named job-dsl-plugin has been created in jenkins.

Environment Variables

If you want to use this tool in CI system, you may use the following environment variable instead of global setting.

  • JENKINS_USER_ID: equivalent to user.name
  • JENKINS_API_TOKEN: equvalent to user.token
  • JENKINS_URL: equvalent to jenkins.url
  • JENKINS_JOB_DSL_PATH: path to the job-dsl jar package, you may skip init when this is set
  • JNEKINS_CLI_PATH: path to the jenkins-cli jar package, you may skip init when this is set