Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.02 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"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      RAILS_ENV: "test"
      SIMPLECOV: "true"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      USE_DB: "true"
    
    Dmitriy Zaporozhets's avatar
    Dmitriy Zaporozhets committed
    before_script:
    
      - source ./scripts/prepare_build.sh
    
    Valery Sizov's avatar
    Valery Sizov committed
      - cp config/gitlab.yml.example config/gitlab.yml
    
      - retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      - '[ "$USE_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate'
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    stages:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    - build
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    - test
    - notifications
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    prepare:
      stage: build
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      variables:
        USE_DB: "false"
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
      script:
        - bundle exec rake assets:precompile
        - echo "{}" > knapsack_rspec_report.json
        - echo "{}" > knapsack_cucumber_report.json
      artifacts:
        paths:
        - assets/public/
        - knapsack_rspec_report.json
        - knapsack_cucumber_report.json
    
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    .knapsack: &knapsack
    
    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 knapsack:${JOB_NAME[0]}
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
    .exec: &exec
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec $CI_BUILD_NAME
    
    rspec 0 10: *knapsack
    rspec 1 10: *knapsack
    rspec 2 10: *knapsack
    rspec 3 10: *knapsack
    rspec 4 10: *knapsack
    rspec 5 10: *knapsack
    rspec 6 10: *knapsack
    rspec 7 10: *knapsack
    rspec 8 10: *knapsack
    rspec 9 10: *knapsack
    
    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
    
    teaspoon: *exec
    rubocop: *exec
    rake scss_lint: *exec
    rake brakeman: *exec
    rake flog: *exec
    rake flay: *exec
    rake db:migrate:reset: *exec
    
    
    bundler:audit:
      stage: test
    
        - "bundle exec bundle-audit check --update --ignore OSVDB-115941"
    
    
    # Ruby 2.2 jobs
    
    spec:feature:ruby22:
      stage: test
      image: ruby:2.2
      only:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake assets:precompile 2>/dev/null
        - bundle exec rake spec:feature
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spec:api:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake spec:api
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spec:models:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake spec:models
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spec:lib:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake spec:lib
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spec:services:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake spec:services
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spec:other:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake spec:other
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spinach:project:half:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake assets:precompile 2>/dev/null
        - bundle exec rake spinach:project:half
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spinach:project:rest:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake assets:precompile 2>/dev/null
        - bundle exec rake spinach:project:rest
    
      cache:
        key: "ruby22"
        paths:
        - vendor
    
    spinach:other:ruby22:
      stage: test
      image: ruby:2.2
      only:
      - master
      script:
    
    Kamil Trzcinski's avatar
    Kamil Trzcinski committed
        - bundle exec rake assets:precompile 2>/dev/null
        - 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