Jenkins构建通知-http请求通知

发布于 2022-08-06  91 次阅读


使用HTTP Request插件,就能在Jenkins pipeline中发送HTTP请求给第三方系统,这是最通用的jenkins与第三方系统集成的方式之一

HTTP Request 插件提供了httpRequest 步骤,代码示例如下:

steps {
  script {
    // 拼接字符
    head = "\"构建记录:#${env.BUILD_ID},分支:#${},详细信息如下:"
    s1 = ">应用名称: <font color=\\\"info\\\">${}</font>"
    s2 = ">环境: <font color=\\\"info\\\">${}</font>"
    s3 = ">构建状态: <font color=\\\"info\\\">构建成功🥳</font>"
    s4 = ">提交者: <font color=\\\"info\\\">${}</font>"
    s5 = ">提交ID: <font color=\\\"info\\\">${}</font>"
    s6 = ">提交内容: <font color=\\\"info\\\">${}</font>"
    s7 = ">[查看详细构建信息]()"
    def msg = "${head}"+"\n"+ "${s1}"+"\n"+"${s2}"+"\n"+"${s3}"+"\n"+"${s4}"+"\n"+"${s5}"+"\n"+"${s6}"+"\n"+"${s7}\""
    def body = "{ \"msgtype\": \"markdown\", \"markdown\": { \"content\": ${msg} } }"
    def response = httpRequest (
        url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${paramMap.WEBHOOK_TOKEN}",
        httpMode: "POST",
        contentType: "APPLICATION_JSON_UTF8",
        requestBody: "${body}",
        responseHandle: 'NONE',
        wrapAsMultipart: false
    )
  }
}

httpRequest步骤返回的response对象包含两个字段。

  • content :响应内容
  • status :响应码

以下是httpRequest步骤支持的参数

  • url:字符串类型,请求URL
  • acceptType:枚举类型,HTTP请求Header的“Accept”的值类型为NOT_SET.TEXT_HTML、TEXT_PLAIN.APPLICATION_FORM、APPLICATION_JSON、APPLICATION_JSON_UTF8、APPLICATION_TAR、APPLICATION_ZIP、APPLICATION_OCTETSTREAM。
  • authentication :字符串类型,Username with password凭证的ID,采用的是HTTP Basic认证方式
  • consoleLogResponseBody :布尔类型,是否将请求的响应body 打印出来
  • contentType:枚举类型,HTTP请求Header的“Content-type”的值类型,与acceptType支持的枚举一样
  • customHeaders : HttpRequestNameValuePair对象数组,HTTP请求Header部分的内容,该对象有3个参数
    • name :字符串类型,Header名称
    • value :字符串类型,Header值。
    • maskValue :布尔类型,是否隐藏 Header值。如果设置为true,则在打印时使用“*”代替。
  • httpMode:枚举类型,HTTP方法,有GET(默认)、HEAD.POST、PUT、DELETE、OPTIONS、PATCH。
  • httpProxy:字符串类型,HTTP代理地址
  • ignoreSslErrors :布尔类型,是否忽略SSL错误。
  • requestBody :字符串类型,请求的body内容。
  • timeout :整型,超时时间,单位为秒。默认值为0,代表不设置超时时间。
  • validResponseCodes :字符串类型,代表HTTP请求成功的状态码。它支持3种格式的值。
    • 单状态值:比如200,当收到200响应状态码时,表示HTTP请求成功。
    • 多状态值:当响应状态码符合多个状态码中的一个时,代表请求成功。多个状态码之间使用逗号(,)分隔。比如200,404,500。
    • 范围状态值∶格式为“From : To”。比如200 : 302,代表收到200到J302的响应状态码都代表请求成功。
  • validResponseContent :字符串类型,比如设置它的值为”showme.codes”,那么只有当HTTP返回的内容中包含了 “showme.codes”时,才代表请求成功。
  • quiet :布尔类型,是否关闭所有的日志打印,默认值为false。
  • responseHandle:枚举类型,获取HTTP响应内容的方式。其值可以为
    • NONE:不读取响应内容。
    • LEAVE_OPEN:当执行完请求后,并不会返回响应的内容,而是返回一个打开了的inputStream,由你自己决定该如何读取响应内容。但是在使用完之后,记得调用input-Stream的close ()方法关闭。
    • STRING(默认值)∶将响应内容转换成一个字符串。
  • outputFile:字符串类型,请求响应内容的输出路径。