【Jenkins】调用API构建并钉钉通知
Jenkins API介绍
Jenkins 提供了远程访问 API。目前它有三种格式:
-
XML
-
JSON
-
Python
远程访问 API 形式为"…/api/"
例如, Jenkins 安装位于https://ci.jenkins.io,则访问https://ci.jenkins.io/api/将仅显示可用的顶级 API 功能 – 主要是Jenkins 实例的已配置作业的列表 。
Jenkins API 可用于执行以下操作:
-
从 Jenkins 检索信息以进行编程使用。
-
触发新的构建
-
创建/复制作业
提交作业
不带参数的作业
只需要执行 HTTP POST JENKINS_URL/job/JOBNAME/build。
带参数的作业
例如 - 包含“字符串参数”:
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
在此示例中,符号“@”很重要。另外,文件的路径是绝对路径。为了使此命令起作用,您需要将 Jenkins 作业配置为采用文件参数,并将Jenkins 作业配置中的文件位置–form字段与选项中的键相匹配。
API 令牌
早期版本的 Jenkins 要求指定真实密码,目前版本不建议这样做,因为存在泄露密码的风险,建议使用API 令牌
API 令牌可在个人配置页面中找到。在每个页面的右上角单击您的姓名,然后单击“配置”以查看您的 API 令牌。
Shell调用代码
实现调用API构建,且成功后钉钉通知
webhook=https://xxx.dingding.com
project=test-app
app_env=test
jenkins_url=http://xxxx.com/job/${project}/buildWithParameters?type=${app_env}
http_status_code=`curl -o /dev/null -s -w %{http_code} -X POST ${jenkins_url} --user xxxx:xxxxx`
if [[ $http_status_code -eq 000 ]] || [[ $http_status_code -ge 304 ]];then
echo "http_status_code is" $http_status_code
exit 1
else
echo "service status okn"$http_content
curl "${webhook}" -H 'Content-Type: application/json' -d "
{
"msgtype": "markdown",
"markdown": {
"title":"Jenkins通知",
"text": "#### 项目:${project}n> 环境:${app_env}nn> 开始执行构建n n"
},
}