summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml224
1 files changed, 208 insertions, 16 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c23a7a3bf0e..2ad63548d78 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,16 +1,37 @@
-# This file is generated by GitLab CI
+image: "ruby:2.1"
+
+services:
+ - mysql:latest
+ - postgres:latest
+ - redis:latest
+
+cache:
+ key: "ruby21"
+ paths:
+ - vendor
+
+variables:
+ MYSQL_ALLOW_EMPTY_PASSWORD: "1"
+ # retry tests only in CI environment
+ RSPEC_RETRY_RETRY_COUNT: "3"
+
before_script:
- - ./scripts/prepare_build.sh
+ - source ./scripts/prepare_build.sh
- ruby -v
- which ruby
- - gem install bundler --no-ri --no-rdoc
+ - retry gem install bundler --no-ri --no-rdoc
- cp config/gitlab.yml.example config/gitlab.yml
- touch log/application.log
- touch log/test.log
- - bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"
- - bundle exec rake db:reset db:create RAILS_ENV=test
+ - retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"
+ - RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load db:migrate
+
+stages:
+- test
+- notifications
spec:feature:
+ stage: test
script:
- RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:feature
@@ -19,6 +40,7 @@ spec:feature:
- mysql
spec:api:
+ stage: test
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api
tags:
@@ -26,6 +48,7 @@ spec:api:
- mysql
spec:models:
+ stage: test
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models
tags:
@@ -33,6 +56,7 @@ spec:models:
- mysql
spec:lib:
+ stage: test
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib
tags:
@@ -40,21 +64,15 @@ spec:lib:
- mysql
spec:services:
+ stage: test
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services
tags:
- ruby
- mysql
-spec:benchmark:
- script:
- - RAILS_ENV=test bundle exec rake spec:benchmark
- tags:
- - ruby
- - mysql
- allow_failure: true
-
spec:other:
+ stage: test
script:
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other
tags:
@@ -62,27 +80,34 @@ spec:other:
- mysql
spinach:project:half:
+ stage: test
script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half
tags:
- ruby
- mysql
spinach:project:rest:
+ stage: test
script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest
tags:
- ruby
- mysql
spinach:other:
+ stage: test
script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
- RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other
tags:
- ruby
- mysql
teaspoon:
+ stage: test
script:
- RAILS_ENV=test bundle exec teaspoon
tags:
@@ -90,13 +115,23 @@ teaspoon:
- mysql
rubocop:
+ stage: test
script:
- bundle exec rubocop
tags:
- ruby
- mysql
+scss-lint:
+ stage: test
+ script:
+ - bundle exec rake scss_lint
+ tags:
+ - ruby
+ allow_failure: true
+
brakeman:
+ stage: test
script:
- bundle exec rake brakeman
tags:
@@ -104,6 +139,7 @@ brakeman:
- mysql
flog:
+ stage: test
script:
- bundle exec rake flog
tags:
@@ -111,6 +147,7 @@ flog:
- mysql
flay:
+ stage: test
script:
- bundle exec rake flay
tags:
@@ -118,10 +155,165 @@ flay:
- mysql
bundler:audit:
- script:
+ stage: test
+ only:
+ - master
+ script:
- "bundle exec bundle-audit update"
- - "bundle exec bundle-audit check"
+ - "bundle exec bundle-audit check --ignore OSVDB-115941"
tags:
- ruby
- mysql
- allow_failure: true
+
+# Ruby 2.2 jobs
+
+spec:feature:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:feature
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spec:api:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spec:models:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spec:lib:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spec:services:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spec:other:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spinach:project:half:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spinach:project:rest:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+spinach:other:ruby22:
+ stage: test
+ image: ruby:2.2
+ only:
+ - master
+ script:
+ - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
+ - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other
+ cache:
+ key: "ruby22"
+ paths:
+ - vendor
+ tags:
+ - ruby
+ - mysql
+
+
+notify:slack:
+ stage: notifications
+ script:
+ - ./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>"
+ when: on_failure
+ only:
+ - master@gitlab-org/gitlab-ce
+ - tags@gitlab-org/gitlab-ce
+ - master@gitlab-org/gitlab-ee
+ - tags@gitlab-org/gitlab-ee