java驅動jenkins構建job

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&param2=value2&param3=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,參考了大牛的部分代碼


發佈了36 篇原創文章 · 獲贊 24 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章