文章目录
- Jenkins API介绍
- 提交作业
- 带参数的作业
- API 令牌
- Shell调用代码
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 ]];thenecho "http_status_code is" $http_status_codeexit 1elseecho "service status ok\n"$http_contentcurl "${webhook}" -H 'Content-Type: application/json' -d "{\"msgtype\": \"markdown\",\"markdown\": {\"title\":\"Jenkins通知\",\"text\": \"#### 项目:${project}\n> 环境:${app_env}\n\n> 开始执行构建\n \n\"},}