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

.gitlab-ci.yml 4.76 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"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
14 15
  # retry tests only in CI environment
  RSPEC_RETRY_RETRY_COUNT: "3"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
16 17
  RAILS_ENV: "test"
  SIMPLECOV: "true"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
18
  USE_DB: "true"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
19
  USE_BUNDLE_INSTALL: "true"
20

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

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

34
# Prepare and merge knapsack tests
Kamil Trzcinski's avatar
Kamil Trzcinski committed
35 36

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

Kamil Trzcinski's avatar
Kamil Trzcinski committed
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

65 66 67
# Execute all testing suites

.knapsack: &knapsack
68 69
  stage: test
  script:
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}
Kamil Trzcinski's avatar
Kamil Trzcinski committed
77
    - bundle exec gem install bundler
78 79 80 81
    - knapsack ${JOB_NAME[0]}
  artifacts:
    paths:
    - knapsack/
Kamil Trzcinski's avatar
Kamil Trzcinski committed
82

Kamil Trzcinski's avatar
Kamil Trzcinski committed
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
Kamil Trzcinski's avatar
Kamil Trzcinski committed
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
Kamil Trzcinski's avatar
Kamil Trzcinski committed
114

115
# Execute all testing suites against Ruby 2.2
116

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

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

161
.exec: &exec
162 163
  stage: test
  script:
164
    - bundle exec $CI_BUILD_NAME
165

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

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

182
# Notify slack in the end
183 184

notify:slack:
185
  stage: post-test
186
  script:
James Lopez's avatar
James Lopez committed
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