|
||
---|---|---|
src | ||
.gitignore | ||
pom.xml | ||
readme.md |
readme.md
bridge的功能主要是用于educoder前台与k8s集群进行交互,主要有以下三个接口:
发布实训:publishGame
- 写测试用例到/data/workspace/testCases/${trainingID}/ 目录
- 根据实训配置参数gameInfo生成该实训的评测脚本模板到/data/workspace/shell/${trainingID}/ 目录
评测脚本根据实训环境的不同采用不同的ShellService实现类来生成
开启实训:openGameInstance
- 克隆版本库 gitClone
- 生成Tpi评测脚本,Tpi评测脚本只是在Tpm评测脚本模板的基础上,设定了当前工作目录(拷贝到工作目录并在脚本执行首行切换到tpi工作目录)
- 根据tpiID和实训环境读取yaml目录下对应的rc文件创建Rc,命名格式:xx-master-${tpiID} (先拷贝该类实训的模板yaml文件并加上tpi的标志信息,通过拷贝后的文件创建rc)
评测: buildJobForInstance
- 取版本库远端更新 gitPull
- 根据tpiID和实训环境找到对应的pod,调用评测脚本进行评测(这个过程中如果pod已经被销毁,则需要重新创建pod)
- 执行完评测脚本之后将脚本执行玩的结果进行再封装,回传给educoder前台
Redis相关:
- key:task 存任务,一个element为一个任务字符串(可用来生成任务),其score为新来的在最大基础上自增1,用于rank
- key:pod 存正在运行任务的pod及此时在该pod上运行的任务数,任务数一般是1。若该pod的执行任务数降为0,则移除