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
JenkinsJenkins.api_json()Jenkins.build_job()Jenkins.check_job_name()Jenkins.copy_job()Jenkins.create_job()Jenkins.credentialsJenkins.crumbJenkins.delete_job()Jenkins.dynamic_attrsJenkins.exists()Jenkins.get_job()Jenkins.handle_req()Jenkins.headersJenkins.iter_jobs()Jenkins.meJenkins.nodesJenkins.pluginsJenkins.queueJenkins.systemJenkins.usersJenkins.validate_jenkinsfile()Jenkins.versionJenkins.views
BitbucketSCMNavigatorBitbucketSCMNavigator.api_json()BitbucketSCMNavigator.build()BitbucketSCMNavigator.buildingBitbucketSCMNavigator.configure()BitbucketSCMNavigator.delete()BitbucketSCMNavigator.disable()BitbucketSCMNavigator.duplicate()BitbucketSCMNavigator.dynamic_attrsBitbucketSCMNavigator.enable()BitbucketSCMNavigator.exists()BitbucketSCMNavigator.filter_builds_by_result()BitbucketSCMNavigator.full_display_nameBitbucketSCMNavigator.full_nameBitbucketSCMNavigator.get_build()BitbucketSCMNavigator.get_parameters()BitbucketSCMNavigator.handle_req()BitbucketSCMNavigator.headersBitbucketSCMNavigator.iter_all_builds()BitbucketSCMNavigator.iter_builds()BitbucketSCMNavigator.move()BitbucketSCMNavigator.nameBitbucketSCMNavigator.parentBitbucketSCMNavigator.rename()BitbucketSCMNavigator.set_description()BitbucketSCMNavigator.set_next_build_number()
ExternalJobExternalJob.api_json()ExternalJob.build()ExternalJob.buildingExternalJob.configure()ExternalJob.delete()ExternalJob.disable()ExternalJob.duplicate()ExternalJob.dynamic_attrsExternalJob.enable()ExternalJob.exists()ExternalJob.filter_builds_by_result()ExternalJob.full_display_nameExternalJob.full_nameExternalJob.get_build()ExternalJob.get_parameters()ExternalJob.handle_req()ExternalJob.headersExternalJob.iter_all_builds()ExternalJob.iter_builds()ExternalJob.move()ExternalJob.nameExternalJob.parentExternalJob.rename()ExternalJob.set_description()ExternalJob.set_next_build_number()
FolderFolder.api_json()Folder.configure()Folder.copy()Folder.create()Folder.credentialsFolder.delete()Folder.duplicate()Folder.dynamic_attrsFolder.exists()Folder.full_display_nameFolder.full_nameFolder.get()Folder.handle_req()Folder.headersFolder.iter()Folder.move()Folder.nameFolder.parentFolder.reload()Folder.rename()Folder.set_description()Folder.views
FreeStyleProjectFreeStyleProject.api_json()FreeStyleProject.build()FreeStyleProject.buildingFreeStyleProject.configure()FreeStyleProject.delete()FreeStyleProject.disable()FreeStyleProject.duplicate()FreeStyleProject.dynamic_attrsFreeStyleProject.enable()FreeStyleProject.exists()FreeStyleProject.filter_builds_by_result()FreeStyleProject.full_display_nameFreeStyleProject.full_nameFreeStyleProject.get_build()FreeStyleProject.get_parameters()FreeStyleProject.handle_req()FreeStyleProject.headersFreeStyleProject.iter_all_builds()FreeStyleProject.iter_builds()FreeStyleProject.move()FreeStyleProject.nameFreeStyleProject.parentFreeStyleProject.rename()FreeStyleProject.set_description()FreeStyleProject.set_next_build_number()
GitHubSCMNavigatorGitHubSCMNavigator.api_json()GitHubSCMNavigator.build()GitHubSCMNavigator.buildingGitHubSCMNavigator.configure()GitHubSCMNavigator.delete()GitHubSCMNavigator.disable()GitHubSCMNavigator.duplicate()GitHubSCMNavigator.dynamic_attrsGitHubSCMNavigator.enable()GitHubSCMNavigator.exists()GitHubSCMNavigator.filter_builds_by_result()GitHubSCMNavigator.full_display_nameGitHubSCMNavigator.full_nameGitHubSCMNavigator.get_build()GitHubSCMNavigator.get_parameters()GitHubSCMNavigator.handle_req()GitHubSCMNavigator.headersGitHubSCMNavigator.iter_all_builds()GitHubSCMNavigator.iter_builds()GitHubSCMNavigator.move()GitHubSCMNavigator.nameGitHubSCMNavigator.parentGitHubSCMNavigator.rename()GitHubSCMNavigator.set_description()GitHubSCMNavigator.set_next_build_number()
IvyModuleSetIvyModuleSet.api_json()IvyModuleSet.build()IvyModuleSet.buildingIvyModuleSet.configure()IvyModuleSet.delete()IvyModuleSet.disable()IvyModuleSet.duplicate()IvyModuleSet.dynamic_attrsIvyModuleSet.enable()IvyModuleSet.exists()IvyModuleSet.filter_builds_by_result()IvyModuleSet.full_display_nameIvyModuleSet.full_nameIvyModuleSet.get_build()IvyModuleSet.get_parameters()IvyModuleSet.handle_req()IvyModuleSet.headersIvyModuleSet.iter_all_builds()IvyModuleSet.iter_builds()IvyModuleSet.move()IvyModuleSet.nameIvyModuleSet.parentIvyModuleSet.rename()IvyModuleSet.set_description()IvyModuleSet.set_next_build_number()
JobMatrixProjectMatrixProject.api_json()MatrixProject.build()MatrixProject.buildingMatrixProject.configure()MatrixProject.delete()MatrixProject.disable()MatrixProject.duplicate()MatrixProject.dynamic_attrsMatrixProject.enable()MatrixProject.exists()MatrixProject.filter_builds_by_result()MatrixProject.full_display_nameMatrixProject.full_nameMatrixProject.get_build()MatrixProject.get_parameters()MatrixProject.handle_req()MatrixProject.headersMatrixProject.iter_all_builds()MatrixProject.iter_builds()MatrixProject.move()MatrixProject.nameMatrixProject.parentMatrixProject.rename()MatrixProject.set_description()MatrixProject.set_next_build_number()
MavenModuleSetMavenModuleSet.api_json()MavenModuleSet.build()MavenModuleSet.buildingMavenModuleSet.configure()MavenModuleSet.delete()MavenModuleSet.disable()MavenModuleSet.duplicate()MavenModuleSet.dynamic_attrsMavenModuleSet.enable()MavenModuleSet.exists()MavenModuleSet.filter_builds_by_result()MavenModuleSet.full_display_nameMavenModuleSet.full_nameMavenModuleSet.get_build()MavenModuleSet.get_parameters()MavenModuleSet.handle_req()MavenModuleSet.headersMavenModuleSet.iter_all_builds()MavenModuleSet.iter_builds()MavenModuleSet.move()MavenModuleSet.nameMavenModuleSet.parentMavenModuleSet.rename()MavenModuleSet.set_description()MavenModuleSet.set_next_build_number()
MultiJobProjectMultiJobProject.api_json()MultiJobProject.build()MultiJobProject.buildingMultiJobProject.configure()MultiJobProject.delete()MultiJobProject.disable()MultiJobProject.duplicate()MultiJobProject.dynamic_attrsMultiJobProject.enable()MultiJobProject.exists()MultiJobProject.filter_builds_by_result()MultiJobProject.full_display_nameMultiJobProject.full_nameMultiJobProject.get_build()MultiJobProject.get_parameters()MultiJobProject.handle_req()MultiJobProject.headersMultiJobProject.iter_all_builds()MultiJobProject.iter_builds()MultiJobProject.move()MultiJobProject.nameMultiJobProject.parentMultiJobProject.rename()MultiJobProject.set_description()MultiJobProject.set_next_build_number()
OrganizationFolderOrganizationFolder.api_json()OrganizationFolder.buildableOrganizationFolder.configure()OrganizationFolder.copy()OrganizationFolder.create()OrganizationFolder.credentialsOrganizationFolder.delete()OrganizationFolder.disable()OrganizationFolder.duplicate()OrganizationFolder.dynamic_attrsOrganizationFolder.enable()OrganizationFolder.exists()OrganizationFolder.full_display_nameOrganizationFolder.full_nameOrganizationFolder.get()OrganizationFolder.get_scan_log()OrganizationFolder.handle_req()OrganizationFolder.headersOrganizationFolder.iter()OrganizationFolder.move()OrganizationFolder.nameOrganizationFolder.parentOrganizationFolder.reload()OrganizationFolder.rename()OrganizationFolder.scan()OrganizationFolder.set_description()OrganizationFolder.views
PipelineMultiBranchDefaultsProjectPipelineMultiBranchDefaultsProject.api_json()PipelineMultiBranchDefaultsProject.build()PipelineMultiBranchDefaultsProject.buildingPipelineMultiBranchDefaultsProject.configure()PipelineMultiBranchDefaultsProject.delete()PipelineMultiBranchDefaultsProject.disable()PipelineMultiBranchDefaultsProject.duplicate()PipelineMultiBranchDefaultsProject.dynamic_attrsPipelineMultiBranchDefaultsProject.enable()PipelineMultiBranchDefaultsProject.exists()PipelineMultiBranchDefaultsProject.filter_builds_by_result()PipelineMultiBranchDefaultsProject.full_display_namePipelineMultiBranchDefaultsProject.full_namePipelineMultiBranchDefaultsProject.get_build()PipelineMultiBranchDefaultsProject.get_parameters()PipelineMultiBranchDefaultsProject.handle_req()PipelineMultiBranchDefaultsProject.headersPipelineMultiBranchDefaultsProject.iter_all_builds()PipelineMultiBranchDefaultsProject.iter_builds()PipelineMultiBranchDefaultsProject.move()PipelineMultiBranchDefaultsProject.namePipelineMultiBranchDefaultsProject.parentPipelineMultiBranchDefaultsProject.rename()PipelineMultiBranchDefaultsProject.set_description()PipelineMultiBranchDefaultsProject.set_next_build_number()
ProjectProject.api_json()Project.build()Project.buildingProject.configure()Project.delete()Project.disable()Project.duplicate()Project.dynamic_attrsProject.enable()Project.exists()Project.filter_builds_by_result()Project.full_display_nameProject.full_nameProject.get_build()Project.get_parameters()Project.handle_req()Project.headersProject.iter_all_builds()Project.iter_builds()Project.move()Project.nameProject.parentProject.rename()Project.set_description()Project.set_next_build_number()
WorkflowJobWorkflowJob.api_json()WorkflowJob.build()WorkflowJob.buildingWorkflowJob.configure()WorkflowJob.delete()WorkflowJob.disable()WorkflowJob.duplicate()WorkflowJob.dynamic_attrsWorkflowJob.enable()WorkflowJob.exists()WorkflowJob.filter_builds_by_result()WorkflowJob.full_display_nameWorkflowJob.full_nameWorkflowJob.get_build()WorkflowJob.get_parameters()WorkflowJob.handle_req()WorkflowJob.headersWorkflowJob.iter_all_builds()WorkflowJob.iter_builds()WorkflowJob.move()WorkflowJob.nameWorkflowJob.parentWorkflowJob.rename()WorkflowJob.set_description()WorkflowJob.set_next_build_number()
WorkflowMultiBranchProjectWorkflowMultiBranchProject.api_json()WorkflowMultiBranchProject.buildableWorkflowMultiBranchProject.configure()WorkflowMultiBranchProject.copy()WorkflowMultiBranchProject.create()WorkflowMultiBranchProject.credentialsWorkflowMultiBranchProject.delete()WorkflowMultiBranchProject.disable()WorkflowMultiBranchProject.duplicate()WorkflowMultiBranchProject.dynamic_attrsWorkflowMultiBranchProject.enable()WorkflowMultiBranchProject.exists()WorkflowMultiBranchProject.full_display_nameWorkflowMultiBranchProject.full_nameWorkflowMultiBranchProject.get()WorkflowMultiBranchProject.get_scan_log()WorkflowMultiBranchProject.handle_req()WorkflowMultiBranchProject.headersWorkflowMultiBranchProject.iter()WorkflowMultiBranchProject.move()WorkflowMultiBranchProject.nameWorkflowMultiBranchProject.parentWorkflowMultiBranchProject.reload()WorkflowMultiBranchProject.rename()WorkflowMultiBranchProject.scan()WorkflowMultiBranchProject.set_description()WorkflowMultiBranchProject.views
BuildBuild.api_json()Build.console_text()Build.delete()Build.dynamic_attrsBuild.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.headersBuild.kill()Build.progressive_output()Build.set_description()Build.stop()Build.term()
FreeStyleBuildFreeStyleBuild.api_json()FreeStyleBuild.console_text()FreeStyleBuild.delete()FreeStyleBuild.dynamic_attrsFreeStyleBuild.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.headersFreeStyleBuild.kill()FreeStyleBuild.progressive_output()FreeStyleBuild.set_description()FreeStyleBuild.stop()FreeStyleBuild.term()
MatrixBuildMatrixBuild.api_json()MatrixBuild.console_text()MatrixBuild.delete()MatrixBuild.dynamic_attrsMatrixBuild.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.headersMatrixBuild.kill()MatrixBuild.progressive_output()MatrixBuild.set_description()MatrixBuild.stop()MatrixBuild.term()
WorkflowRunWorkflowRun.api_json()WorkflowRun.console_text()WorkflowRun.delete()WorkflowRun.dynamic_attrsWorkflowRun.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.headersWorkflowRun.kill()WorkflowRun.progressive_output()WorkflowRun.save_artifacts()WorkflowRun.set_description()WorkflowRun.stop()WorkflowRun.term()
PendingInputActionBlockedItemBuildableItemLeftItemQueueQueueItemWaitingItemCredentialCredentialsAnkaCloudComputerAnkaCloudComputer.api_json()AnkaCloudComputer.configure()AnkaCloudComputer.delete()AnkaCloudComputer.disable()AnkaCloudComputer.dynamic_attrsAnkaCloudComputer.enable()AnkaCloudComputer.exists()AnkaCloudComputer.handle_req()AnkaCloudComputer.headersAnkaCloudComputer.iter_building_builds()AnkaCloudComputer.iter_builds()AnkaCloudComputer.nameAnkaCloudComputer.run_script()
DockerComputerDockerComputer.api_json()DockerComputer.configure()DockerComputer.delete()DockerComputer.disable()DockerComputer.dynamic_attrsDockerComputer.enable()DockerComputer.exists()DockerComputer.handle_req()DockerComputer.headersDockerComputer.iter_building_builds()DockerComputer.iter_builds()DockerComputer.nameDockerComputer.run_script()
EC2ComputerEC2Computer.api_json()EC2Computer.configure()EC2Computer.delete()EC2Computer.disable()EC2Computer.dynamic_attrsEC2Computer.enable()EC2Computer.exists()EC2Computer.handle_req()EC2Computer.headersEC2Computer.iter_building_builds()EC2Computer.iter_builds()EC2Computer.nameEC2Computer.run_script()
KubernetesComputerKubernetesComputer.api_json()KubernetesComputer.configure()KubernetesComputer.delete()KubernetesComputer.disable()KubernetesComputer.dynamic_attrsKubernetesComputer.enable()KubernetesComputer.exists()KubernetesComputer.handle_req()KubernetesComputer.headersKubernetesComputer.iter_building_builds()KubernetesComputer.iter_builds()KubernetesComputer.nameKubernetesComputer.run_script()
MasterComputerMasterComputer.api_json()MasterComputer.configure()MasterComputer.delete()MasterComputer.disable()MasterComputer.dynamic_attrsMasterComputer.enable()MasterComputer.exists()MasterComputer.handle_req()MasterComputer.headersMasterComputer.iter_building_builds()MasterComputer.iter_builds()MasterComputer.nameMasterComputer.run_script()
NodeNodesSlaveComputerSlaveComputer.api_json()SlaveComputer.configure()SlaveComputer.delete()SlaveComputer.disable()SlaveComputer.dynamic_attrsSlaveComputer.enable()SlaveComputer.exists()SlaveComputer.handle_req()SlaveComputer.headersSlaveComputer.iter_building_builds()SlaveComputer.iter_builds()SlaveComputer.nameSlaveComputer.run_script()
PluginPluginsManagerPluginsManager.api_json()PluginsManager.check_updates_server()PluginsManager.dynamic_attrsPluginsManager.exists()PluginsManager.get()PluginsManager.handle_req()PluginsManager.headersPluginsManager.install()PluginsManager.installation_donePluginsManager.restart_requiredPluginsManager.set_proxy()PluginsManager.set_site()PluginsManager.sitePluginsManager.uninstall()PluginsManager.update_center
UpdateCenterAllViewDashboardListViewMyViewNestedViewSectionedViewViewViewsSystemApiTokenUserUsersCoverageCoverageElementCoverageReportCoverageResultCoverageTrendCoverageTrendsGetMixInResultBaseTestCaseTestReportTestSuiteItemappend_slash()camel()new_item()snake()ActionsMixInConfigurationMixInDeletionMixInDescriptionMixInEnableMixInParameterRawJsonMixInRunScriptMixInRequester()AuthenticationErrorBadRequestErrorItemExistsErrorItemNotFoundErrorServerErrorUnsafeCharacterError