curl调用Jenkins API控制job

本文介绍了如何使用curl命令行工具来控制Jenkins job,包括触发job运行、带参数的job执行、创建与删除job、查询job状态以及禁用和获取build编号等操作。

1.curl
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。

1.1 获取页面/资源文件
curl http://www.baidu.com
获取url指向的页面;如果URL指向的是文件或者图片等资源文件,资源文件可以直接下载到本地

1.2提交GET请求
curl "wwww.baidu.com?wd=jenkins”

1.3提交POST请求
curl -d "wd=jenkins” www.baidu.com


2.jenkins

2.1运行job

2.1.1无参任务
curl -X POST http://localhost:8080/jenkins/job/plugin%20demo/build --user admin:admin

2.1.2含参任务
不设置参数/使用默认参数
curl -X POST http://localhost:8080/jenkins/job/commandTest/buildWithParameters --user admin:admin

2.1.3设置参数方法1
curl -X POST http://localhost:8080/jenkins/job/commandTest/buildWithParameters -d port=80

2.1.4设置参数方法2
curl -X POST http://localhost:8080/jenkins/job/commandTest/buildWithParameters -d port=80 --data-urlencode json='"{\"parameter\": [{\"name\": \"port\", \"value\": \"80\"}]}”'

2.1.5多参数
http://localhost:8080/jenkins/job/commandTest/buildWithParameters -d param1=value1&param2=value

2.2 创建job

2.2.1 需创建目录

1).创建job目录
~/.jenkins/jobs/jobfromcmd
2).创建config.xml文件(可从其他工程中复制)
3).运行命令
curl -X POST http://localhost:8080/jenkins/createItem?name=jobfromcmd --user admin:admin --data-binary "@config.xml" -H "Content-Type: text/xml”

2.2.2 不需创建目录
1).创建config.xml文件(可从其他工程中复制)
2).运行命令(在config.xml同一目录下)
curl -X POST http://localhost:8080/jenkins/createItem?name=jobfromcmd --user admin:admin --data-binary "@config.xml" -H "Content-Type: text/xml”

2.2.3直接使用控制台,不需创建xml文件(将xml内容写入控制台中运行)
echo '<?xml version="1.0" encoding="UTF-8"?><project>…</project>' | curl -X POST -H 'Content-type:text/xml' -d @- http://localhost:8080/jenkins/createItem?name=jobfromcmd


2.3 删除job
curl -X POST http://localhost:8080/jenkins/job/jobfromcmd/doDelete

2.4 查询job的状态
curl --silent ${JENKINS_SERVER}/job/JOB_NAME/lastBuild/api/json

2.5 自动disable Project:
curl --user ${UserName}:${PASSWORD} -o /dev/null --data disable JENKINS_URL/job/JOBNAME/disable

2.6获取build的num
curl --silent ${JENKINS_SERVER}/job/JOB_NAME/lastBuild/buildNumber

2.7获取最近成功的build的num
curl --silent ${JENKINS_SERVER}/job/JOB_NAME/lastStableBuild/buildNumber

 

更多curl参考:
https://curl.haxx.se/docs/manpage.html
https://curl.haxx.se/docs/manual.html

在Zabbix中实现调用Jenkins API触发构建任务,通常通过Zabbix的**动作(Action)**功能与**自定义脚本**或**Webhook**机制来完成。以下是具体实现步骤: ### 配置Jenkins API访问权限 在Jenkins中,需要为Zabbix提供API访问权限。可以通过创建一个专用用户并为其分配适当权限来实现。确保该用户具有“Job > Build”权限,以便Zabbix可以远程触发构建任务。 同时,获取JenkinsAPI Token,访问方式如下: 1. 登录Jenkins。 2. 点击右上角用户名。 3. 选择“Configure”。 4. 在“API Token”部分生成新的Token。 JenkinsAPI触发URL格式如下: ``` http://<jenkins-url>/job/<job-name>/build ``` 如果需要认证,可以使用Basic Auth格式: ``` http://<username>:<api-token>@<jenkins-url>/job/<job-name>/build ``` ### 在Zabbix中配置自定义脚本或Webhook Zabbix支持通过**自定义脚本**或**Webhook**方式调用外部API。以下分别介绍两种方式的配置方法。 #### 方法一:使用Zabbix自定义脚本 1. 在Zabbix Server或Proxy的脚本目录(默认为`/usr/lib/zabbix/alertscripts`)中,创建一个用于调用Jenkins API的脚本,例如`jenkins_trigger.sh`: ```bash #!/bin/bash JENKINS_URL="http://jenkins.example.com/job/my-job/build" curl -X POST $JENKINS_URL --user <username>:<api-token> ``` 2. 赋予脚本执行权限: ```bash chmod +x /usr/lib/zabbix/alertscripts/jenkins_trigger.sh ``` 3. 在Zabbix Web界面中,进入“Administration > Scripts”,点击“Create Script”。 - 名称:`Trigger Jenkins Job` - 类型:`Script` - 命令:`jenkins_trigger.sh` 4. 创建一个动作(Action),在触发条件满足时执行该脚本。 #### 方法二:使用Zabbix Webhook Zabbix 5.0及以上版本支持Webhook通知方式,可以直接通过HTTP请求调用Jenkins API。 1. 在Zabbix Web界面中,进入“Administration > Media types”。 2. 点击“Create media type”。 - 名称:`Jenkins Webhook` - 类型:`Webhook` - Webhook URL:`http://jenkins.example.com/job/my-job/build` - 用户名和密码字段填写Jenkins的认证信息。 3. 创建一个动作(Action),选择该Webhook作为通知方式,并设置触发条件。 ### 配置Zabbix动作(Action)以触发Jenkins任务 1. 在Zabbix Web界面中,进入“Configuration > Actions”。 2. 点击“Event source: Problems”创建新动作。 3. 设置触发条件,例如特定主机或触发器状态。 4. 在“Operations”选项卡中添加操作,选择之前配置的脚本或Webhook。 5. 保存动作配置。 ### 示例:通过Zabbix触发Jenkins自动化构建 假设Zabbix监控到某台服务器的磁盘空间不足,此时可以触发Jenkins任务执行清理脚本或扩容操作。Zabbix动作会调用Jenkins API触发预定义的流水线任务,完成自动化修复操作。 ### 相关问题 1. 如何在Jenkins中配置Webhook以响应Zabbix的触发请求? 2. Zabbix如何通过企业微信通知Jenkins任务的执行结果? 3. 如何在Zabbix中实现基于监控指标的自动化修复流程? 4. Zabbix与Jenkins集成时如何处理身份验证和权限管理? 5. 如何测试Zabbix调用Jenkins API的连通性和有效性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值