Skip to main content

opal/model/
pipeline.rs

1use super::{CacheSpec, ImageSpec, RetryPolicySpec, ServiceSpec};
2use crate::gitlab::rules::JobRule;
3use std::collections::HashMap;
4use std::time::Duration;
5
6#[derive(Debug, Clone)]
7pub struct PipelineSpec {
8    pub stages: Vec<StageSpec>,
9    pub jobs: HashMap<String, super::JobSpec>,
10    pub defaults: PipelineDefaultsSpec,
11    pub workflow: Option<WorkflowSpec>,
12    pub filters: PipelineFilterSpec,
13}
14
15#[derive(Debug, Clone)]
16pub struct StageSpec {
17    pub name: String,
18    pub jobs: Vec<String>,
19}
20
21#[derive(Debug, Clone, Default)]
22pub struct PipelineDefaultsSpec {
23    pub image: Option<ImageSpec>,
24    pub before_script: Vec<String>,
25    pub after_script: Vec<String>,
26    pub variables: HashMap<String, String>,
27    pub cache: Vec<CacheSpec>,
28    pub services: Vec<ServiceSpec>,
29    pub timeout: Option<Duration>,
30    pub retry: RetryPolicySpec,
31    pub interruptible: bool,
32}
33
34#[derive(Debug, Clone, Default)]
35pub struct WorkflowSpec {
36    pub rules: Vec<JobRule>,
37}
38
39#[derive(Debug, Clone, Default)]
40pub struct PipelineFilterSpec {
41    pub only: Vec<String>,
42    pub except: Vec<String>,
43}