Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.93 KiB
Newer Older
  • Learn to ignore specific revisions
  • James Lopez's avatar
    James Lopez committed
    image: "ruby:2.1"
    
    
    services:
      - mysql:latest
      - redis:latest
    
    
      key: "ruby21"
    
    variables:
      MYSQL_ALLOW_EMPTY_PASSWORD: "1"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      # retry tests only in CI environment
      RSPEC_RETRY_RETRY_COUNT: "3"
    
    Dmitriy Zaporozhets's avatar
    Dmitriy Zaporozhets committed
    before_script:
    
      - source ./scripts/prepare_build.sh
    
    Valery Sizov's avatar
    Valery Sizov committed
      - ruby -v
      - which ruby
    
      - retry gem install bundler --no-ri --no-rdoc
    
    Valery Sizov's avatar
    Valery Sizov committed
      - cp config/gitlab.yml.example config/gitlab.yml
      - touch log/application.log
      - touch log/test.log
    
      - retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"
    
      - RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load db:migrate
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    .rspec_tests: &rspec_tests
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      variables:
        RAILS_ENV: "test"
        SIMPLECOV: "true"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - touch knapsack_rspec_report.json
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - JOB_NAME=( $CI_BUILD_NAME )
        - export CI_NODE_INDEX=${JOB_NAME[1]}
        - export CI_NODE_TOTAL=${JOB_NAME[2]}
        - bundle exec rake assets:precompile 2>/dev/null
        - bundle exec rake knapsack:rspec
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    .spinach_tests: &spinach_tests
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      variables:
        RAILS_ENV: "test"
        SIMPLECOV: "true"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - touch knapsack_cucumber_report.json
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - JOB_NAME=( $CI_BUILD_NAME )
        - export CI_NODE_INDEX=${JOB_NAME[1]}
        - export CI_NODE_TOTAL=${JOB_NAME[2]}
        - bundle exec rake assets:precompile 2>/dev/null
        - bundle exec rake knapsack:cucumber
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    stages:
    - test
    - notifications
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    spec 0 10: *rspec_tests
    spec 1 10: *rspec_tests
    spec 2 10: *rspec_tests
    spec 3 10: *rspec_tests
    spec 4 10: *rspec_tests
    spec 5 10: *rspec_tests
    spec 6 10: *rspec_tests
    spec 7 10: *rspec_tests
    spec 8 10: *rspec_tests
    spec 9 10: *rspec_tests
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    spinach 0 10: *spinach_tests
    spinach 1 10: *spinach_tests
    spinach 2 10: *spinach_tests
    spinach 3 10: *spinach_tests
    spinach 4 10: *spinach_tests
    spinach 5 10: *spinach_tests
    spinach 6 10: *spinach_tests
    spinach 7 10: *spinach_tests
    spinach 8 10: *spinach_tests
    spinach 9 10: *spinach_tests
    
    
    teaspoon:
      stage: test
      script:
        - RAILS_ENV=test bundle exec teaspoon
    
    
      script:
        - bundle exec rubocop
    
    
    scss-lint:
      stage: test
      script:
        - bundle exec rake scss_lint
    
    
    brakeman:
      stage: test
      script:
        - bundle exec rake brakeman
    
    flog:
      stage: test
      script:
        - bundle exec rake flog
    
    flay:
      stage: test
      script:
        - bundle exec rake flay
    
    bundler:audit:
      stage: test
    
        - "bundle exec bundle-audit check --update --ignore OSVDB-115941"
    
    db-migrate-reset:
      stage: test
      script:
        - RAILS_ENV=test bundle exec rake db:migrate:reset
    
    
    # Ruby 2.2 jobs
    
    spec:feature:ruby22:
      stage: test
      image: ruby:2.2
      only:
    
      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
    
    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
    
    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
    
    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
    
    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
    
    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
    
    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
    
    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
    
    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
    
    James Lopez's avatar
    James Lopez committed
        - ./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