Welcome to mirror list, hosted at ThFree Co, Russian Federation.

pipeline.rb « ci « enums « concerns « models « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: fdc48d09db240c1b380f5953df0861101e76a63c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# frozen_string_literal: true

module Enums
  module Ci
    module Pipeline
      # Returns the `Hash` to use for creating the `failure_reason` enum for
      # `Ci::Pipeline`.
      def self.failure_reasons
        {
          unknown_failure: 0,
          config_error: 1,
          external_validation_failure: 2,
          activity_limit_exceeded: 20,
          size_limit_exceeded: 21,
          job_activity_limit_exceeded: 22,
          deployments_limit_exceeded: 23,
          user_blocked: 24,
          project_deleted: 25
        }
      end

      # Returns the `Hash` to use for creating the `sources` enum for
      # `Ci::Pipeline`.
      def self.sources
        {
          unknown: nil,
          push: 1,
          web: 2,
          trigger: 3,
          schedule: 4,
          api: 5,
          external: 6,
          pipeline: 7,
          chat: 8,
          webide: 9,
          merge_request_event: 10,
          external_pull_request_event: 11,
          parent_pipeline: 12,
          ondemand_dast_scan: 13
        }
      end

      # Dangling sources are those events that generate pipelines for which
      # we don't want to directly affect the ref CI status.
      # - when a webide pipeline fails it does not change the ref CI status to failed
      # - when a child pipeline (from parent_pipeline source) fails it affects its
      #   parent pipeline. It's up to the parent to affect the ref CI status
      # - when an ondemand_dast_scan pipeline runs it is for testing purpose and should
      #   not affect the ref CI status.
      def self.dangling_sources
        sources.slice(:webide, :parent_pipeline, :ondemand_dast_scan)
      end

      # CI sources are those pipeline events that affect the CI status of the ref
      # they run for. By definition it excludes dangling pipelines.
      def self.ci_sources
        sources.except(*dangling_sources.keys)
      end

      def self.ci_branch_sources
        ci_sources.except(:merge_request_event)
      end

      def self.ci_and_parent_sources
        ci_sources.merge(sources.slice(:parent_pipeline))
      end

      # Returns the `Hash` to use for creating the `config_sources` enum for
      # `Ci::Pipeline`.
      def self.config_sources
        {
          unknown_source: nil,
          repository_source: 1,
          auto_devops_source: 2,
          webide_source: 3,
          remote_source: 4,
          external_project_source: 5,
          bridge_source: 6,
          parameter_source: 7,
          compliance_source: 8
        }
      end
    end
  end
end