<commit_before>image: "ruby:2.2"

services:
  - mysql:latest
  - postgres:latest
  - redis:latest

variables:
  MYSQL_ALLOW_EMPTY_PASSWORD: "1"

before_script:
  - source ./scripts/prepare_build.sh
  - ruby -v
  - which ruby
  - 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[@]}"
  - 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
  tags:
    - ruby
    - mysql

spec:api:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api
  tags:
    - ruby
    - mysql

spec:models:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models
  tags:
    - ruby
    - mysql

spec:lib:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib
  tags:
    - ruby
    - mysql

spec:services:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services
  tags:
    - ruby
    - mysql

spec:benchmark:
  stage: test
  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:
    - ruby
    - mysql

spinach:project:half:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half
  tags:
    - ruby
    - mysql

spinach:project:rest:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest
  tags:
    - ruby
    - mysql

spinach:other:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other
  tags:
    - ruby
    - mysql

teaspoon:
  stage: test
  script:
    - RAILS_ENV=test bundle exec teaspoon
  tags:
    - ruby
    - mysql

rubocop:
  stage: test
  script:
    - bundle exec rubocop
  tags:
    - ruby
    - mysql

brakeman:
  stage: test
  script:
    - bundle exec rake brakeman
  tags:
    - ruby
    - mysql

flog:
  stage: test
  script:
    - bundle exec rake flog
  tags:
    - ruby
    - mysql

flay:
  stage: test
  script:
    - bundle exec rake flay
  tags:
    - ruby
    - mysql

bundler:audit:
  stage: test
  script:
    - "bundle exec bundle-audit update"
    - "bundle exec bundle-audit check"
  tags:
    - ruby
    - mysql
  allow_failure: true

## Ruby 2.1 jobs

spec:ruby21:
  stage: test
  image: ruby:2.1
  script:
    - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec
  tags:
    - ruby
    - mysql
  only:
  - master

spinach:ruby21:
  stage: test
  image: ruby:2.1
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach
  tags:
    - ruby
    - mysql
  only:
  - master

notify:slack:
  stage: notifications
  script:
    - bundle exec rake ci:slack
  when: on_failure
#  only:
#    - master
#    - tags<commit_msg>update gitlab ci config<commit_after>image: "ruby:2.2"

services:
  - mysql:latest
  - postgres:latest
  - redis:latest

variables:
  MYSQL_ALLOW_EMPTY_PASSWORD: "1"

before_script:
  - source ./scripts/prepare_build.sh
  - ruby -v
  - which ruby
  - 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[@]}"
  - 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
  tags:
    - ruby
    - mysql

spec:api:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api
  tags:
    - ruby
    - mysql

spec:models:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models
  tags:
    - ruby
    - mysql

spec:lib:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib
  tags:
    - ruby
    - mysql

spec:services:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services
  tags:
    - ruby
    - mysql

spec:benchmark:
  stage: test
  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:
    - ruby
    - mysql

spinach:project:half:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half
  tags:
    - ruby
    - mysql

spinach:project:rest:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest
  tags:
    - ruby
    - mysql

spinach:other:
  stage: test
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other
  tags:
    - ruby
    - mysql

teaspoon:
  stage: test
  script:
    - RAILS_ENV=test bundle exec teaspoon
  tags:
    - ruby
    - mysql

rubocop:
  stage: test
  script:
    - bundle exec rubocop
  tags:
    - ruby
    - mysql

brakeman:
  stage: test
  script:
    - bundle exec rake brakeman
  tags:
    - ruby
    - mysql

flog:
  stage: test
  script:
    - bundle exec rake flog
  tags:
    - ruby
    - mysql

flay:
  stage: test
  script:
    - bundle exec rake flay
  tags:
    - ruby
    - mysql

bundler:audit:
  stage: test
  script:
    - "bundle exec bundle-audit update"
    - "bundle exec bundle-audit check"
  tags:
    - ruby
    - mysql
  allow_failure: true

## Ruby 2.1 jobs

spec:ruby21:
  stage: test
  image: ruby:2.1
  script:
    - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec
  tags:
    - ruby
    - mysql
  only:
  - master

spinach:ruby21:
  stage: test
  image: ruby:2.1
  script:
    - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach
  tags:
    - ruby
    - mysql
  only:
  - master

notify:slack:
  stage: notifications
  script:
    - bundle exec rake ci:slack:error
  when: on_failure
#  only:
#    - master
#    - tags
{'fraction_non_alphanumeric': 0.09187770228536134, 'fraction_numerical': 0.004632489190858555, 'mean_word_length': 2.5124728850325377, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2302599', 'n_tokens_mistral': 2501, 'n_tokens_neox': 2406, 'n_words': 624}