web-dev-qa-db-ja.com

POST Jenkins http-requestプラグインとパイプラインを使用した本文のJSONデータの方法は?

Jenkinsのhttp-requestプラグインのv1.8.10(私は1.643を実行しています)では、リクエストの本文のPOSTがサポートされているため、この thread は適用されません。この機能をPipeline(v2.1)Groovyスクリプトで使用する方法を知りたいのですが。スニペットジェネレーターにはこの新しいフィールドが含まれていないため、構築する例はありません。

Snippet Generator

JSONデータをリクエスト本文に取り込むためにさまざまな方法を試しましたが、Tomcatサーバーは常にhttp 400ステータスコードを返します:The request sent by the client was syntactically incorrect.

私が試したこと:

def toJson = {
    input ->
    groovy.json.JsonOutput.toJson(input)
}
def body = [
    displayName: [
        text: "smoke test"],
    description: [
        text: "for smoke testing"],
    genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: toJson(body), url: "https://${Host}", validResponseCodes: '200'

def body = [
    displayName: [
        text: "smoke test"],
    description: [
        text: "for smoke testing"],
    genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: body, url: "https://${Host}", validResponseCodes: '200'

response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: "{\"displayName\":{\"text\":"smoke test\"},\"description\":{\"text\":\"for smoke testing\"}, \"genusTypeId\":\"type\"}", url: "https://${Host}", validResponseCodes: '200'

response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: "'{\"displayName\":{\"text\":"smoke test\"},\"description\":{\"text\":\"for smoke testing\"}, \"genusTypeId\":\"type\"'}", url: "https://${Host}", validResponseCodes: '200'

http-requestライブラリコードをスキャンすると、このフラグを設定しても機能するようです。 Pipelineプラグイン/ Jenkinsプラグインがどのように機能するかわからないので、Pipeline-> http-requestコードがこの新しいパラメーターを考慮しているかどうかを知りたいのですが。リクエスト本文を含むPOSTをパイプラインで機能させる方法や、接続を確立するためにPiplineプラグインコードを変更する必要がある場所を誰かに教えてもらえますか?

11
user

これはバグだと思います。私は追加しました https://issues.jenkins-ci.org/browse/JENKINS-362

そしてPR: https://github.com/jenkinsci/http-request-plugin/pull/15

4
Isaac Cohen