.gitlab-ci.yml 3.87 KB
Newer Older
1
2
variables:
    DOCKER_HOST: "tcp://docker-dind.gitlab:2375"
3
    AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS: "--network host"
4
5
6
7
8
9
10
11
12
13
    POSTGRES_ENABLED: "false"
    CODE_QUALITY_DISABLED: "true"
    CONTAINER_SCANNING_DISABLED: "true"
    DAST_DISABLED: "true"
    DEPENDENCY_SCANNING_DISABLED: "true"
    LICENSE_MANAGEMENT_DISABLED: "true"
    PERFORMANCE_DISABLED: "true"
    SAST_DISABLED: "true"
    TEST_DISABLED: "true"

Dominik Hebeler's avatar
Dominik Hebeler committed
14
15
include:
  - template: Jobs/Build.gitlab-ci.yml
Dominik Hebeler's avatar
Dominik Hebeler committed
16
  - template: Jobs/Deploy.gitlab-ci.yml
Dominik Hebeler's avatar
Dominik Hebeler committed
17

18
19
stages:
  - prepare
Dominik Hebeler's avatar
Dominik Hebeler committed
20
  - build
Dominik Hebeler's avatar
Dominik Hebeler committed
21
22
23
24
25
  - deploy  # dummy stage to follow the template guidelines
  - review
  - dast
  - staging
  - canary
26
  - development
Dominik Hebeler's avatar
Dominik Hebeler committed
27
28
29
30
31
  - production
  - incremental rollout 10%
  - incremental rollout 25%
  - incremental rollout 50%
  - incremental rollout 100%
Dominik Hebeler's avatar
Dominik Hebeler committed
32
33
34
  - performance
  - cleanup

35

Dominik Hebeler's avatar
Dominik Hebeler committed
36
37
38
build:
  services:

39
# Prepares the secret files that we cannot or don't want to share with public
40
41
42
43
44
45
46
prepare_secrets:
  stage: prepare
  image: alpine:latest
  script: 
    - cp $ENVFILE .env
    - cp $SUMAS config/sumas.json
    - cp $SUMASEN config/sumasEn.json
Dominik Hebeler's avatar
Dominik Hebeler committed
47
48
49
50
51
52
    - cp $BLACKLISTURL config/blacklistUrl.txt
    - cp $BLACKLISTDOMAINS config/blacklistDomains.txt
    - cp $ADBLACKLISTURL config/adBlacklistUrl.txt
    - cp $ADBLACKLISTDOMAINS config/adBlacklistDomains.txt
    - cp $SPAM config/spam.txt
    - cp $USERSSEEDER database/seeds/UsersSeeder.php
53
    - cp database/useragents.sqlite.example database/useragents.sqlite
54
    - sed -i 's/^REDIS_PASSWORD=.*/REDIS_PASSWORD=null/g' .env
55
56
57
58
  artifacts:
    paths:
      - .env
      - config/sumas.json
Dominik Hebeler's avatar
Dominik Hebeler committed
59
60
61
62
63
64
65
      - config/sumasEn.json
      - config/blacklistUrl.txt
      - config/blacklistDomains.txt
      - config/adBlacklistUrl.txt
      - config/adBlacklistDomains.txt
      - config/spam.txt
      - database/seeds/UsersSeeder.php
66
      - database/useragents.sqlite
Dominik Hebeler's avatar
Dominik Hebeler committed
67
68
  only:
    - branches
69
70
71
72
73
74
75
76
77
78
79
80
81
    - tags

prepare_node:
  stage: prepare
  image: node:10
  before_script:
    - npm install
  script:
    - npm run prod
  artifacts:
    paths:
      - public/js/
      - public/css/
Dominik Hebeler's avatar
Dominik Hebeler committed
82
      - public/mix-manifest.json
83
84
85
86
87
88
89
90
91
  cache:
    # Cache per Branch
    key: "node-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules
  only:
    - branches
    - tags

Dominik Hebeler's avatar
Dominik Hebeler committed
92
93
94
95
96
97
98
99
100
101
102
prepare_composer:
  stage: prepare
  image: prooph/composer:7.3
  script:
    - composer install
  artifacts:
    paths:
      - vendor
  cache:
    key: "composer-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
    paths:
Dominik Hebeler's avatar
Dominik Hebeler committed
103
104
105
106
      - vendor

review:
  variables:
Dominik Hebeler's avatar
Dominik Hebeler committed
107
    HELM_UPGRADE_VALUES_FILE: .gitlab/review-apps-values.yaml
Dominik Hebeler's avatar
Dominik Hebeler committed
108
    ROLLOUT_RESOURCE_TYPE: deployment
109
110
111
112
113
114
115
  except:
    refs:
      - master
      - development
    variables:
      - $REVIEW_DISABLED

116
117
118
119
120
121
122
stop_review:
  except:
    refs:
      - master
      - development
    variables:
      - $REVIEW_DISABLED
123
124
125
126
127
128
129
130
131
132
133
134
135
136

.development: &development_template
  extends: .auto-deploy
  stage: development
  script:
    - auto-deploy check_kube_domain
    - auto-deploy download_chart
    - auto-deploy ensure_namespace
    - auto-deploy initialize_tiller
    - auto-deploy create_secret
    - auto-deploy deploy
    - auto-deploy delete canary
    - auto-deploy delete rollout
    - auto-deploy persist_environment_url
Dominik Hebeler's avatar
Dominik Hebeler committed
137
  variables:
138
    ADDITIONAL_HOSTS: "www.metager3.de"
Dominik Hebeler's avatar
Dominik Hebeler committed
139
140
    HELM_UPGRADE_VALUES_FILE: .gitlab/development-values.yaml
    ROLLOUT_RESOURCE_TYPE: deployment
141
142
  environment:
    name: development
Dominik Hebeler's avatar
Dominik Hebeler committed
143
    url: https://metager3.de
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  artifacts:
    paths: [environment_url.txt]

development:
  <<: *development_template
  only:
    refs:
      - development
    kubernetes: active
  except:
    variables:
      - $STAGING_ENABLED
      - $CANARY_ENABLED
      - $INCREMENTAL_ROLLOUT_ENABLED
      - $INCREMENTAL_ROLLOUT_MODE

Dominik Hebeler's avatar
Dominik Hebeler committed
160

Dominik Hebeler's avatar
Dominik Hebeler committed
161
162
production:
  variables:
163
    ADDITIONAL_HOSTS: "www.metager.de,metager.org,www.metager.org,metager.es,www.metager.es,klassik.metager.org"
Dominik Hebeler's avatar
Dominik Hebeler committed
164
    HELM_UPGRADE_VALUES_FILE: .gitlab/production-values.yaml
Dominik Hebeler's avatar
Dominik Hebeler committed
165
166
    ROLLOUT_RESOURCE_TYPE: deployment
  environment:
Dominik Hebeler's avatar
Dominik Hebeler committed
167
    url: https://metager.de