2016-03-20 11 views
13

Jenkins Pipelineビルド中に簡単なHTTP POST要求を作成できるようにする必要があります。しかし、私はWindowsとLinuxのノードで動作するのに必要なシンプルなcurl shスクリプトを使用することはできません。それを避けることができれば、ノードにツールをインストールする必要はありません。Jenkins GroovyスクリプトからHTTP POST要求を実行するにはどうすればよいですか?

私たちが使用しているPipelineプラグインで使用されているGroovyライブラリは、この作業には完璧でなければなりません。 Groovyがhttp-builderという簡単なPOSTを実行できる拡張機能がありますが、私の人生はJenkinsのGroovyインストールでその使い方を理解することができません。

パイプラインスクリプトでGrapes Grabを使用しようとするとエラーが発生しますが、これは失敗します。as seen here。多分ブドウグラブはGroovyのジェンキンスのバンドルされたバージョンではサポートされていません

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

を使用しています。 http-builderとその依存関係をダウンロードしてJenkins Groovyのノードにインストールするだけで簡単に追加できますか?

+0

可能な重複http://stackoverflow.com/questions/25692515/groovy-built-in-rest-http-client – KeepCalmAndCarryOn

+0

悲しいことではない - これはジェンキンスがそれと統合する方法で行うことがより多くを持っています。それはそれほど単純ではありません。 :/ –

+0

私はあなたが大括弧 - @Grapes([@Grab(...)]) –

答えて

4

おそらく私は何かが不足していますが、なぜジェンキンスクラスパスに既にある標準のJavaライブラリを使用しないのでしょうか?ジェンキンのパイプラインについては

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") 
+1

が必要だと思ったScript Security PluginはURL.openConnection()メソッドを呼び出すことができないので、 – LoganMzz

28

私はあなたがこのようにそれを使用することができますので、それをうまくグルーヴィーに統合されて"HTTP-Request" plugin

をインストールすることをお勧めします:

def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}" 
+1

非常に重要な制限:プログラムでヘッダを追加する。 – eleven

+8

これは次のようになります。httpRequest customHeaders:[[name: 'FOO'、value: 'BAR']]、url: 'http:// company.com''' – LoganMzz