Jenkins Python Client¶
Python3 client library for Jenkins API.
Features¶
Provides
syncandasyncAPIsObject oriented, each Jenkins item has corresponding class, easy to use and extend
Base on
api/json, easy to query/filter attribute of itemSetup 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('http://127.0.0.1:8080/', auth=('admin', 'admin'))
>>> client.version
'2.176.2'
>>> 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/jenkins2989549474028065940.sh
+ echo $JENKINS_VERSION
2.176.2
Finished: SUCCESS
>>> build.building
False
>>> build.result
'SUCCESS'
Async example:
import asyncio
import time
from api4jenkins import AsyncJenkins
async main():
client = AsyncJenkins('http://127.0.0.1:8080/', auth=('admin', 'admin'))
print(await 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>"""
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())
Contents:
- Installation
- Release History
- 2.0.2 (2023-11-06)
- 2.0.1 (2023-10-31)
- 2.0.0 (2023-10-19)
- 1.15.0 (2023-08-30)
- 1.14.1 (2023-07-24)
- 1.14 (2022-11-28)
- 1.13 (2022-10-01)
- 1.12 (2022-08-04)
- 1.11 (2022-07-08)
- 1.10 (2022-05-17)
- 1.9.1 (2022-03-29)
- 1.9 (2022-03-12)
- 1.8 (2021-12-27)
- 1.7 (2021-10-09)
- 1.6 (2021-08-01)
- 1.5.1 (2021-05-11)
- 1.5 (2021-04-29)
- 1.4 (2021-03-31)
- 1.3 (2021-02-28)
- 1.2 (2021-01-31)
- 1.1 (2020-12-31)
- 1.0 (2020-11-15)
- Examples
- API reference
AsyncJenkinsJenkinsAsyncBitbucketSCMNavigatorAsyncExternalJobAsyncFolderAsyncFreeStyleProjectAsyncGitHubSCMNavigatorAsyncIvyModuleSetAsyncJobAsyncMatrixProjectAsyncMavenModuleSetAsyncMultiJobProjectAsyncOrganizationFolderAsyncPipelineMultiBranchDefaultsProjectAsyncProjectAsyncWorkflowJobAsyncWorkflowMultiBranchProjectBitbucketSCMNavigatorExternalJobFolderFreeStyleProjectGitHubSCMNavigatorIvyModuleSetJobMatrixProjectMavenModuleSetMultiJobProjectNameMixInOrganizationFolderPipelineMultiBranchDefaultsProjectProjectWorkflowJobWorkflowMultiBranchProjectAsyncBuildAsyncFreeStyleBuildAsyncMatrixBuildAsyncWorkflowRunBuildFreeStyleBuildMatrixBuildWorkflowRunAsyncPendingInputActionPendingInputActionAsyncBlockedItemAsyncBuildableItemAsyncLeftItemAsyncQueueAsyncQueueItemAsyncWaitingItemBlockedItemBuildableItemLeftItemQueueQueueItemWaitingItemAsyncCredentialAsyncCredentialsAsyncDomainCredentialCredentialsDomainAsyncDockerComputerAsyncEC2ComputerAsyncIterBuildingBuildsMixInAsyncKubernetesComputerAsyncMasterComputerAsyncNodeAsyncNodesAsyncSlaveComputerDockerComputerEC2ComputerIterBuildingBuildsMixInKubernetesComputerMasterComputerMasterComputerMixInNodeNodesSlaveComputerAsyncPluginAsyncPluginsManagerAsyncUpdateCenterPluginPluginsManagerUpdateCenterAllViewAsyncAllViewAsyncDashboardAsyncListViewAsyncMyViewAsyncNestedViewAsyncSectionedViewAsyncViewAsyncViewsDashboardListViewMyViewNestedViewSectionedViewViewViewsAsyncSystemSystemApiTokenAsyncUserAsyncUsersUserUsersAsyncCoverageReportAsyncCoverageResultAsyncCoverageTrendsAsyncGetMixInAsyncTestReportCoverageCoverageElementCoverageReportCoverageResultCoverageTrendCoverageTrendsGetMixInResultBaseTestCaseTestReportTestSuiteAsyncItemBaseItemItemappend_slash()camel()new_item()snake()ActionsMixInAsyncActionsMixInAsyncConfigurationMixInAsyncDeletionMixInAsyncDescriptionMixInAsyncEnableMixInAsyncRawJsonMixInAsyncRunScriptMixInConfigurationMixInDeletionMixInDescriptionMixInEnableMixInParameterRawJsonMixInRunScriptMixInUrlMixInasync_check_response()async_log_request()check_response()log_request()new_async_http_client()new_http_client()AuthenticationErrorBadRequestErrorItemExistsErrorItemNotFoundErrorJenkinsAPIExceptionServerErrorUnsafeCharacterError