python-jenkins/doc/source/examples.rst
Kevin L. Mitchell 244b4fed30 Allow setting the next build number
We can discover the next build number Jenkins will use for a particular
job using get_job_info(), but there's currently no way through
python-jenkins to set the next build number.  This change introduces
the set_next_build_number() method which, given a job name and a
desired number, sets the next build number of the named job to the
given number.

Limitations: Jenkins enforces that build numbers must be monotonically
increasing, but gives no indication of an error; it simply ignores the
offending value.

Change-Id: I23b5a84b7ea37d66bf778a89343e3c81ffa9ceb6
2015-09-24 10:06:05 -05:00

153 lines
4.5 KiB
ReStructuredText

Using Python-Jenkins
====================
The python-jenkins library allows management of a Jenkins server through
the Jenkins REST endpoints. Below are examples to get you started using
the library. If you need further help take a look at the :doc:`api`
docs for more details.
Example 1: Get version of Jenkins
---------------------------------
This is an example showing how to connect to a Jenkins instance and
retrieve the Jenkins server version.
::
import jenkins
server = jenkins.Jenkins('http://localhost:8080', username='myuser', password='mypassword')
version = server.get_version()
print version
The above code prints the version of the Jenkins master running on 'localhost:8080'
From Jenkins vesion 1.426 onward you can specify an API token instead of your
real password while authenticating the user against the Jenkins instance.
Refer to the `Jenkins Authentication`_ wiki for details about how you
can generate an API token. Once you have an API token you can pass the API token
instead of a real password while creating a Jenkins instance.
.. _Jenkins Authentication: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients
Example 2: Working with Jenkins Jobs
------------------------------------
This is an example showing how to create, configure and delete Jenkins jobs.
::
server.create_job('empty', jenkins.EMPTY_CONFIG_XML)
jobs = server.get_jobs()
print jobs
server.build_job('empty')
server.disable_job('empty')
server.copy_job('empty', 'empty_copy')
server.enable_job('empty_copy')
server.reconfig_job('empty_copy', jenkins.RECONFIG_XML)
server.delete_job('empty')
server.delete_job('empty_copy')
# build a parameterized job
# requires creating and configuring the api-test job to accept 'param1' & 'param2'
server.build_job('api-test', {'param1': 'test value 1', 'param2': 'test value 2'})
last_build_number = server.get_job_info('api-test')['lastCompletedBuild']['number']
build_info = server.get_job_info('api-test', last_build_number)
print build_info
Example 3: Working with Jenkins Views
-------------------------------------
This is an example showing how to create, configure and delete Jenkins views.
::
server.create_view('EMPTY', jenkins.EMPTY_VIEW_CONFIG_XML)
view_config = server.get_view_config('EMPTY')
views = server.get_views()
server.delete_view('EMPTY')
print views
Example 4: Working with Jenkins Plugins
---------------------------------------
This is an example showing how to retrieve Jenkins plugins information.
::
plugins = server.get_plugins_info()
print plugins
The above example will print a dictionary containing all the plugins that
are installed on the Jenkins server. An example of what you can expect
from the :func:`get_plugins_info` method is documented in the :doc:`api`
doc.
Example 5: Working with Jenkins Nodes
-------------------------------------
This is an example showing how to add, configure, enable and delete Jenkins nodes.
::
server.create_node('slave1')
nodes = get_nodes()
print nodes
node_config = server.get_node_info('slave1')
print node_config
server.disable_node('slave1')
server.enable_node('slave1')
Example 6: Working with Jenkins Build Queue
-------------------------------------------
This is an example showing how to retrieve information on the Jenkins queue.
::
server.build_job('foo')
queue_info = server.get_queue_info()
id = queue_info[0].get('id')
server.cancel_queue(id)
Example 7: Working with Jenkins Cloudbees Folders
-------------------------------------------------
Requires the `Cloudbees Folders Plugin
<https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Folders+Plugin>`_ for
Jenkins.
This is an example showing how to create, configure and delete Jenkins folders.
::
server.create_job('folder', jenkins.EMPTY_FOLDER_XML)
server.create_job('folder/empty', jenkins.EMPTY_FOLDER_XML)
server.copy_job('folder/empty', 'folder/empty_copy')
server.delete_job('folder/empty_copy')
server.delete_job('folder')
Example 8: Updating Next Build Number
-------------------------------------
Requires the `Next Build Number Plugin
<https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin>`_
for Jenkins.
This is an example showing how to update the next build number for a
Jenkins job.
::
next_bn = server.get_job_info('job_name')['nextBuildNumber']
server.set_next_build_number('job_name', next_bn + 50)