【Jenkins】调用API构建并钉钉通知

文章目录

Jenkins API介绍

Jenkins 提供了远程访问 API。目前它有三种格式:

  1. XML

  2. JSON

  3. Python

远程访问 API 形式为".../api/"

例如, Jenkins 安装位于https://ci.jenkins.io,则访问https://ci.jenkins.io/api/将仅显示可用的顶级 API 功能 -- 主要是Jenkins 实例的已配置作业的列表 。

Jenkins API 可用于执行以下操作:

  1. 从 Jenkins 检索信息以进行编程使用。

  2. 触发新的构建

  3. 创建/复制作业

提交作业

不带参数的作业

只需要执行 HTTP POST JENKINS_URL/job/JOBNAME/build。

带参数的作业

例如 - 包含"字符串参数":

bash 复制代码
curl JENKINS_URL/job/JOB_NAME/buildWithParameters \
  --user USER:TOKEN \
  --data id=123 --data verbosity=high

另一个包含"文件参数"的例子 - :

bash 复制代码
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构建,且成功后钉钉通知

bash 复制代码
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 ok\n"$http_content
            curl "${webhook}" -H 'Content-Type: application/json' -d "
    {
        \"msgtype\": \"markdown\",
        \"markdown\": {
                \"title\":\"Jenkins通知\",
                \"text\": \"#### 项目:${project}\n> 环境:${app_env}\n\n> 开始执行构建\n \n\"
     },
    }
相关推荐
忧郁的狐狸33 分钟前
Jenkins 安装与配置指南
运维·jenkins
white.tie14 小时前
Docker部署单节点Elasticsearch
elasticsearch·docker·jenkins
胡小禾16 小时前
ES常识8:ES8.X如何实现热词统计
大数据·elasticsearch·jenkins
好吃的肘子1 天前
Beats
运维·jenkins
好吃的肘子1 天前
ElasticSearch进阶
大数据·开发语言·分布式·算法·elasticsearch·kafka·jenkins
小小寂寞的城2 天前
Jenkins里构建一个简单流水线
java·运维·jenkins
新老农3 天前
php数据导出pdf,然后pdf转图片,再推送钉钉群
pdf·php·钉钉
我喜欢山,也喜欢海3 天前
Jenkins Maven 带权限 搭建方案2025
java·jenkins·maven
kaikaile19953 天前
Jenkins集成Maven
servlet·jenkins·maven
z日火3 天前
集成钉钉消息推送功能
钉钉·消息推送