Jenkins Python Client¶
Python3 client library for Jenkins API.
Features¶
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.
>>> from api4jenkins import Jenkins
>>> j = Jenkins('http://127.0.0.1:8080/', auth=('admin', 'admin'))
>>> j.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>"""
>>> j.create_job('freestylejob', xml)
>>> job = j.get_job('freestylejob')
>>> print(job)
<FreeStyleProject: http://127.0.0.1:8080/job/freestylejob/>
>>> print(job.parent)
<Jenkins: http://127.0.0.1:8080/>
>>> print(job.jenkins)
<Jenkins: http://127.0.0.1:8080/>
>>> import time
>>> item = job.build()
>>> while not item.get_build():
... time.sleep(1)
>>> build = item.get_build()
>>> print(build)
<FreeStyleBuild: http://127.0.0.1:8080/job/freestylejob/1/>
>>> 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'
- Installation
- Release History
- Examples
- API reference
Jenkins
Jenkins.api_json()
Jenkins.build_job()
Jenkins.check_job_name()
Jenkins.copy_job()
Jenkins.create_job()
Jenkins.credentials
Jenkins.crumb
Jenkins.delete_job()
Jenkins.dynamic_attrs
Jenkins.exists()
Jenkins.get_job()
Jenkins.handle_req()
Jenkins.headers
Jenkins.iter_jobs()
Jenkins.me
Jenkins.nodes
Jenkins.plugins
Jenkins.queue
Jenkins.system
Jenkins.users
Jenkins.validate_jenkinsfile()
Jenkins.version
Jenkins.views
BitbucketSCMNavigator
BitbucketSCMNavigator.api_json()
BitbucketSCMNavigator.build()
BitbucketSCMNavigator.building
BitbucketSCMNavigator.configure()
BitbucketSCMNavigator.delete()
BitbucketSCMNavigator.disable()
BitbucketSCMNavigator.duplicate()
BitbucketSCMNavigator.dynamic_attrs
BitbucketSCMNavigator.enable()
BitbucketSCMNavigator.exists()
BitbucketSCMNavigator.filter_builds_by_result()
BitbucketSCMNavigator.full_display_name
BitbucketSCMNavigator.full_name
BitbucketSCMNavigator.get_build()
BitbucketSCMNavigator.get_parameters()
BitbucketSCMNavigator.handle_req()
BitbucketSCMNavigator.headers
BitbucketSCMNavigator.iter_all_builds()
BitbucketSCMNavigator.iter_builds()
BitbucketSCMNavigator.move()
BitbucketSCMNavigator.name
BitbucketSCMNavigator.parent
BitbucketSCMNavigator.rename()
BitbucketSCMNavigator.set_description()
BitbucketSCMNavigator.set_next_build_number()
ExternalJob
ExternalJob.api_json()
ExternalJob.build()
ExternalJob.building
ExternalJob.configure()
ExternalJob.delete()
ExternalJob.disable()
ExternalJob.duplicate()
ExternalJob.dynamic_attrs
ExternalJob.enable()
ExternalJob.exists()
ExternalJob.filter_builds_by_result()
ExternalJob.full_display_name
ExternalJob.full_name
ExternalJob.get_build()
ExternalJob.get_parameters()
ExternalJob.handle_req()
ExternalJob.headers
ExternalJob.iter_all_builds()
ExternalJob.iter_builds()
ExternalJob.move()
ExternalJob.name
ExternalJob.parent
ExternalJob.rename()
ExternalJob.set_description()
ExternalJob.set_next_build_number()
Folder
Folder.api_json()
Folder.configure()
Folder.copy()
Folder.create()
Folder.credentials
Folder.delete()
Folder.duplicate()
Folder.dynamic_attrs
Folder.exists()
Folder.full_display_name
Folder.full_name
Folder.get()
Folder.handle_req()
Folder.headers
Folder.iter()
Folder.move()
Folder.name
Folder.parent
Folder.reload()
Folder.rename()
Folder.set_description()
Folder.views
FreeStyleProject
FreeStyleProject.api_json()
FreeStyleProject.build()
FreeStyleProject.building
FreeStyleProject.configure()
FreeStyleProject.delete()
FreeStyleProject.disable()
FreeStyleProject.duplicate()
FreeStyleProject.dynamic_attrs
FreeStyleProject.enable()
FreeStyleProject.exists()
FreeStyleProject.filter_builds_by_result()
FreeStyleProject.full_display_name
FreeStyleProject.full_name
FreeStyleProject.get_build()
FreeStyleProject.get_parameters()
FreeStyleProject.handle_req()
FreeStyleProject.headers
FreeStyleProject.iter_all_builds()
FreeStyleProject.iter_builds()
FreeStyleProject.move()
FreeStyleProject.name
FreeStyleProject.parent
FreeStyleProject.rename()
FreeStyleProject.set_description()
FreeStyleProject.set_next_build_number()
GitHubSCMNavigator
GitHubSCMNavigator.api_json()
GitHubSCMNavigator.build()
GitHubSCMNavigator.building
GitHubSCMNavigator.configure()
GitHubSCMNavigator.delete()
GitHubSCMNavigator.disable()
GitHubSCMNavigator.duplicate()
GitHubSCMNavigator.dynamic_attrs
GitHubSCMNavigator.enable()
GitHubSCMNavigator.exists()
GitHubSCMNavigator.filter_builds_by_result()
GitHubSCMNavigator.full_display_name
GitHubSCMNavigator.full_name
GitHubSCMNavigator.get_build()
GitHubSCMNavigator.get_parameters()
GitHubSCMNavigator.handle_req()
GitHubSCMNavigator.headers
GitHubSCMNavigator.iter_all_builds()
GitHubSCMNavigator.iter_builds()
GitHubSCMNavigator.move()
GitHubSCMNavigator.name
GitHubSCMNavigator.parent
GitHubSCMNavigator.rename()
GitHubSCMNavigator.set_description()
GitHubSCMNavigator.set_next_build_number()
IvyModuleSet
IvyModuleSet.api_json()
IvyModuleSet.build()
IvyModuleSet.building
IvyModuleSet.configure()
IvyModuleSet.delete()
IvyModuleSet.disable()
IvyModuleSet.duplicate()
IvyModuleSet.dynamic_attrs
IvyModuleSet.enable()
IvyModuleSet.exists()
IvyModuleSet.filter_builds_by_result()
IvyModuleSet.full_display_name
IvyModuleSet.full_name
IvyModuleSet.get_build()
IvyModuleSet.get_parameters()
IvyModuleSet.handle_req()
IvyModuleSet.headers
IvyModuleSet.iter_all_builds()
IvyModuleSet.iter_builds()
IvyModuleSet.move()
IvyModuleSet.name
IvyModuleSet.parent
IvyModuleSet.rename()
IvyModuleSet.set_description()
IvyModuleSet.set_next_build_number()
Job
MatrixProject
MatrixProject.api_json()
MatrixProject.build()
MatrixProject.building
MatrixProject.configure()
MatrixProject.delete()
MatrixProject.disable()
MatrixProject.duplicate()
MatrixProject.dynamic_attrs
MatrixProject.enable()
MatrixProject.exists()
MatrixProject.filter_builds_by_result()
MatrixProject.full_display_name
MatrixProject.full_name
MatrixProject.get_build()
MatrixProject.get_parameters()
MatrixProject.handle_req()
MatrixProject.headers
MatrixProject.iter_all_builds()
MatrixProject.iter_builds()
MatrixProject.move()
MatrixProject.name
MatrixProject.parent
MatrixProject.rename()
MatrixProject.set_description()
MatrixProject.set_next_build_number()
MavenModuleSet
MavenModuleSet.api_json()
MavenModuleSet.build()
MavenModuleSet.building
MavenModuleSet.configure()
MavenModuleSet.delete()
MavenModuleSet.disable()
MavenModuleSet.duplicate()
MavenModuleSet.dynamic_attrs
MavenModuleSet.enable()
MavenModuleSet.exists()
MavenModuleSet.filter_builds_by_result()
MavenModuleSet.full_display_name
MavenModuleSet.full_name
MavenModuleSet.get_build()
MavenModuleSet.get_parameters()
MavenModuleSet.handle_req()
MavenModuleSet.headers
MavenModuleSet.iter_all_builds()
MavenModuleSet.iter_builds()
MavenModuleSet.move()
MavenModuleSet.name
MavenModuleSet.parent
MavenModuleSet.rename()
MavenModuleSet.set_description()
MavenModuleSet.set_next_build_number()
MultiJobProject
MultiJobProject.api_json()
MultiJobProject.build()
MultiJobProject.building
MultiJobProject.configure()
MultiJobProject.delete()
MultiJobProject.disable()
MultiJobProject.duplicate()
MultiJobProject.dynamic_attrs
MultiJobProject.enable()
MultiJobProject.exists()
MultiJobProject.filter_builds_by_result()
MultiJobProject.full_display_name
MultiJobProject.full_name
MultiJobProject.get_build()
MultiJobProject.get_parameters()
MultiJobProject.handle_req()
MultiJobProject.headers
MultiJobProject.iter_all_builds()
MultiJobProject.iter_builds()
MultiJobProject.move()
MultiJobProject.name
MultiJobProject.parent
MultiJobProject.rename()
MultiJobProject.set_description()
MultiJobProject.set_next_build_number()
OrganizationFolder
OrganizationFolder.api_json()
OrganizationFolder.buildable
OrganizationFolder.configure()
OrganizationFolder.copy()
OrganizationFolder.create()
OrganizationFolder.credentials
OrganizationFolder.delete()
OrganizationFolder.disable()
OrganizationFolder.duplicate()
OrganizationFolder.dynamic_attrs
OrganizationFolder.enable()
OrganizationFolder.exists()
OrganizationFolder.full_display_name
OrganizationFolder.full_name
OrganizationFolder.get()
OrganizationFolder.get_scan_log()
OrganizationFolder.handle_req()
OrganizationFolder.headers
OrganizationFolder.iter()
OrganizationFolder.move()
OrganizationFolder.name
OrganizationFolder.parent
OrganizationFolder.reload()
OrganizationFolder.rename()
OrganizationFolder.scan()
OrganizationFolder.set_description()
OrganizationFolder.views
PipelineMultiBranchDefaultsProject
PipelineMultiBranchDefaultsProject.api_json()
PipelineMultiBranchDefaultsProject.build()
PipelineMultiBranchDefaultsProject.building
PipelineMultiBranchDefaultsProject.configure()
PipelineMultiBranchDefaultsProject.delete()
PipelineMultiBranchDefaultsProject.disable()
PipelineMultiBranchDefaultsProject.duplicate()
PipelineMultiBranchDefaultsProject.dynamic_attrs
PipelineMultiBranchDefaultsProject.enable()
PipelineMultiBranchDefaultsProject.exists()
PipelineMultiBranchDefaultsProject.filter_builds_by_result()
PipelineMultiBranchDefaultsProject.full_display_name
PipelineMultiBranchDefaultsProject.full_name
PipelineMultiBranchDefaultsProject.get_build()
PipelineMultiBranchDefaultsProject.get_parameters()
PipelineMultiBranchDefaultsProject.handle_req()
PipelineMultiBranchDefaultsProject.headers
PipelineMultiBranchDefaultsProject.iter_all_builds()
PipelineMultiBranchDefaultsProject.iter_builds()
PipelineMultiBranchDefaultsProject.move()
PipelineMultiBranchDefaultsProject.name
PipelineMultiBranchDefaultsProject.parent
PipelineMultiBranchDefaultsProject.rename()
PipelineMultiBranchDefaultsProject.set_description()
PipelineMultiBranchDefaultsProject.set_next_build_number()
Project
Project.api_json()
Project.build()
Project.building
Project.configure()
Project.delete()
Project.disable()
Project.duplicate()
Project.dynamic_attrs
Project.enable()
Project.exists()
Project.filter_builds_by_result()
Project.full_display_name
Project.full_name
Project.get_build()
Project.get_parameters()
Project.handle_req()
Project.headers
Project.iter_all_builds()
Project.iter_builds()
Project.move()
Project.name
Project.parent
Project.rename()
Project.set_description()
Project.set_next_build_number()
WorkflowJob
WorkflowJob.api_json()
WorkflowJob.build()
WorkflowJob.building
WorkflowJob.configure()
WorkflowJob.delete()
WorkflowJob.disable()
WorkflowJob.duplicate()
WorkflowJob.dynamic_attrs
WorkflowJob.enable()
WorkflowJob.exists()
WorkflowJob.filter_builds_by_result()
WorkflowJob.full_display_name
WorkflowJob.full_name
WorkflowJob.get_build()
WorkflowJob.get_parameters()
WorkflowJob.handle_req()
WorkflowJob.headers
WorkflowJob.iter_all_builds()
WorkflowJob.iter_builds()
WorkflowJob.move()
WorkflowJob.name
WorkflowJob.parent
WorkflowJob.rename()
WorkflowJob.set_description()
WorkflowJob.set_next_build_number()
WorkflowMultiBranchProject
WorkflowMultiBranchProject.api_json()
WorkflowMultiBranchProject.buildable
WorkflowMultiBranchProject.configure()
WorkflowMultiBranchProject.copy()
WorkflowMultiBranchProject.create()
WorkflowMultiBranchProject.credentials
WorkflowMultiBranchProject.delete()
WorkflowMultiBranchProject.disable()
WorkflowMultiBranchProject.duplicate()
WorkflowMultiBranchProject.dynamic_attrs
WorkflowMultiBranchProject.enable()
WorkflowMultiBranchProject.exists()
WorkflowMultiBranchProject.full_display_name
WorkflowMultiBranchProject.full_name
WorkflowMultiBranchProject.get()
WorkflowMultiBranchProject.get_scan_log()
WorkflowMultiBranchProject.handle_req()
WorkflowMultiBranchProject.headers
WorkflowMultiBranchProject.iter()
WorkflowMultiBranchProject.move()
WorkflowMultiBranchProject.name
WorkflowMultiBranchProject.parent
WorkflowMultiBranchProject.reload()
WorkflowMultiBranchProject.rename()
WorkflowMultiBranchProject.scan()
WorkflowMultiBranchProject.set_description()
WorkflowMultiBranchProject.views
Build
Build.api_json()
Build.console_text()
Build.delete()
Build.dynamic_attrs
Build.exists()
Build.get_causes()
Build.get_coverage_report()
Build.get_coverage_result()
Build.get_coverage_trends()
Build.get_job()
Build.get_next_build()
Build.get_parameters()
Build.get_previous_build()
Build.get_test_report()
Build.handle_req()
Build.headers
Build.kill()
Build.progressive_output()
Build.set_description()
Build.stop()
Build.term()
FreeStyleBuild
FreeStyleBuild.api_json()
FreeStyleBuild.console_text()
FreeStyleBuild.delete()
FreeStyleBuild.dynamic_attrs
FreeStyleBuild.exists()
FreeStyleBuild.get_causes()
FreeStyleBuild.get_coverage_report()
FreeStyleBuild.get_coverage_result()
FreeStyleBuild.get_coverage_trends()
FreeStyleBuild.get_job()
FreeStyleBuild.get_next_build()
FreeStyleBuild.get_parameters()
FreeStyleBuild.get_previous_build()
FreeStyleBuild.get_test_report()
FreeStyleBuild.handle_req()
FreeStyleBuild.headers
FreeStyleBuild.kill()
FreeStyleBuild.progressive_output()
FreeStyleBuild.set_description()
FreeStyleBuild.stop()
FreeStyleBuild.term()
MatrixBuild
MatrixBuild.api_json()
MatrixBuild.console_text()
MatrixBuild.delete()
MatrixBuild.dynamic_attrs
MatrixBuild.exists()
MatrixBuild.get_causes()
MatrixBuild.get_coverage_report()
MatrixBuild.get_coverage_result()
MatrixBuild.get_coverage_trends()
MatrixBuild.get_job()
MatrixBuild.get_next_build()
MatrixBuild.get_parameters()
MatrixBuild.get_previous_build()
MatrixBuild.get_test_report()
MatrixBuild.handle_req()
MatrixBuild.headers
MatrixBuild.kill()
MatrixBuild.progressive_output()
MatrixBuild.set_description()
MatrixBuild.stop()
MatrixBuild.term()
WorkflowRun
WorkflowRun.api_json()
WorkflowRun.console_text()
WorkflowRun.delete()
WorkflowRun.dynamic_attrs
WorkflowRun.exists()
WorkflowRun.get_artifacts()
WorkflowRun.get_causes()
WorkflowRun.get_coverage_report()
WorkflowRun.get_coverage_result()
WorkflowRun.get_coverage_trends()
WorkflowRun.get_job()
WorkflowRun.get_next_build()
WorkflowRun.get_parameters()
WorkflowRun.get_pending_input()
WorkflowRun.get_previous_build()
WorkflowRun.get_test_report()
WorkflowRun.handle_req()
WorkflowRun.headers
WorkflowRun.kill()
WorkflowRun.progressive_output()
WorkflowRun.save_artifacts()
WorkflowRun.set_description()
WorkflowRun.stop()
WorkflowRun.term()
PendingInputAction
BlockedItem
BuildableItem
LeftItem
Queue
QueueItem
WaitingItem
Credential
Credentials
AnkaCloudComputer
AnkaCloudComputer.api_json()
AnkaCloudComputer.configure()
AnkaCloudComputer.delete()
AnkaCloudComputer.disable()
AnkaCloudComputer.dynamic_attrs
AnkaCloudComputer.enable()
AnkaCloudComputer.exists()
AnkaCloudComputer.handle_req()
AnkaCloudComputer.headers
AnkaCloudComputer.iter_building_builds()
AnkaCloudComputer.iter_builds()
AnkaCloudComputer.name
AnkaCloudComputer.run_script()
DockerComputer
DockerComputer.api_json()
DockerComputer.configure()
DockerComputer.delete()
DockerComputer.disable()
DockerComputer.dynamic_attrs
DockerComputer.enable()
DockerComputer.exists()
DockerComputer.handle_req()
DockerComputer.headers
DockerComputer.iter_building_builds()
DockerComputer.iter_builds()
DockerComputer.name
DockerComputer.run_script()
EC2Computer
EC2Computer.api_json()
EC2Computer.configure()
EC2Computer.delete()
EC2Computer.disable()
EC2Computer.dynamic_attrs
EC2Computer.enable()
EC2Computer.exists()
EC2Computer.handle_req()
EC2Computer.headers
EC2Computer.iter_building_builds()
EC2Computer.iter_builds()
EC2Computer.name
EC2Computer.run_script()
KubernetesComputer
KubernetesComputer.api_json()
KubernetesComputer.configure()
KubernetesComputer.delete()
KubernetesComputer.disable()
KubernetesComputer.dynamic_attrs
KubernetesComputer.enable()
KubernetesComputer.exists()
KubernetesComputer.handle_req()
KubernetesComputer.headers
KubernetesComputer.iter_building_builds()
KubernetesComputer.iter_builds()
KubernetesComputer.name
KubernetesComputer.run_script()
MasterComputer
MasterComputer.api_json()
MasterComputer.configure()
MasterComputer.delete()
MasterComputer.disable()
MasterComputer.dynamic_attrs
MasterComputer.enable()
MasterComputer.exists()
MasterComputer.handle_req()
MasterComputer.headers
MasterComputer.iter_building_builds()
MasterComputer.iter_builds()
MasterComputer.name
MasterComputer.run_script()
Node
Nodes
SlaveComputer
SlaveComputer.api_json()
SlaveComputer.configure()
SlaveComputer.delete()
SlaveComputer.disable()
SlaveComputer.dynamic_attrs
SlaveComputer.enable()
SlaveComputer.exists()
SlaveComputer.handle_req()
SlaveComputer.headers
SlaveComputer.iter_building_builds()
SlaveComputer.iter_builds()
SlaveComputer.name
SlaveComputer.run_script()
Plugin
PluginsManager
PluginsManager.api_json()
PluginsManager.check_updates_server()
PluginsManager.dynamic_attrs
PluginsManager.exists()
PluginsManager.get()
PluginsManager.handle_req()
PluginsManager.headers
PluginsManager.install()
PluginsManager.installation_done
PluginsManager.restart_required
PluginsManager.set_proxy()
PluginsManager.set_site()
PluginsManager.site
PluginsManager.uninstall()
PluginsManager.update_center
UpdateCenter
AllView
Dashboard
ListView
MyView
NestedView
SectionedView
View
Views
System
ApiToken
User
Users
Coverage
CoverageElement
CoverageReport
CoverageResult
CoverageTrend
CoverageTrends
GetMixIn
ResultBase
TestCase
TestReport
TestSuite
Item
append_slash()
camel()
new_item()
snake()
ActionsMixIn
ConfigurationMixIn
DeletionMixIn
DescriptionMixIn
EnableMixIn
Parameter
RawJsonMixIn
RunScriptMixIn
Requester()
AuthenticationError
BadRequestError
ItemExistsError
ItemNotFoundError
JenkinsAPIException
ServerError
UnsafeCharacterError