任务类型
一个评测任务由若干个子任务构成,这些子任务被分为三种类型:顺序任务、并发任务和动作任务。顺序任务和并发任务能够嵌套其它子任务,表达复杂的评测流程。动作任务执行实际的操作,如添加文件、运行容器等。如果将评测任务比作一棵多叉树,那么顺序任务和并发就是其中的内部节点,动作任务就是其中的叶子节点。
顺序任务
顺序任务的作用是按一定的顺序执行它的子任务,通过 steps
定义。每个评测任务的根节点就是一个顺序任务。在下面的例子中,顺序任务会按顺序执行 one
、two
和 three
三个子任务。
steps:
one: # ...
two: # ...
three: #...
并发任务
并发任务的作用是并发执行它的子任务,通过 parallel
定义。并发任务总是会等待所有子任务执行完成,无论是否有子任务执行失败。
在下面的例子中,并发任务会并发执行 one
、two
和 three
三个子任务。
parallel:
- # ...
- # ...
- #...
并发任务的参数也可以是一个字典,此时键的作用和顺序任务类似,同样是给每个子任务赋予名称:
parallel:
one: # ...
two: # ...
three: # ...
动作任务
动作任务能够执行添加文件、运行评测程序等操作,通过 action
定义。在下面的例子中,动作任务会执行添加文件的操作,向评测任务的根文件夹中添加文件。
action: "seele/add-file@1"
# ...