Using Jenkins Cli to manage jobs and credentials

Pinterest LinkedIn Tumblr

Jenkins has a built-in command line interface that allows users and administrators to access Jenkins from a script or shell environment. This can be convenient for scripting of routine tasks, bulk updates, troubleshooting, and more.

The command line interface can be accessed over SSH or with the Jenkins CLI client, a .jar file distributed with Jenkins.

Downloading the client

To download the client:

curl -LO

Please note that if you are using a remote jenkins with username and password you need to authenticate as follows:

java -jar jenkins-cli.jar -auth username:password -s <command>

# Example
java -jar jenkins-cli.jar -auth username:password -s help

Add this -logger FINE to turn on logging.

Basic commands

# who-am-i - gets info about the current user's credentials and permissions
java -jar jenkins-cli.jar who-am-i

# list-jobs
java -jar jenkins-cli.jar list-jobs

# Download job called 'Build SanEclipse' to local xml file
java -jar jenkins-cli.jar get-job 'Build SanEclipse' > Build_San_Eclipse.xml

# create job from the xml file
cat Build_San_Eclipse.xml | java -jar jenkins-cli.jar  create-job 'Build San Eclipse'
java -jar jenkins-cli.jar create-job 'Build San Eclipse' < Build_San_Eclipse.xml

# list credentials
java -jar jenkins-cli.jar list-credentials system::system::jenkins

# list-credentials-providers
java -jar jenkins-cli.jar list-credentials-providers

# get-credentials-as-xml - github-token
java -jar jenkins-cli.jar get-credentials-as-xml system::system::jenkins _ github-token

# creating credentials from xml
java -jar jenkins-cli.jar create-credentials-by-xml  system::system::jenkins _ < github-token.xml

Job creation can also be done using ansible.

ansible-galaxy collection install community.general
ansible-galaxy collection install --ignore-certs community.general

The yaml file

- hosts: localhost
  connection: local
  gather_facts: False
    username: <username>
    password: <password>
    - name: Create Build San Eclipse job
        user: "{{ username }}"
        password: "{{ password }}"
        name: Build-San-Eclipse
        url: "{{ jenkins_host }}"
        config: "{{ lookup('file', 'Build_San_Eclipse.xml') }}"

This is how to use it

ansible-playbook create-san-eclipse-job.yaml -vvv

I am a Devops Engineer, but I would describe myself as a Tech Enthusiast who is a fan of Open Source, Linux, Automations, Cloud and Virtualization. I love learning and exploring new things so I blog in my free time about Devops related stuff, Linux, Automations and Open Source software. I can also code in Python and Golang.

Write A Comment