Jenkins提供了三种API形式:
- XML
- JSON with JSONP support
- Python
Remote access API 以REST风格形式提供的。也就是说,对于所有功能没有单一的入口,而是以".../api/"
的形式提供,"..."
部分是对应功能的前缀。
例如,如果你的Jenkins访问地址是 https://ci.jenkins.io,访问 https://ci.jenkins.io会展示顶层的API功能-主要是Jenkins实例的一系列可配置JOB。如果你想访问某一个job的编译信息,比如https://ci.jenkins.io/job/Infra/job/jenkins.io/job/master/lastSuccessfulBuild/,可以访问https://ci.jenkins.io/job/Infra/job/jenkins.io/job/master/lastSuccessfulBuild/api/,这会展示关于这个job的一系列功能。
使用API可以做什么
- 获取Jenkins的信息供逻辑上使用
- 触发一个新的编译
- 创建/复制jobs
提交JOBS
没有参数的job
对于没有参数的job,执行一个HTTP POST请求
JENKINS_URL/job/JOBNAME/build
.
有参数的job
curl JENKINS_URL/job/JOB_NAME/buildWithParameters \
--user USER:TOKEN \
--data id=123 --data verbosity=high
另一个例子,发送文件参数
curl JENKINS_URL/job/JOB_NAME/buildWithParameters \
--user USER:PASSWORD \
--form FILE_LOCATION_AS_SET_IN_JENKINS=@PATH_TO_FILE
'@'符号很重要,而且文件路径也要是绝对路径。这个命令要能正常工作也需要,这个job具有一个叫File Parameter
的参数,--form
对应的是File location的参数定义。
Python API wrappers
JenkinsAPI and Python-Jenkins, api4jenkins 都是面向对象的Python REST API包装,旨在提供一种更方便的控制Jenkins的方法。提供了如下的功能:
- Query the test-results of a completed build
- Get objects representing the latest builds of a job
- Search for artifacts by simple criteria
- Block until jobs are complete
- Install artifacts to custom-specified directory structures
- Authentication support for Jenkins instances
- Ability to search for builds by subversion revision
- Ability to add/remove/query Jenkins agents
Java API wrappers
The jenkins-rest 库是面向Java对象的Jenkins REST API封装,提供了如下的功能
- Endpoint definition (property or environment variable)
- Authentication (basic and API token via property or environment variable)
- Crumbs Issuer support (auto-detect crumbs)
- Folder support
- Jobs API (build, buildInfo, buildWithParameters, config, create, delete, description, disable, enable, jobInfo, lastBuildNumber, lastBuidTimestamp and progressiveText)
- Plugin manager API (installNecessaryPlugins, list current plugins)
- Queue API (cancel, list queue items, query queue item)
- Statistics API (overall load)
- Systems API (systemInfo)