training_project/readme.md

2.5 KiB
Raw Permalink Blame History

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模板文件存储在中间层
  3. 调用评测脚本进行评测这个过程中如果pod已经被销毁则需要重新创建pod 对测试用例,评测时候传过来,脚本仅传入输入,以数组形式传进去,在脚本中解析
  4. 执行完评测脚本之后将脚本执行完的结果进行再封装回传给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
  3. webssh+评测: evassh-environment-tpi

多profile配置 在tomcat/bin目录下的setenv.sh文件中设置了启动时使用的profile 如: -Dspring.profiles.active=test

日志 正式版按天生成测试版记入catalina.out文件中