java驅動jenkins構建job
配置完成jenkins工程後,在jenkins可視化頁面可以直接構建job,當然也可以通過java驅動jenkins接口,構建job。
package jenkinsApi;
import java.io.IOException;
import java.net.URI;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class Job {
//jenkins登錄賬號
public static String username = "XXXX";
//jenkins登錄密碼
public static String password = "XXXXXXXXX";
//jenkins登錄url
public static String jenkinsUrl = "http://ip:port/jenkins";
public static String buildToken = "buildToken";
public static void main(String [] args) throws ClientProtocolException, IOException{
Job job = new Job();
//job.buildJob("YourJobName",true,null);
//job.buildJob("YourJobName",true,"param1=value1¶m2=value2¶m3=value3");
job.buildJob("YourJobName", false , "xxxx");
}
/*
* 調用jenkins接口,構建job
* 1、jobName:需要構建的jenkins工程的名字
* 2、buildJobParams:構建jenkins工程時需要的參數
* 3、isNeedParams:jenkins工程的類型,如果jenkins工程帶參數,isNeedParams=ture(isNeedParams=true時,buildJobParams生效,參數格式:key1=value1&key2=value2...,不填寫參數時jenkins使用默認參數)
* 如果jenkins工程不帶參數,isNeedParams=false(isNeedParams=false時,buildJobParams不生效,可以隨便填寫)
*/
public void buildJob(String jobName ,Boolean isNeedParams ,String buildJobParams) throws ClientProtocolException, IOException{
//jenkins構建job的url
String jenkinsBuildUrl = jenkinsUrl + "/job/" + jobName + "/build";
if(isNeedParams == true){
jenkinsBuildUrl = jenkinsUrl + "/job/" + jobName + "/buildWithParameters" + "?" + buildJobParams;
}
URI uri = URI.create(jenkinsBuildUrl);
HttpHost host = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort()), new UsernamePasswordCredentials(username, password));
// Create AuthCache instance
AuthCache authCache = new BasicAuthCache();
// Generate BASIC scheme object and add it to the local auth cache
BasicScheme basicAuth = new BasicScheme();
authCache.put(host, basicAuth);
CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
HttpPost httpPost = new HttpPost(uri);
// Add AuthCache to the execution context
HttpClientContext localContext = HttpClientContext.create();
localContext.setAuthCache(authCache);
HttpResponse response = httpClient.execute(host, httpPost, localContext);
EntityUtils.toString(response.getEntity());
}
}
注:本代碼只涉及構建job,參考了大牛的部分代碼