设置GCC和java公用一个生成模板类
This commit is contained in:
parent
45af6156d5
commit
ec70b9f819
|
@ -1,65 +0,0 @@
|
|||
package com.educoder.jenkins.model;
|
||||
|
||||
/**
|
||||
* Created by Liqiankun on 2017/5/25 0025
|
||||
* Description:
|
||||
*/
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.educoder.jenkins.utils.StringUtil;
|
||||
public class GeneratePipelineGCC extends GeneratePipeline {
|
||||
public GeneratePipelineGCC() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateChallengePipeline(Map<String,String> params) throws IOException {
|
||||
// TODO Auto-generated method stub
|
||||
String challengeTemplateFileName=params.get("challengeTemplateFileName");
|
||||
String pipeline=StringUtil.getCofigureFileContent(challengeTemplateFileName);
|
||||
/* //提取执行文件名称
|
||||
String replacedStr[]=params.get("replaceExecuteCommand").split("#");
|
||||
if(replacedStr.length<2 || replacedStr.length%2!=0){ throw new ArrayIndexOutOfBoundsException("提取执行文件名称的替换有误");}
|
||||
String executeFileName = params.get("challengeProgramName");
|
||||
for(int i=0;i<replacedStr.length;i=i+2)
|
||||
{
|
||||
executeFileName = executeFileName.replace(replacedStr[i], replacedStr[i+1]);
|
||||
}*/
|
||||
|
||||
pipeline = pipeline.replace("COMPILECOMMAND", params.get("complieCommand"));
|
||||
pipeline = pipeline.replace("EXECUTECOMMAND", params.get("executeCommand"));
|
||||
pipeline = pipeline.replace("CHALLENGESTAGE", params.get("challengeStage"));
|
||||
//生成编译文件路径,c++编译多文件可以使用g++ /*.cpp这种形式把所有的cpp全部编译
|
||||
String challengeProgramNameOrigin = params.get("challengeProgramName");
|
||||
int lastPositon = challengeProgramNameOrigin.lastIndexOf("/");
|
||||
String challengeProgramName = challengeProgramNameOrigin.substring(0,lastPositon+1) + "*.cpp";
|
||||
//c++在编译时可以指定执行文件名,在这里指定执行文件名是executeFile.out
|
||||
String sourceClassName = challengeProgramNameOrigin.substring(0,lastPositon+1) + "executeFile.out";
|
||||
|
||||
pipeline = pipeline.replace("CHALLENGEPROGRAMNAME", challengeProgramName);
|
||||
pipeline = pipeline.replace("SOURCECLASSNAME", sourceClassName);
|
||||
pipeline = pipeline.replace("TRAININGID", params.get("trainingID"));
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.educoder.jenkins.model.GeneratePipeline#generateFullPipeline(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public String generateFullPipeline(Map<String, String> params) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
String podTemplate=params.get("podTemplate");
|
||||
String pipelineTemplateFileName=params.get("pipelineTemplateFileName");
|
||||
String challengePipeline=params.get("challengePipeline");
|
||||
String mainContainer=params.get("mainContainer");
|
||||
String fullPipeline=StringUtil.getCofigureFileContent(pipelineTemplateFileName);
|
||||
fullPipeline=fullPipeline.replaceFirst("MAINCONTAINER", mainContainer).replace("CHALLENGEPIPELINES", challengePipeline);
|
||||
fullPipeline=podTemplate+fullPipeline;
|
||||
return fullPipeline;
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -14,7 +14,10 @@ import java.io.IOException;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.educoder.jenkins.controller.GameController;
|
||||
import com.educoder.jenkins.utils.StringUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -27,17 +30,7 @@ import com.educoder.jenkins.utils.StringUtil;
|
|||
*/
|
||||
|
||||
public class GeneratePipelineJava extends GeneratePipeline{
|
||||
|
||||
/**
|
||||
* <一句话功能简述>
|
||||
* <功能详细描述>
|
||||
* @param CHALLENGESTAGE
|
||||
* @param TRAININGID
|
||||
* @param compileCommand
|
||||
* @param executeCommand
|
||||
* @param templateFileName
|
||||
* @see [类、类#方法、类#成员]
|
||||
*/
|
||||
private final static Logger logger = LoggerFactory.getLogger(GameController.class);
|
||||
public GeneratePipelineJava() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
|
@ -58,9 +51,10 @@ public class GeneratePipelineJava extends GeneratePipeline{
|
|||
if(replacedStr.length<2 || replacedStr.length%2!=0){ throw new ArrayIndexOutOfBoundsException("提取执行文件名称的替换有误");}
|
||||
String executeFileName = params.get("challengeProgramName");
|
||||
for(int i=0;i<replacedStr.length;i=i+2)
|
||||
{
|
||||
{
|
||||
executeFileName = executeFileName.replace(replacedStr[i], replacedStr[i+1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pipeline = pipeline.replace("COMPILECOMMAND", params.get("complieCommand"));
|
||||
pipeline = pipeline.replace("EXECUTECOMMAND", params.get("executeCommand"));
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<value>com.educoder.jenkins.model.GeneratePipelineJava</value>
|
||||
<value>com.educoder.jenkins.model.GeneratePipelineJava</value>
|
||||
<value>com.educoder.jenkins.model.GeneratePipelineJava</value>
|
||||
<value>com.educoder.jenkins.model.GeneratePipelineGCC</value>
|
||||
<value>com.educoder.jenkins.model.GeneratePipelineJava</value>
|
||||
</list>
|
||||
</property>
|
||||
|
||||
|
@ -98,7 +98,7 @@
|
|||
<value>.java# #src/# </value>
|
||||
<value>.py#.py</value>
|
||||
<value>.java# #src/# </value>
|
||||
<value></value>
|
||||
<value>.cpp#.cpp</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
if (currentChallenge == CHALLENGESTAGE) {
|
||||
|
||||
//生成编译文件路径,c++编译多文件可以使用g++ /*.cpp这种形式把所有的cpp全部编译
|
||||
compileFile = new StringBuilder('CHALLENGEPROGRAMNAME');
|
||||
lastPositon = compileFile.lastIndexOf('/');
|
||||
compileFile = compileFile.substring(0,lastPositon+1) + '*.cpp';
|
||||
compileResult = ''
|
||||
try
|
||||
{
|
||||
// 编译程序
|
||||
sh script: 'COMPILECOMMAND CHALLENGEPROGRAMNAME -o executeFile > compile_result_CHALLENGESTAGE.out 2>&1'
|
||||
sh script: 'COMPILECOMMAND ' + compileFile + ' -o executeFile.out > compile_result_CHALLENGESTAGE.out 2>&1'
|
||||
} catch(err)
|
||||
{
|
||||
//resubmit是以字符串的形式传进来的
|
||||
//重复构建时需要删除之前构建的成功的class并catch掉class文件不存在的异常
|
||||
catchError{
|
||||
sh 'rm SOURCECLASSNAME'
|
||||
sh 'rm executeFile.out'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +44,7 @@ if (currentChallenge == CHALLENGESTAGE) {
|
|||
|
||||
catchError
|
||||
{
|
||||
sh script: 'EXECUTECOMMANDSOURCECLASSNAME < ../testCases/TRAININGID/CHALLENGESTAGE/' + i + '.in > actual_result_CHALLENGESTAGE_' + i + '.out 2>&1 '
|
||||
sh script: 'EXECUTECOMMANDexecuteFile.out < ../testCases/TRAININGID/CHALLENGESTAGE/' + i + '.in > actual_result_CHALLENGESTAGE_' + i + '.out 2>&1 '
|
||||
}
|
||||
|
||||
def outI = readFile 'actual_result_CHALLENGESTAGE_' + i + '.out'
|
||||
|
|
Loading…
Reference in New Issue