shrub_rs/models/
task_group.rs

1use serde::{Deserialize, Serialize};
2
3use super::{builtin::TimeoutValue, commands::EvgCommand};
4
5/// A group of tasks related tasks that can share hosts.
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct EvgTaskGroup {
8    /// Name of task group.
9    pub name: String,
10    /// Ordered list of tasks to include in group.
11    pub tasks: Vec<String>,
12
13    /// Number of hosts to spread group accross.
14    /// Defaults to 1, can be between 1 and 10.
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub max_hosts: Option<u16>,
17    /// Don't cleanup between task runs.
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub share_processes: Option<bool>,
20    /// Setup group failures will trigger failures.
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub setup_group_can_fail_task: Option<bool>,
23    /// Time to wait until setup will trigger a failure.
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub setup_group_timeout_secs: Option<TimeoutValue>,
26
27    /// Commands to run prior to running task group.
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub setup_group: Option<Vec<EvgCommand>>,
30    /// Commands to run after running task group.
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub teardown_group: Option<Vec<EvgCommand>>,
33    /// Commands to run before each task.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub setup_task: Option<Vec<EvgCommand>>,
36    /// Commands to run after each task.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub teardown_task: Option<Vec<EvgCommand>>,
39    /// Commands to run in case of timeout.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub timeout: Option<Vec<EvgCommand>>,
42
43    /// Task tags for this task group.
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub tags: Option<Vec<String>>,
46}