我需要能够在Jenkins Pipeline版本中创建简单的HTTP POST请求。但是我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,如果我能避免它,我不希望在节点上强制执行更多的工具安装。
我们正在使用的Pipeline插件中使用的Groovy库应该非常适合这项任务。有一个扩展可用于Groovy执行名为http-builder的简单POST,但我不能在我的生活中找出如何在Jenkins中使用它的方法' Groovy安装。
如果我尝试使用Grapes Grab在Pipeline脚本中使用它,我会收到错误,as seen here。
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
在Groovy Jenkins使用的捆绑版本中,可能不支持Grapes Grab。是否可以简单地下载并将http-builder及其依赖项添加到发送到节点的Jenkins Groovy安装中?
答案 0 :(得分:33)
对于Jenkin的管道,我建议安装"HTTP-Request" plugin
很好地集成在groovy中,所以你可以像这样使用它:
$scope.getUser = function(value) {
return $q(function(resolve, reject){
$http({type: "GET", url: "http://mysiteurl/_api/web/siteusers$top=5000",
headers: { "ACCEPT": "application/json;odata=verbose"}})
.success(function(data) {
$scope.results = data.d.results;
$scope.user_attributes = [];
for(i=0; i < data.d.results.length; i++) {
if(data.d.results[i].Id == value) {
resolve(data.d.results[i].Title);
}
};
});
}
$scope.getUser(data.d.results[i].Project_x0020_POCId)
.then(function(user){
alert(user)
});
答案 1 :(得分:5)
也许我错过了一些东西,但为什么不使用已经在jenkins类路径上的标准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¶m2=def")
答案 2 :(得分:-2)
你必须将ivy.jar下载并复制到Jenkins lib目录(例如C:\ Program Files(x86)\ Jenkins \ war \ WEB-INF \ lib)并重启Jenkins(例如通过系统服务),它是然后可以从脚本控制台使用@Grab。进一步阅读: https://groups.google.com/forum/#!msg/job-dsl-plugin/EG6eqQYYI7M/2TKKysNw4QEJ