GitLab steht Mittwoch, den 23. September, zwischen 10:00 und 12:00 Uhr aufgrund von Wartungsarbeiten nicht zur Verfügung.

.gitlab-ci.yml 6.65 KB
Newer Older
1
image: "ruby:2.1"
2

3
cache:
4
  key: "ruby21"
5
  paths:
6 7
  - vendor/apt
  - vendor/ruby
8

9 10
variables:
  MYSQL_ALLOW_EMPTY_PASSWORD: "1"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
11 12
  # retry tests only in CI environment
  RSPEC_RETRY_RETRY_COUNT: "3"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
13 14
  RAILS_ENV: "test"
  SIMPLECOV: "true"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
15
  USE_DB: "true"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
16
  USE_BUNDLE_INSTALL: "true"
17
  GIT_DEPTH: "20"
18

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
19
before_script:
20
  - source ./scripts/prepare_build.sh
Valery Sizov's avatar
Valery Sizov committed
21
  - cp config/gitlab.yml.example config/gitlab.yml
Kamil Trzcinski's avatar
Test  
Kamil Trzcinski committed
22
  - bundle --version
Kamil Trzcinski's avatar
Kamil Trzcinski committed
23
  - '[ "$USE_BUNDLE_INSTALL" != "true" ] || retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"'
Kamil Trzcinski's avatar
Kamil Trzcinski committed
24
  - retry gem install knapsack
Kamil Trzcinski's avatar
Kamil Trzcinski committed
25
  - '[ "$USE_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate'
26

Kamil Trzcinski's avatar
Kamil Trzcinski committed
27
stages:
Kamil Trzcinski's avatar
Kamil Trzcinski committed
28
- prepare
Kamil Trzcinski's avatar
Kamil Trzcinski committed
29
- test
30
- post-test
31

32
# Prepare and merge knapsack tests
Kamil Trzcinski's avatar
Kamil Trzcinski committed
33
.knapsack-state: &knapsack-state
34
  services: []
Kamil Trzcinski's avatar
Kamil Trzcinski committed
35 36 37 38 39 40 41 42
  variables:
    USE_DB: "false"
    USE_BUNDLE_INSTALL: "false"
  cache:
    key: "knapsack"
    paths:
    - knapsack/
  artifacts:
43
    expire_in: 31d
Kamil Trzcinski's avatar
Kamil Trzcinski committed
44
    paths:
Kamil Trzcinski's avatar
Kamil Trzcinski committed
45
    - knapsack/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
46

Kamil Trzcinski's avatar
Kamil Trzcinski committed
47
knapsack:
Kamil Trzcinski's avatar
Kamil Trzcinski committed
48
  <<: *knapsack-state
Kamil Trzcinski's avatar
Kamil Trzcinski committed
49 50 51 52 53 54 55
  stage: prepare
  script:
    - mkdir -p knapsack/
    - '[[ -f knapsack/rspec_report.json ]] || echo "{}" > knapsack/rspec_report.json'
    - '[[ -f knapsack/spinach_report.json ]] || echo "{}" > knapsack/spinach_report.json'

update-knapsack:
Kamil Trzcinski's avatar
Kamil Trzcinski committed
56
  <<: *knapsack-state
57 58 59 60 61
  stage: post-test
  script:
    - scripts/merge-reports knapsack/rspec_report.json knapsack/rspec_node_*.json
    - scripts/merge-reports knapsack/spinach_report.json knapsack/spinach_node_*.json
    - rm -f knapsack/*_node_*.json
62 63
  only:
    - master
64

Kamil Trzcinski's avatar
Kamil Trzcinski committed
65 66
update-coverage:
  stage: post-test
Kamil Trzcinski's avatar
Kamil Trzcinski committed
67 68 69 70
  services: []
  variables:
    USE_DB: "false"
    USE_BUNDLE_INSTALL: "true"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
71
  script:
72
    - bundle exec scripts/merge-simplecov
Kamil Trzcinski's avatar
Kamil Trzcinski committed
73
  artifacts:
74
    expire_in: 31d
Kamil Trzcinski's avatar
Kamil Trzcinski committed
75 76 77
    paths:
    - coverage/

78 79
# Execute all testing suites

80
.use-db: &use-db
81 82 83
  services:
    - mysql:latest
    - redis:alpine
84

Kamil Trzcinski's avatar
Kamil Trzcinski committed
85
.rspec-knapsack: &rspec-knapsack
86
  stage: test
87
  <<: *use-db
88
  script:
89 90 91 92
    - bundle exec rake assets:precompile 2>/dev/null
    - JOB_NAME=( $CI_BUILD_NAME )
    - export CI_NODE_INDEX=${JOB_NAME[1]}
    - export CI_NODE_TOTAL=${JOB_NAME[2]}
Kamil Trzcinski's avatar
Kamil Trzcinski committed
93
    - export KNAPSACK_REPORT_PATH=knapsack/rspec_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
94
    - export KNAPSACK_GENERATE_REPORT=true
Kamil Trzcinski's avatar
Kamil Trzcinski committed
95 96
    - cp knapsack/rspec_report.json ${KNAPSACK_REPORT_PATH}
    - knapsack rspec
97
  artifacts:
98
    expire_in: 31d
99 100
    paths:
    - knapsack/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
101
    - coverage/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
102

Kamil Trzcinski's avatar
Kamil Trzcinski committed
103
.spinach-knapsack: &spinach-knapsack
Kamil Trzcinski's avatar
Kamil Trzcinski committed
104
  stage: test
105
  <<: *use-db
Kamil Trzcinski's avatar
Kamil Trzcinski committed
106 107 108 109 110 111 112 113
  script:
    - bundle exec rake assets:precompile 2>/dev/null
    - JOB_NAME=( $CI_BUILD_NAME )
    - export CI_NODE_INDEX=${JOB_NAME[1]}
    - export CI_NODE_TOTAL=${JOB_NAME[2]}
    - export KNAPSACK_REPORT_PATH=knapsack/spinach_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
    - export KNAPSACK_GENERATE_REPORT=true
    - cp knapsack/spinach_report.json ${KNAPSACK_REPORT_PATH}
114
    - knapsack spinach "-r rerun" || retry '[ ! -e tmp/spinach-rerun.txt ] || bundle exec spinach -r rerun $(cat tmp/spinach-rerun.txt)'
Kamil Trzcinski's avatar
Kamil Trzcinski committed
115
  artifacts:
116
    expire_in: 31d
Kamil Trzcinski's avatar
Kamil Trzcinski committed
117 118
    paths:
    - knapsack/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
119
    - coverage/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151

rspec 0 20: *rspec-knapsack
rspec 1 20: *rspec-knapsack
rspec 2 20: *rspec-knapsack
rspec 3 20: *rspec-knapsack
rspec 4 20: *rspec-knapsack
rspec 5 20: *rspec-knapsack
rspec 6 20: *rspec-knapsack
rspec 7 20: *rspec-knapsack
rspec 8 20: *rspec-knapsack
rspec 9 20: *rspec-knapsack
rspec 10 20: *rspec-knapsack
rspec 11 20: *rspec-knapsack
rspec 12 20: *rspec-knapsack
rspec 13 20: *rspec-knapsack
rspec 14 20: *rspec-knapsack
rspec 15 20: *rspec-knapsack
rspec 16 20: *rspec-knapsack
rspec 17 20: *rspec-knapsack
rspec 18 20: *rspec-knapsack
rspec 19 20: *rspec-knapsack

spinach 0 10: *spinach-knapsack
spinach 1 10: *spinach-knapsack
spinach 2 10: *spinach-knapsack
spinach 3 10: *spinach-knapsack
spinach 4 10: *spinach-knapsack
spinach 5 10: *spinach-knapsack
spinach 6 10: *spinach-knapsack
spinach 7 10: *spinach-knapsack
spinach 8 10: *spinach-knapsack
spinach 9 10: *spinach-knapsack
Kamil Trzcinski's avatar
Kamil Trzcinski committed
152

connorshea's avatar
connorshea committed
153 154 155
# Execute all testing suites against Ruby 2.3
.ruby-23: &ruby-23
  image: "ruby:2.3"
156
  <<: *use-db
Connor Shea's avatar
Connor Shea committed
157 158
  only:
    - master
159 160 161 162 163
  cache:
    key: "ruby-23"
    paths:
      - vendor/apt
      - vendor/ruby
164

connorshea's avatar
connorshea committed
165
.rspec-knapsack-ruby23: &rspec-knapsack-ruby23
Kamil Trzcinski's avatar
Kamil Trzcinski committed
166
  <<: *rspec-knapsack
connorshea's avatar
connorshea committed
167
  <<: *ruby-23
Kamil Trzcinski's avatar
Kamil Trzcinski committed
168

connorshea's avatar
connorshea committed
169
.spinach-knapsack-ruby23: &spinach-knapsack-ruby23
Kamil Trzcinski's avatar
Kamil Trzcinski committed
170
  <<: *spinach-knapsack
connorshea's avatar
connorshea committed
171
  <<: *ruby-23
172

connorshea's avatar
connorshea committed
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
rspec 0 20 ruby23: *rspec-knapsack-ruby23
rspec 1 20 ruby23: *rspec-knapsack-ruby23
rspec 2 20 ruby23: *rspec-knapsack-ruby23
rspec 3 20 ruby23: *rspec-knapsack-ruby23
rspec 4 20 ruby23: *rspec-knapsack-ruby23
rspec 5 20 ruby23: *rspec-knapsack-ruby23
rspec 6 20 ruby23: *rspec-knapsack-ruby23
rspec 7 20 ruby23: *rspec-knapsack-ruby23
rspec 8 20 ruby23: *rspec-knapsack-ruby23
rspec 9 20 ruby23: *rspec-knapsack-ruby23
rspec 10 20 ruby23: *rspec-knapsack-ruby23
rspec 11 20 ruby23: *rspec-knapsack-ruby23
rspec 12 20 ruby23: *rspec-knapsack-ruby23
rspec 13 20 ruby23: *rspec-knapsack-ruby23
rspec 14 20 ruby23: *rspec-knapsack-ruby23
rspec 15 20 ruby23: *rspec-knapsack-ruby23
rspec 16 20 ruby23: *rspec-knapsack-ruby23
rspec 17 20 ruby23: *rspec-knapsack-ruby23
rspec 18 20 ruby23: *rspec-knapsack-ruby23
rspec 19 20 ruby23: *rspec-knapsack-ruby23

spinach 0 10 ruby23: *spinach-knapsack-ruby23
spinach 1 10 ruby23: *spinach-knapsack-ruby23
spinach 2 10 ruby23: *spinach-knapsack-ruby23
spinach 3 10 ruby23: *spinach-knapsack-ruby23
spinach 4 10 ruby23: *spinach-knapsack-ruby23
spinach 5 10 ruby23: *spinach-knapsack-ruby23
spinach 6 10 ruby23: *spinach-knapsack-ruby23
spinach 7 10 ruby23: *spinach-knapsack-ruby23
spinach 8 10 ruby23: *spinach-knapsack-ruby23
spinach 9 10 ruby23: *spinach-knapsack-ruby23
204 205

# Other generic tests
206

207
.static-analyses-variables: &static-analyses-variables
208 209 210 211
  variables:
    SIMPLECOV: "false"
    USE_DB: "false"
    USE_BUNDLE_INSTALL: "true"
212

213
.exec: &exec
214
  <<: *static-analyses-variables
215 216
  stage: test
  script:
217
    - bundle exec $CI_BUILD_NAME
218

219 220 221 222 223
rubocop: *exec
rake scss_lint: *exec
rake brakeman: *exec
rake flog: *exec
rake flay: *exec
Kamil Trzcinski's avatar
Kamil Trzcinski committed
224
license_finder: *exec
225
rake downtime_check: *exec
226

227 228
rake db:migrate:reset:
  stage: test
229
  <<: *use-db
230 231 232 233 234
  script:
    - rake db:migrate:reset

teaspoon:
  stage: test
235
  <<: *use-db
236 237 238
  script:
    - teaspoon

239
bundler:audit:
240
  stage: test
241
  <<: *static-analyses-variables
242
  only:
243
    - master
244
  script:
245
    - "bundle exec bundle-audit check --update --ignore OSVDB-115941"
246

247
# Notify slack in the end
248 249

notify:slack:
250
  stage: post-test
251
  script:
James Lopez's avatar
James Lopez committed
252
    - ./scripts/notify_slack.sh "#builds" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See <https://gitlab.com/gitlab-org/$(basename "$PWD")/commit/"$CI_BUILD_REF"/builds>"
253 254 255 256 257
  when: on_failure
  only:
    - master@gitlab-org/gitlab-ce
    - tags@gitlab-org/gitlab-ce
    - master@gitlab-org/gitlab-ee
258
    - tags@gitlab-org/gitlab-ee