https://github.com/joelee2012/api4jenkins
Python sync/async client library for Jenkins API
https://github.com/joelee2012/api4jenkins
asynchronous jenkins jenkins-api jenkins-restapi jenkinsapi python-jenkins
Last synced: 2 months ago
JSON representation
Python sync/async client library for Jenkins API
- Host: GitHub
- URL: https://github.com/joelee2012/api4jenkins
- Owner: joelee2012
- License: apache-2.0
- Created: 2019-11-05T12:03:34.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-03-20T09:05:25.000Z (4 months ago)
- Last Synced: 2025-05-13T04:07:09.007Z (2 months ago)
- Topics: asynchronous, jenkins, jenkins-api, jenkins-restapi, jenkinsapi, python-jenkins
- Language: Python
- Homepage: https://api4jenkins.readthedocs.io/
- Size: 247 KB
- Stars: 94
- Watchers: 5
- Forks: 23
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/joelee2012/api4jenkins/actions/workflows/unittest.yml)
[](https://github.com/joelee2012/api4jenkins/actions/workflows/integration.yml)

[](https://codecov.io/gh/joelee2012/api4jenkins)



[](https://api4jenkins.readthedocs.io/en/latest/?badge=latest)
# Jenkins Python Client
[Python3](https://www.python.org/) client library for [Jenkins API](https://www.jenkins.io/doc/book/using/remote-access-api/) which provides sync and async APIs.
# Features
- 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# Installation
```bash
python3 -m pip install api4jenkins
```# Quick start
Sync example:
```python
>>> from api4jenkins import Jenkins
>>> client = Jenkins('http://127.0.0.1:8080/', auth=('admin', 'admin'))
>>> client.version
'2.176.2'
>>> xml = """
...
...
...
... echo $JENKINS_VERSION
...
...
... """
>>> 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/jenkins2989549474028065940.sh
+ echo $JENKINS_VERSION
2.176.2
Finished: SUCCESS
>>> build.building
False
>>> build.result
'SUCCESS'
```Async example
```python
import asyncio
import time
from api4jenkins import AsyncJenkinsasync main():
client = AsyncJenkins('http://127.0.0.1:8080/', auth=('admin', 'admin'))
print(await client.version)
xml = """
echo $JENKINS_VERSION
"""
await client.create_job('job', xml)
item = await client.build_job('job')
while not await item.get_build():
time.sleep(1)
build = await item.get_build()
async for line in build.progressive_output():
print(line)print(await build.building)
print(await build.result)asyncio.run(main())
```# Documentation
User Guide and API Reference is available on [Read the Docs](https://api4jenkins.readthedocs.io/)