2018-04-03 10:39:10 +08:00
|
|
|
|
bridge的功能主要是用于educoder前台与k8s集群进行交互,主要有以下四个接口:
|
|
|
|
|
|
|
|
|
|
**开启实训:openGameInstance**
|
|
|
|
|
1. 克隆版本库 gitClone
|
|
|
|
|
2. 生成Tpi评测脚本,Tpi评测脚本只是在Tpm评测脚本模板的基础上,设定了当前工作目录(拷贝到工作目录并在脚本执行首行切换到tpi工作目录)
|
|
|
|
|
3. 生成TPI yaml文件 打上TPI的标签 确定mountPath 写到工作目录
|
|
|
|
|
|
|
|
|
|
**评测: buildJobForInstance**
|
|
|
|
|
1. 取版本库远端更新 gitPull
|
|
|
|
|
2. 如果需要端口映射,通过端口检测策略,检测一个可用的端口,创建TPI service yaml文件并创建pod 以及 service
|
|
|
|
|
service模板文件存储在中间层
|
|
|
|
|
2. 调用评测脚本进行评测(这个过程中如果pod已经被销毁,则需要重新创建pod)
|
|
|
|
|
对测试用例,评测时候传过来,脚本仅传入输入,以数组形式传进去,在脚本中解析
|
|
|
|
|
3. 执行完评测脚本之后将脚本执行完的结果进行再封装,回传给educoder前台
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**重置TPI** (现成的)
|
|
|
|
|
重置TPM脚本或者版本库的时候由TPI发起更新请求更新已经开启的TPI
|
|
|
|
|
1. 修改TPM脚本,需要重置已经开启的TPI
|
|
|
|
|
2. 更新TPI版本库,保持与TPM同步
|
|
|
|
|
|
|
|
|
|
**增加实训平台** **删除 修改 查询**
|
|
|
|
|
1. 增加该实训平台对应的评测脚本的模板
|
|
|
|
|
2. 提供镜像名,版本号,以及是否需要端口映射(指定服务的端口),来生成pod yaml文件模板(如果需要端口映射,service yaml)
|
|
|
|
|
3. 设定该类实训的超时时间(每个实训存储其对应的实训平台类型)
|
|
|
|
|
|
|
|
|
|
webssh 和 评测的pod分别放到不同的namespace下
|
|
|
|
|
(对于webssh与评测用一个pod的情况呢?)
|
|
|
|
|
|
|
|
|
|
**需要迁移过来的现有功能**
|
|
|
|
|
1. 定时删除pod,通过一关之后删除以及定时删除
|
|
|
|
|
2. redis任务队列
|
|
|
|
|
3. webssh
|
|
|
|
|
|
|
|
|
|
**redis相关**
|
|
|
|
|
1. 键名"task":有序队列,存储一个评测任务的构建字符串(可用于生成一次评测任务),每个任务有一个分数用于排序。用途:排队
|
|
|
|
|
2. 键名"taskNum":有序队列,存储一个pod及其中正在运行的任务数,score为这个pod的任务数(podName:taskNum)
|
|
|
|
|
3. 键名"port":哈希表,存储一个pod及其对应的映射端口,podName:port
|
|
|
|
|
|
|
|
|
|
**pod命名规则**
|
|
|
|
|
1. 评测:environment-tpi
|
|
|
|
|
2. webssh: webssh-environment-tpi
|
2018-04-25 10:22:14 +08:00
|
|
|
|
3. webssh+评测: evassh-environment-tpi
|
|
|
|
|
|
|
|
|
|
**多profile配置**
|
|
|
|
|
在tomcat/bin目录下的setenv.sh文件中设置了启动时使用的profile,
|
|
|
|
|
如: `-Dspring.profiles.active=test`
|
|
|
|
|
|
|
|
|
|
**日志**
|
|
|
|
|
正式版按天生成,测试版记入catalina.out文件中
|