将进程池大小写进配置文件,并在构建控制中添加线程超时退出

This commit is contained in:
liqiankun 2017-05-23 12:31:35 +08:00
parent 99196bff2d
commit 3df483ecfc
4 changed files with 19 additions and 61 deletions

View File

@ -130,5 +130,9 @@ public class BuildThread implements Runnable{
logger.debug("job:" + this.jobName + "线程退出");
}
private int delJob()
{
return 0;
}
}

View File

@ -60,7 +60,6 @@ import com.educoder.jenkins.settings.Configure;
public class GameController extends BaseController {
@Autowired
JenkinsController jenkinsController;
@Autowired
JenkinsApi jenkinsApi;
@ -69,22 +68,6 @@ public class GameController extends BaseController {
@Autowired
PipeLineConfig pipeLineConfig;
// 定义对应于不同运行环境的编译命令
public final static Map<String, String> compileCMD = new HashMap<String, String>() {
{
put("java", "javac -encoding UTF-8 -Djava.ext.dirs=./lib/ -sourcepath src/ -d target/ ");
put("mysql-java", "javac -encoding UTF-8 -Djava.ext.dirs=./lib/ -sourcepath src/ -d target/ ");
put("python", "python ");
}
};
// 定义对应于不同运行环境的运行命令
public final static Map<String, String> runCMD = new HashMap<String, String>() {
{
put("java", "java -Dfile.encoding=UTF-8 -Djava.ext.dirs=./lib/ -cp target/ ");
put("mysql-java", "java -Dfile.encoding=UTF-8 -Djava.ext.dirs=./lib/ -cp target/ ");
put("python", "python ");
}
};
private final static Logger logger = LoggerFactory.getLogger(GameController.class);
@ -317,34 +300,6 @@ public class GameController extends BaseController {
* @return 0 删除成功
* -1 删除失败
* */
@ApiOperation(value = "删除Job及工作目录下的文件", httpMethod = "POST", produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@RequestMapping(path = "/deleteJob")
public JSONObject deleteJob(
@ApiParam(name = "jobName", required = true, value = "要删除的job的名字") @RequestParam String jobName)
throws Exception {
JSONObject info = JSONObject.parseObject(jobName);
String job = info.getString("jobName");
JSONObject response = new JSONObject();
response.put("status", -1);
// 调用Jenkins API删除job
int result = jenkinsApi.deleteJob(job);
/*
* -1:删除之前job 存在删除未成功
* 1;要删除的job不存在此时不用删除Jenkins工作目录下的文件
* 0:删除成功
* */
if (-1 == result) {
response.put("status", -1);
return response;
}
if (1 == result || 0 == result) {
response.put("status", 0);
return response;
}
@ApiOperation(value = "删除Job及工作目录下的文件", httpMethod = "POST", produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@RequestMapping(path = "/deleteJob")
public JSONObject deleteJob(@ApiParam(name = "jobName", required = true, value = "要删除的job的名字") @RequestParam String jobName) throws Exception {

View File

@ -109,21 +109,14 @@ public class JenkinsController extends BaseController {
instanceGitURL = Base64Helper.decode(instanceGitURL);
//为新来的job生成一个线程
//BuildThread buildThread = (BuildThread)AppContext.appContext.getBean("BuildThread");
TestCallable testCallable = (TestCallable)AppContext.appContext.getBean("TestCallable");
BuildThread buildThread = (BuildThread)AppContext.appContext.getBean("BuildThread");
Map buildParams = new HashMap();
buildParams.put("buildID", buildID);
buildParams.put("instanceChallenge", instanceChallenge);
buildParams.put("instanceGitURL", instanceGitURL);
buildParams.put("resubmit", resubmit);
/* buildThread.setBuildInfo(jobNameForInstance,buildParams);
pool.execute(buildThread);*/
testCallable.setBuildInfo(jobNameForInstance,buildParams);
Future<String> testObj = pool.submit(testCallable);
String obj = testObj.get(30,TimeUnit.SECONDS);
if(obj.equals("success"))
logger.debug("构建成功");
else logger.debug("构建失败或超时");
buildThread.setBuildInfo(jobNameForInstance,buildParams);
pool.execute(buildThread);
/*
* 先获取阻塞队列然后获取阻塞队列的大小即可得前方还有多少job在等待构建

View File

@ -11,6 +11,7 @@ import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@ -60,14 +61,19 @@ public class MyTest {
public String filePath=System.getProperty("user.dir")+"\\"+fileName2;
public static void main(String[] args) {
MyTest test = new MyTest();
try {
JenkinsServer jenkins = new JenkinsServer(new URI("http://106.75.33.219:30001"), "root", "root");
Map<String, Job> jobs = jenkins.getJobs();
JobWithDetails job = jobs.get("test").details();
// job.build();
System.out.println(job.getName());
System.out.println(System.getProperty("user.dir"));
test.createOneJob("lqk");
// JenkinsServer jenkins = new JenkinsServer(new URI(url), "root", "root");
// Map<String, Job> jobs = jenkins.getJobs();
// JobWithDetails job = jobs.get("test").details();
// job.build();
// System.out.println(job.getName());
//
// System.out.println(System.getProperty("user.dir"));
// MyTest test = new MyTest();
// test.createOneJobFromPipelineScript("lqk");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();