Skip to main content

opal/model/
job.rs

1use super::{ArtifactSpec, CacheSpec, EnvironmentSpec, ImageSpec, JobDependencySpec, ServiceSpec};
2use crate::gitlab::rules::JobRule;
3use std::collections::HashMap;
4use std::time::Duration;
5
6#[derive(Debug, Clone)]
7pub struct JobSpec {
8    pub name: String,
9    pub stage: String,
10    pub commands: Vec<String>,
11    pub needs: Vec<JobDependencySpec>,
12    pub explicit_needs: bool,
13    pub dependencies: Vec<String>,
14    pub before_script: Option<Vec<String>>,
15    pub after_script: Option<Vec<String>>,
16    pub inherit_default_image: bool,
17    pub inherit_default_before_script: bool,
18    pub inherit_default_after_script: bool,
19    pub inherit_default_cache: bool,
20    pub inherit_default_services: bool,
21    pub inherit_default_timeout: bool,
22    pub inherit_default_retry: bool,
23    pub inherit_default_interruptible: bool,
24    pub when: Option<String>,
25    pub rules: Vec<JobRule>,
26    pub only: Vec<String>,
27    pub except: Vec<String>,
28    pub artifacts: ArtifactSpec,
29    pub cache: Vec<CacheSpec>,
30    pub image: Option<ImageSpec>,
31    pub variables: HashMap<String, String>,
32    pub services: Vec<ServiceSpec>,
33    pub timeout: Option<Duration>,
34    pub retry: RetryPolicySpec,
35    pub interruptible: bool,
36    pub resource_group: Option<String>,
37    pub parallel: Option<ParallelConfigSpec>,
38    pub tags: Vec<String>,
39    pub environment: Option<EnvironmentSpec>,
40}
41
42#[derive(Debug, Clone, Default)]
43pub struct RetryPolicySpec {
44    pub max: u32,
45    pub when: Vec<String>,
46    pub exit_codes: Vec<i32>,
47}
48
49#[derive(Debug, Clone, PartialEq, Eq)]
50pub enum ParallelConfigSpec {
51    Count(u32),
52    Matrix(Vec<ParallelMatrixEntrySpec>),
53}
54
55#[derive(Debug, Clone, PartialEq, Eq)]
56pub struct ParallelMatrixEntrySpec {
57    pub variables: Vec<ParallelVariableSpec>,
58}
59
60#[derive(Debug, Clone, PartialEq, Eq)]
61pub struct ParallelVariableSpec {
62    pub name: String,
63    pub values: Vec<String>,
64}