使用 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: 字符串类型,请求响应内容的输出路径。
正文完