评测任务
任务类型

任务类型

一个评测任务由若干个子任务构成,这些子任务被分为三种类型:顺序任务、并发任务和动作任务。顺序任务和并发任务能够嵌套其它子任务,表达复杂的评测流程。动作任务执行实际的操作,如添加文件、运行容器等。如果将评测任务比作一棵多叉树,那么顺序任务和并发就是其中的内部节点,动作任务就是其中的叶子节点。

顺序任务

顺序任务的作用是按一定的顺序执行它的子任务,通过 steps 定义。每个评测任务的根节点就是一个顺序任务。在下面的例子中,顺序任务会按顺序执行 onetwothree 三个子任务。

steps:
  one: # ...
  two: # ...
  three: #...

并发任务

并发任务的作用是并发执行它的子任务,通过 parallel 定义。并发任务总是会等待所有子任务执行完成,无论是否有子任务执行失败。

在下面的例子中,并发任务会并发执行 onetwothree 三个子任务。

parallel:
  -  # ...
  -  # ...
  -  #...

并发任务的参数也可以是一个字典,此时键的作用和顺序任务类似,同样是给每个子任务赋予名称:

parallel:
  one: # ...
  two: # ...
  three: # ...

动作任务

动作任务能够执行添加文件、运行评测程序等操作,通过 action 定义。在下面的例子中,动作任务会执行添加文件的操作,向评测任务的根文件夹中添加文件。

action: "seele/add-file@1"
# ...