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}