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.
Related content:
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 http://remote.jenkins.ci:8080/jnlpJars/jenkins-cli.jar
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 http://remote.jenkins.ci:8080/ <command>
# Example
java -jar jenkins-cli.jar -auth username:password -s http://remote.jenkins.ci:8080/ 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
vars:
jenkins_host: http://127.0.0.1:8080/
username: <username>
password: <password>
tasks:
- name: Create Build San Eclipse job
community.general.jenkins_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