• 【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。

    带参数的作业

    例如 - 包含“字符串参数”:

    curl JENKINS_URL/job/JOB_NAME/buildWithParameters \
      --user USER:TOKEN \
      --data id=123 --data verbosity=high
    
    • 1
    • 2
    • 3

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

    curl JENKINS_URL/job/JOB_NAME/buildWithParameters \
      --user USER:PASSWORD \
      --form FILE_LOCATION_AS_SET_IN_JENKINS=@PATH_TO_FILE
    
    • 1
    • 2
    • 3

    在此示例中,符号“@”很重要。另外,文件的路径是绝对路径。为了使此命令起作用,您需要将 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 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\"
         },
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    LINUX驱动开发(SPI)SPI主机驱动代码解析
    java 自动加密解密RequestBodyAdvice和RequestBodyAdvice
    数据脱敏,你会了吗(一)
    计算机网络_计算机的概念、组成、功能、分类
    DiskMirror-spring-boot-starter 技术|
    docker系列(7) - Dockerfile
    自适应 t 分布与动态边界策略改进的算术优化算法-附代码
    Django笔记四十之运行Django环境的python脚本
    VUE 动态写入HTML并绑定监听事件
    Django性能优化
  • 原文地址:https://blog.csdn.net/qq_36464836/article/details/133814572