Jenkins Python Client

Python3 client library for Jenkins API.


  • Provides sync and async APIs

  • Object oriented, each Jenkins item has corresponding class, easy to use and extend

  • Base on api/json, easy to query/filter attribute of item

  • Setup relationship between class just like Jenkins item

  • Support api for almost every Jenkins item

  • Pythonic

  • Test with latest Jenkins LTS

Quick start

Here is an example to create and build job, then monitor progressive output until it’s done.

Sync example:

>>> from api4jenkins import Jenkins
>>> client = Jenkins('', auth=('admin', 'admin'))
>>> client.version
>>> xml = """<?xml version='1.1' encoding='UTF-8'?>
... <project>
...   <builders>
...     <hudson.tasks.Shell>
...       <command>echo $JENKINS_VERSION</command>
...     </hudson.tasks.Shell>
...   </builders>
... </project>"""
>>> client.create_job('path/to/job', xml)
>>> import time
>>> item = client.build_job('path/to/job')
>>> while not item.get_build():
...      time.sleep(1)
>>> build = item.get_build()
>>> for line in build.progressive_output():
...     print(line)
Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/freestylejob
[freestylejob] $ /bin/sh -xe /tmp/
Finished: SUCCESS
>>> build.building
>>> build.result

Async example:

import asyncio
import time
from api4jenkins import AsyncJenkins

async main():
    client = AsyncJenkins('', auth=('admin', 'admin'))
    print(await client.version)
    xml = """<?xml version='1.1' encoding='UTF-8'?>
        <command>echo $JENKINS_VERSION</command>
    await client.create_job('job', xml)
    item = await client.build_job('job')
    while not await item.get_build():
    build = await item.get_build()
    async for line in build.progressive_output():

    print(await build.building)
    print(await build.result)


Indices and tables