.gitlab-ci.yml 4.8 KB
Newer Older
1
image: "ruby:2.1"
2 3 4

services:
  - mysql:latest
5
  - redis:alpine
6

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"
K
Kamil Trzcinski 已提交
19
  USE_BUNDLE_INSTALL: "true"
20

D
Dmitriy Zaporozhets 已提交
21
before_script:
K
Kamil Trzcinski 已提交
22
  - source ./scripts/prepare_build.sh
V
Valery Sizov 已提交
23
  - cp config/gitlab.yml.example config/gitlab.yml
K
Test  
Kamil Trzcinski 已提交
24
  - bundle --version
K
Kamil Trzcinski 已提交
25
  - '[ "$USE_BUNDLE_INSTALL" != "true" ] || retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"'
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 and merge knapsack tests
K
Kamil Trzcinski 已提交
35 36

.knapsack_state: &knapsack_state
37
  services: []
K
Kamil Trzcinski 已提交
38 39 40 41 42 43 44 45 46
  variables:
    USE_DB: "false"
    USE_BUNDLE_INSTALL: "false"
  cache:
    key: "knapsack"
    paths:
    - knapsack/
  artifacts:
    paths:
K
Kamil Trzcinski 已提交
47
    - knapsack/
K
Kamil Trzcinski 已提交
48

K
Kamil Trzcinski 已提交
49 50 51 52 53 54 55 56 57 58
knapsack:
  <<: *knapsack_state
  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:
  <<: *knapsack_state
59 60 61 62 63 64
  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

K
Kamil Trzcinski 已提交
65 66 67
# Execute all testing suites

.knapsack: &knapsack
68 69
  stage: test
  script:
K
Kamil Trzcinski 已提交
70 71 72 73 74 75 76
    - 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/${JOB_NAME}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
    - export KNAPSACK_GENERATE_REPORT=true
    - cp knapsack/${JOB_NAME}_report.json ${KNAPSACK_REPORT_PATH}
K
Kamil Trzcinski 已提交
77
    - bundle exec gem install bundler
K
Kamil Trzcinski 已提交
78 79 80 81
    - knapsack ${JOB_NAME[0]}
  artifacts:
    paths:
    - knapsack/
K
Kamil Trzcinski 已提交
82

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

104 105 106 107 108 109 110 111 112 113
spinach 0 10: *knapsack
spinach 1 10: *knapsack
spinach 2 10: *knapsack
spinach 3 10: *knapsack
spinach 4 10: *knapsack
spinach 5 10: *knapsack
spinach 6 10: *knapsack
spinach 7 10: *knapsack
spinach 8 10: *knapsack
spinach 9 10: *knapsack
K
Kamil Trzcinski 已提交
114

K
Kamil Trzcinski 已提交
115
# Execute all testing suites against Ruby 2.2
116

K
Kamil Trzcinski 已提交
117 118
.knapsack-ruby22: &knapsack-ruby22
  <<: *knapsack
119
  image: "ruby:2.2"
120 121
  only:
    - master
122 123 124 125 126
  cache:
    key: "ruby22"
    paths:
    - vendor

K
Kamil Trzcinski 已提交
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 152 153 154 155 156 157 158 159
rspec 0 20 ruby22: *knapsack-ruby22
rspec 1 20 ruby22: *knapsack-ruby22
rspec 2 20 ruby22: *knapsack-ruby22
rspec 3 20 ruby22: *knapsack-ruby22
rspec 4 20 ruby22: *knapsack-ruby22
rspec 5 20 ruby22: *knapsack-ruby22
rspec 6 20 ruby22: *knapsack-ruby22
rspec 7 20 ruby22: *knapsack-ruby22
rspec 8 20 ruby22: *knapsack-ruby22
rspec 9 20 ruby22: *knapsack-ruby22
rspec 10 20 ruby22: *knapsack-ruby22
rspec 11 20 ruby22: *knapsack-ruby22
rspec 12 20 ruby22: *knapsack-ruby22
rspec 13 20 ruby22: *knapsack-ruby22
rspec 14 20 ruby22: *knapsack-ruby22
rspec 15 20 ruby22: *knapsack-ruby22
rspec 16 20 ruby22: *knapsack-ruby22
rspec 17 20 ruby22: *knapsack-ruby22
rspec 18 20 ruby22: *knapsack-ruby22
rspec 19 20 ruby22: *knapsack-ruby22

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

# Other generic tests
160

K
Kamil Trzcinski 已提交
161
.exec: &exec
162 163
  stage: test
  script:
K
Kamil Trzcinski 已提交
164
    - bundle exec $CI_BUILD_NAME
165

K
Kamil Trzcinski 已提交
166 167 168 169 170 171 172
teaspoon: *exec
rubocop: *exec
rake scss_lint: *exec
rake brakeman: *exec
rake flog: *exec
rake flay: *exec
rake db:migrate:reset: *exec
173
license-finder: *exec
174

K
Kamil Trzcinski 已提交
175
bundler:audit:
176 177
  stage: test
  only:
K
Kamil Trzcinski 已提交
178
    - master
179
  script:
K
Kamil Trzcinski 已提交
180
    - "bundle exec bundle-audit check --update --ignore OSVDB-115941"
181

K
Kamil Trzcinski 已提交
182
# Notify slack in the end
183 184

notify:slack:
K
Kamil Trzcinski 已提交
185
  stage: post-test
186
  script:
J
James Lopez 已提交
187
    - ./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>"
188 189 190 191 192
  when: on_failure
  only:
    - master@gitlab-org/gitlab-ce
    - tags@gitlab-org/gitlab-ce
    - master@gitlab-org/gitlab-ee
193
    - tags@gitlab-org/gitlab-ee