.gitlab-ci.yml 5.1 KB
Newer Older
J
James Lopez 已提交
1
image: "ruby:2.1"
2 3 4 5 6

services:
  - mysql:latest
  - redis:latest

7
cache:
8
  key: "ruby21"
9 10 11
  paths:
  - vendor

12 13
variables:
  MYSQL_ALLOW_EMPTY_PASSWORD: "1"
K
Kamil Trzcinski 已提交
14 15
  # retry tests only in CI environment
  RSPEC_RETRY_RETRY_COUNT: "3"
K
Kamil Trzcinski 已提交
16 17
  RAILS_ENV: "test"
  SIMPLECOV: "true"
K
Kamil Trzcinski 已提交
18
  USE_DB: "true"
19

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

K
Kamil Trzcinski 已提交
28
stages:
K
Kamil Trzcinski 已提交
29
- prepare
K
Kamil Trzcinski 已提交
30
- test
31
- post-test
K
Kamil Trzcinski 已提交
32
- notifications
33

K
Kamil Trzcinski 已提交
34
prepare:
K
Kamil Trzcinski 已提交
35
  stage: prepare
K
Kamil Trzcinski 已提交
36 37
  variables:
    USE_DB: "false"
K
Kamil Trzcinski 已提交
38
  script:
K
WIP  
Kamil Trzcinski 已提交
39
    - bundle exec rake assets:precompile
40
    - mkdir -p knapsack/
K
Kamil Trzcinski 已提交
41 42
    - echo "{}" > knapsack/rspec_report.json
    - echo "{}" > knapsack/spinach_report.json
K
Kamil Trzcinski 已提交
43 44
  artifacts:
    paths:
K
Kamil Trzcinski 已提交
45
    - public/assets/
K
Kamil Trzcinski 已提交
46
    - knapsack/
K
Kamil Trzcinski 已提交
47

K
Kamil Trzcinski 已提交
48
.knapsack: &knapsack
49 50
  stage: test
  script:
K
Kamil Trzcinski 已提交
51 52 53
    - JOB_NAME=( $CI_BUILD_NAME )
    - export CI_NODE_INDEX=${JOB_NAME[1]}
    - export CI_NODE_TOTAL=${JOB_NAME[2]}
K
Kamil Trzcinski 已提交
54
    - export KNAPSACK_REPORT_PATH=knapsack/${JOB_NAME}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
K
Kamil Trzcinski 已提交
55
    - export KNAPSACK_GENERATE_REPORT=true
K
Kamil Trzcinski 已提交
56 57 58 59 60
    - cp knapsack/${JOB_NAME}_report.json ${KNAPSACK_REPORT_PATH}
    - knapsack ${JOB_NAME[0]}
  artifacts:
    paths:
    - knapsack/
61

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
post-tests:
  stage: post-test
  variables:
    USE_DB: "false"
  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
  cache:
    key: "knapsack"
    paths:
    - knapsack/
  artifacts:
    paths:
    - knapsack/

K
Kamil Trzcinski 已提交
78
.exec: &exec
79 80
  stage: test
  script:
K
Kamil Trzcinski 已提交
81 82
    - bundle exec $CI_BUILD_NAME

K
Kamil Trzcinski 已提交
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
rspec 0 20: *knapsack
rspec 1 20: *knapsack
rspec 2 20: *knapsack
rspec 3 20: *knapsack
rspec 4 20: *knapsack
rspec 5 20: *knapsack
rspec 6 20: *knapsack
rspec 7 20: *knapsack
rspec 8 20: *knapsack
rspec 9 20: *knapsack
rspec 10 20: *knapsack
rspec 11 20: *knapsack
rspec 12 20: *knapsack
rspec 13 20: *knapsack
rspec 14 20: *knapsack
rspec 15 20: *knapsack
rspec 16 20: *knapsack
rspec 17 20: *knapsack
rspec 18 20: *knapsack
rspec 19 20: *knapsack
K
Kamil Trzcinski 已提交
103

K
Kamil Trzcinski 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
spinach 0 20: *knapsack
spinach 1 20: *knapsack
spinach 2 20: *knapsack
spinach 3 20: *knapsack
spinach 4 20: *knapsack
spinach 5 20: *knapsack
spinach 6 20: *knapsack
spinach 7 20: *knapsack
spinach 8 20: *knapsack
spinach 9 20: *knapsack
spinach 10 20: *knapsack
spinach 11 20: *knapsack
spinach 12 20: *knapsack
spinach 13 20: *knapsack
spinach 14 20: *knapsack
spinach 15 20: *knapsack
spinach 16 20: *knapsack
spinach 17 20: *knapsack
spinach 18 20: *knapsack
spinach 19 20: *knapsack
K
Kamil Trzcinski 已提交
124 125 126 127 128 129 130 131

teaspoon: *exec
rubocop: *exec
rake scss_lint: *exec
rake brakeman: *exec
rake flog: *exec
rake flay: *exec
rake db:migrate:reset: *exec
132 133 134

bundler:audit:
  stage: test
135 136
  only:
    - master
137
  script:
138
    - "bundle exec bundle-audit check --update --ignore OSVDB-115941"
139 140 141 142 143 144 145

# Ruby 2.2 jobs

spec:feature:ruby22:
  stage: test
  image: ruby:2.2
  only:
146
    - master
147
  script:
K
Kamil Trzcinski 已提交
148 149
    - bundle exec rake assets:precompile 2>/dev/null
    - bundle exec rake spec:feature
150 151 152 153 154 155 156 157 158 159 160
  cache:
    key: "ruby22"
    paths:
    - vendor

spec:api:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
161
    - bundle exec rake spec:api
162 163 164 165 166 167 168 169 170 171 172
  cache:
    key: "ruby22"
    paths:
    - vendor

spec:models:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
173
    - bundle exec rake spec:models
174 175 176 177 178 179 180 181 182 183 184
  cache:
    key: "ruby22"
    paths:
    - vendor

spec:lib:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
185
    - bundle exec rake spec:lib
186 187 188 189 190 191 192 193 194 195 196
  cache:
    key: "ruby22"
    paths:
    - vendor

spec:services:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
197
    - bundle exec rake spec:services
198 199 200 201 202 203 204 205 206 207 208
  cache:
    key: "ruby22"
    paths:
    - vendor

spec:other:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
209
    - bundle exec rake spec:other
210 211 212 213 214 215 216 217 218 219 220
  cache:
    key: "ruby22"
    paths:
    - vendor

spinach:project:half:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
221 222
    - bundle exec rake assets:precompile 2>/dev/null
    - bundle exec rake spinach:project:half
223 224 225 226 227 228 229 230 231 232 233
  cache:
    key: "ruby22"
    paths:
    - vendor

spinach:project:rest:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
234 235
    - bundle exec rake assets:precompile 2>/dev/null
    - bundle exec rake spinach:project:rest
236 237 238 239 240 241 242 243 244 245 246
  cache:
    key: "ruby22"
    paths:
    - vendor

spinach:other:ruby22:
  stage: test
  image: ruby:2.2
  only:
  - master
  script:
K
Kamil Trzcinski 已提交
247 248
    - bundle exec rake assets:precompile 2>/dev/null
    - bundle exec rake spinach:other
249 250 251 252
  cache:
    key: "ruby22"
    paths:
    - vendor
253 254 255 256

notify:slack:
  stage: notifications
  script:
J
James Lopez 已提交
257
    - ./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>"
258 259 260 261 262
  when: on_failure
  only:
    - master@gitlab-org/gitlab-ce
    - tags@gitlab-org/gitlab-ce
    - master@gitlab-org/gitlab-ee
263
    - tags@gitlab-org/gitlab-ee