所有文章 > 学习各类API > Jenkins API使用教程
Jenkins API使用教程

Jenkins API使用教程

Jenkins API 是一个强大的工具,允许用户通过编程方式与Jenkins进行交互。通过API,用户可以获取Jenkins平台的相关信息、触发构建、创建或删除作业等。Jenkins API采用REST架构设计,支持XML、JSON和Python等多种格式。本文将详细介绍如何使用Jenkins API来实现这些功能,涵盖从信息获取到构建触发的各个方面,帮助用户更好地集成和扩展Jenkins功能。

Jenkins API简介

Jenkins API 是一个强大的工具,允许开发者通过 REST 架构获取 Jenkins 平台的信息、触发构建,以及创建和删除 job,这使得 Jenkins 在连续集成和交付中具备了很强的扩展性。Jenkins API 支持三种主要格式:XML API、JSON API 和 Python API。

获取信息

XML API

通过在 URL 后添加 /api/xml,用户可以获取 XML 格式的数据。在此基础上,可以使用 XPath 语法过滤数据,例如读取测试结果或用例总数。深度控制和树形参数也可以用于精细化数据提取。

JSON API

JSON API 返回数据以 JSON 格式展示,支持深度参数和树形参数来筛选特定信息。在请求 URL 后添加 /api/json 即可获取。

请求信息

Jenkins API 采用 REST 架构,支持常用的 REST API 请求方法,如 POST、GET 和 DELETE。下面是一些获取 job 构建信息的 API 示例:

$ curl -k --silent -L --user 用户名:API Token JENKINS_URL/job/JOB_NAME

触发构建

无参数构建

通过 POST 请求可以触发 Jenkins Job 的构建。

curl 命令

$ curl -k --silent -L -X POST --USER admin:API_TOKEN http://192.168.30.8:8080/job/RF-Pipeline-Demo/build

Python requests 库

import requests
url = "http://192.168.30.8:8080/job/RF-Pipeline-Demo/build"
username = "admin"
api_token = "API_TOKEN"
res = requests.post(url, auth=(username, api_token), verify=False)

参数化构建

对于需要参数化构建的 Jenkins Job,可以通过插件支持参数化触发。

curl 命令

$ curl -k --silent -L -X POST --data param1=1 --data param2=2 --user admin:API_TOKEN http://192.168.30.8:8080/job/RF-Pipeline-Demo/buildWithParameters

Python requests 库

import requests
jenkins_params = {'param1': 'value1', 'param2': 'value2'}
url = "http://192.168.30.8:8080/job/RF-Pipeline-Demo/buildWithParameters"
username = "admin"
api_token = "API_TOKEN"
res = requests.post(url, auth=(username, api_token), params=jenkins_params, verify=False)

删除操作

通过 POST 请求可以执行删除操作,比如删除某次构建或整个 job。此外,还可以启用或禁用指定的 job。

Python API

Python 提供了多个库来简化 Jenkins API 的使用,比如 JenkinsAPI。下列代码展示了如何使用 JenkinsAPI 库来获取 Jenkins 的版本信息。

from jenkinsapi.jenkins import Jenkins

class JenkinsApiDemo:
    def __init__(self, job_name):
        self.jenkins_url = 'http://192.168.30.8:8080'
        self.jenkins_server = Jenkins(self.jenkins_url, username='admin', password='admin', useCrumb=True)

    def get_jenkins_version(self):
        return self.jenkins_server.version

jk = JenkinsApiDemo('RF-Pipeline-Demo')
print(jk.get_jenkins_version())

jenkins API使用示例

一个简单的 Jenkins API 使用示例:触发构建并获取构建结果。

$ curl -i -L -X POST --USER admin:API_TOKEN http://192.168.168.228:8080/view/demo/job/PipelineDemo/build

根据响应数据,可以获取 queue number,然后通过 Jenkins API 进一步查询构建状态和结果。

FAQ

问:什么是 Jenkins API,它有哪些主要功能和格式?

  • 答:Jenkins API 是一个强大的工具,允许开发者通过 REST 架构获取 Jenkins 平台的信息、触发构建,以及创建和删除 jobs。这使得 Jenkins 在连续集成和交付中具备了很强的扩展性。Jenkins API 支持三种主要格式:XML API、JSON API 和 Python API。

问:如何使用 XML API 获取 Jenkins 平台的数据?

  • 答:通过在请求的 URL 后添加 /api/xml,用户可以获取 XML 格式的数据。可以使用 XPath 语法来过滤数据,例如读取测试结果或用例总数。深度控制和树形参数也可以用于精细化数据提取。

问:如何通过 Jenkins API 触发构建?

  • 答:可以通过 POST 请求触发 Jenkins Job 的构建。例如,使用 curl 命令可以通过以下方式触发构建:
    $ curl -k --silent -L -X POST --USER admin:API_TOKEN http://192.168.30.8:8080/job/RF-Pipeline-Demo/build

    也可以使用 Python 的 requests 库来发送 POST 请求以触发构建。

问:如何使用 Jenkins API 删除某次构建或整个 job?

  • 答:通过 POST 请求可以执行删除操作,比如删除某次构建或整个 job。此外,还可以启用或禁用指定的 jobs。具体的请求格式可以参照 Jenkins API 的文档。

问:如何在 Python 中使用 JenkinsAPI 库获取 Jenkins 的版本信息?

  • 答:可以使用 JenkinsAPI 库来简化 Jenkins API 的使用。以下代码展示了如何获取 Jenkins 的版本信息:

    from jenkinsapi.jenkins import Jenkins
    
    class JenkinsApiDemo:
      def __init__(self, job_name):
          self.jenkins_url = 'http://192.168.30.8:8080'
          self.jenkins_server = Jenkins(self.jenkins_url, username='admin', password='admin', useCrumb=True)
    
      def get_jenkins_version(self):
          return self.jenkins_server.version
    
    jk = JenkinsApiDemo('RF-Pipeline-Demo')
    print(jk.get_jenkins_version())
#你可能也喜欢这些API文章!