web-dev-qa-db-ja.com

Jenkins Groovyスクリプト内からHTTP POSTリクエストを実行するにはどうすればよいですか?

Jenkins Pipeline ビルド中に単純なHTTP POST=リクエストを作成できる必要があります。ただし、Windowsで動作するために必要な単純なcurl shスクリプトは使用できません。およびLinuxノード。これを回避できる場合は、ノードに追加のツールのインストールを強制したくありません。

使用しているPipelineプラグインで使用されているGroovyライブラリは、このタスクに最適です。 Groovyが http-builder と呼ばれる単純なPOSTを実行するための拡張機能がありますが、JenkinsのGroovyインストールでそれをどのように利用するかを考えることはできません。

Grapes Grabを使用してPipelineスクリプト内で使用しようとすると、エラーが発生します こちらを参照

@Grapes(
    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)

おそらくGrapes Grabは、Groovy Jenkinsが使用するバンドル版ではサポートされていません。 http-builderとその依存関係をダウンロードして、ノードに送信されるJenkins Groovyインストールに追加するだけで可能ですか?

17
S.Richmond

おそらく何かが足りないかもしれませんが、なぜ標準のJava jenkinsクラスパスに既にあるライブラリを使用しないのですか?

import Java.io.BufferedReader
import Java.io.InputStreamReader
import Java.io.OutputStreamWriter
import Java.net.URL
import Java.net.URLConnection

def sendPostRequest(urlString, paramString) {
    def url = new URL(urlString)
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())

    writer.write(paramString)
    writer.flush()
    String line
    def reader = new BufferedReader(new     InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
      println line
    }
    writer.close()
    reader.close()
}

sendPostRequest("http://www.something.com", "param1=abc&param2=def")
5
TheEllis

Jenkin's Pipelineの場合、 "HTTP-Request"プラグイン をインストールすることをお勧めします

Groovyにうまく統合されているので、次のように使用できます。

def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"
36
Alfredo MS