我创建了一个参数化的Jenkins作业,该作业将变量从Java传递到。
这是Java:
final HttpClient client = new HttpClient(); final PostMethod buildMethod = new PostMethod(Constants.SVN2GIT_QA_URL); buildMethod.setParameter(Constants.GIT_URL_PARAM, gitUrl); buildMethod.setParameter(Constants.PASSWORD_PARAM, password); buildMethod.setParameter(Constants.SVN2GIT_COMMAND, svn2gitCommand); buildMethod.setParameter(Constants.SVN2GIT_EMAIL, email); buildMethod.setParameter(Constants.REPO_NAME, repoName); client.executeMethod(buildMethod);
所以这很简单,因为我只是将Strings 传递给工作。但是,我现在想File使用File ParameterJenkins中的A将A传递给工作。
String
File
File Parameter
我看到的一件事是File ParameterJenkins中的拥有一个File Location和File Description。因此,甚至不知道如何从Java将其设置为参数。
File Location
File Description
这可能吗?
这是一个可运行的类。使用apache-httpclient(4.5.1)和相关的jar。关键是将/ build / URL与MultiPart Form提交一起使用。此处描述了远程API
package my; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.FormBodyPartBuilder; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.HttpClientBuilder; import java.io.File; import java.io.IOException; class JenkinsClientExample { void helloJenkins() throws IOException { String server = "localhost"; String jenkinsHost = "http://" + server + ":8080"; HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); HttpClient httpClient = httpClientBuilder.build(); String payLoad="{ \"parameter\": [{\"name\":\"FILE1_PARAM\",\"file\":\"file0\"}, {\"name\":\"FILE2_PARAM\",\"file\":\"file1\"},{\"name\":\"STRING_PARAM\", \"value\":\"2014\"}, " + "{\"name\":\"BOOLEAN_PARAM\", \"value\":\"TRUE\"} ] }"; File file = new File("c:/dummy.txt"); File file2 = new File("c:/another.txt"); FormBodyPartBuilder formBodyPartBuilder3 = FormBodyPartBuilder.create("file0", new FileBody(file, ContentType.TEXT_PLAIN)); FormBodyPartBuilder formBodyPartBuilder4 = FormBodyPartBuilder.create("file1", new FileBody(file2, ContentType.TEXT_PLAIN)); FormBodyPartBuilder formBodyPartBuilder1 = FormBodyPartBuilder.create("json", new StringBody(payLoad, ContentType.TEXT_PLAIN)); HttpEntity entity = MultipartEntityBuilder .create() .addPart(formBodyPartBuilder3.build()) .addPart(formBodyPartBuilder4.build()) .addPart(formBodyPartBuilder1.build()) .setMode(HttpMultipartMode.BROWSER_COMPATIBLE) .build(); //must be the build URL not buildWithParameters HttpPost httpPost = new HttpPost(jenkinsHost + "/job/fake.UpdateCQ_VersionFixed/build"); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); HttpEntity result = response.getEntity(); System.out.println(result); System.out.println(response.toString()); } public static void main(String[] args) { try { new JenkinsClientExample().helloJenkins(); } catch (IOException e) { e.printStackTrace(); } } }