gooddata/gooddata-ruby

View on GitHub
.travis.yml

Summary

Maintainability
Test Coverage
language: ruby
cache: bundler
stages:
- name: before-merge
  if: type IN (push, pull_request)
- name: after-merge
  if: type IN (api, cron)
- name: platform-cleanup
  if: type IN (cron)
- name: gem-release
  if: branch = master AND type = push
- name: gem-smoke-test
  if: branch = master AND type = push

git:
  depth: false # this is needed for pronto

jobs:
  allow_failures:
    - rvm: jruby-9.1.14
  include:
  # BEFORE MERGE
  - name: pronto code review
    stage: before-merge
    script: |
      git remote add upstream https://github.com/gooddata/gooddata-ruby.git
      git fetch upstream develop
      failed=0
      PRONTO_FLAY_MASS_THRESHOLD=50 bundle exec pronto run -c upstream/develop --exit-code lib || failed=1
      PRONTO_FLAY_MASS_THRESHOLD=100 bundle exec pronto run -c upstream/develop --exit-code spec || failed=1
      if [ "$failed" -ne 0 ] ; then
          exit 1
      fi

    #  UNIT TESTS ON LINUX IN ALL SUPPORTED RUBY VERSIONS
  - name: unit tests 2.3
    stage: before-merge
    script: bundle exec rake test:unit
    rvm: 2.3

  - name: unit tests 2.4
    stage: before-merge
    script: bundle exec rake test:unit
    rvm: 2.4

  - name: unit tests 2.5
    stage: before-merge
    script: bundle exec rake test:unit
    rvm: 2.5

  - name: unit tests 2.6
    stage: before-merge
    script: bundle exec rake test:unit
    rvm: 2.6

  - name: unit tests jruby-9.1.14
    stage: before-merge
    script: bundle exec rake test:unit
    rvm: jruby-9.1.14
    jdk: openjdk8

  - name: sdk integration (vcr) tests - base
    stage: before-merge
    script: bundle exec rake test:sdk
    env: VCR_RECORD_MODE=none
    rvm: 2.3

  - name: sdk integration (vcr) tests - project
    stage: before-merge
    script: bundle exec rake test:project
    env: VCR_RECORD_MODE=none
    rvm: 2.3

  - name: lcm integration (vcr) tests - e2e
    stage: before-merge
    script: bundle exec rspec spec/lcm/integration/spec/e2e/lcm_end_to_end_spec.rb
    env:
    - VCR_RECORD_MODE=none
    rvm: 2.3

  #  AFTER MERGE
  #  staging 1
  - &lcm-integration-e2e-tests
    name: staging1 - lcm integration-e2e tests
    stage: after-merge
    script: |
      bundle exec rake -f lcm.rake docker:build
      bundle exec rake -f lcm.rake docker:bundle
      bundle exec rake -f lcm.rake test:docker:integration-e2e
    env:
    - VCR_ON=false
    - GD_ENV=staging
    - GD_MAX_RETRY=2
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &lcm-integration-release-tests
    name: staging1 - lcm integration-release tests
    stage: after-merge
    script: |
      bundle exec rake -f lcm.rake docker:build
      bundle exec rake -f lcm.rake docker:bundle
      bundle exec rake -f lcm.rake test:docker:integration-release
    env:
    - VCR_ON=false
    - GD_ENV=staging
    - GD_MAX_RETRY=2
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &lcm-integration-others-tests
    name: staging1 - lcm integration-others tests
    stage: after-merge
    script: |
      bundle exec rake -f lcm.rake docker:build
      bundle exec rake -f lcm.rake docker:bundle
      bundle exec rake -f lcm.rake test:docker:integration-others
    env:
    - VCR_ON=false
    - GD_ENV=staging
    - GD_MAX_RETRY=2
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &lcm-slow-tests
    name: staging1 - lcm slow tests
    stage: after-merge
    script:
      - sudo keytool -importcert -alias gooddata-2008 -file "./data/2008.crt" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - sudo keytool -importcert -alias gooddata-int -file "./data/new_ca.cer" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - sudo keytool -importcert -alias gooddata-prod -file "data/new_prodgdc_ca.crt" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - bundle exec rake -f lcm.rake test:slow
    env:
    - VCR_ON=false
    - GD_ENV=staging
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &userprov-tests
    name: staging1 - user provisioning tests
    stage: after-merge
    script: |
      bundle exec rake -f lcm.rake docker:build
      bundle exec rake -f lcm.rake docker:bundle
      bundle exec rake -f lcm.rake test:docker:userprov
    env:
    - VCR_ON=false
    - GD_ENV=staging
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &bricks-smoke-tests
    name: staging1 - bricks smoke tests
    stage: after-merge
    script:
      - sudo keytool -importcert -alias gooddata-2008 -file "./data/2008.crt" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - sudo keytool -importcert -alias gooddata-int -file "./data/new_ca.cer" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - sudo keytool -importcert -alias gooddata-prod -file "data/new_prodgdc_ca.crt" -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
      - bundle exec rake -f lcm.rake test:smoke
    env:
    - GD_ENV=staging
    - VCR_ON=false
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &sdk-integration-tests
    name: staging1 - sdk integration tests - base
    stage: after-merge
    script: bundle exec rake test:sdk
    env:
    - VCR_ON=false
    - GD_ENV=staging
    rvm: jruby-9.1.14
    jdk: openjdk8

  - &sdk-integration-tests-project
    name: staging1 - sdk integration tests - project
    stage: after-merge
    script: bundle exec rake test:project
    env:
    - VCR_ON=false
    - GD_ENV=staging
    rvm: jruby-9.1.14
    jdk: openjdk8

  # staging 2
  - <<: *lcm-integration-e2e-tests
    name: staging2 - lcm integration-e2e tests
    env:
    - GD_ENV=testing
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-integration-release-tests
    name: staging2 - lcm integration-release tests
    env:
    - GD_ENV=testing
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-integration-others-tests
    name: staging2 - lcm integration-others tests
    env:
    - GD_ENV=testing
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-slow-tests
    name: staging2 - lcm slow tests
    env:
    - GD_ENV=testing
    - VCR_ON=false

  - <<: *userprov-tests
    name: staging2 - lcm user provisioning tests
    env:
    - GD_ENV=testing
    - VCR_ON=false

  - <<: *bricks-smoke-tests
    name: staging2 - bricks smoke tests
    env:
    - GD_ENV=testing
    - VCR_ON=false

  - <<: *sdk-integration-tests
    name: staging2 - sdk integration tests - base
    env:
    - GD_ENV=testing
    - VCR_ON=false

  - <<: *sdk-integration-tests-project
    name: staging2 - sdk integration tests - project
    env:
    - GD_ENV=testing
    - VCR_ON=false

  # staging 3
  - <<: *lcm-integration-e2e-tests
    name: staging3 - lcm integration-e2e tests
    env:
    - GD_ENV=development
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-integration-release-tests
    name: staging3 - lcm integration-release tests
    env:
    - GD_ENV=development
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-integration-others-tests
    name: staging3 - lcm integration-others tests
    env:
    - GD_ENV=development
    - VCR_ON=false
    - GD_MAX_RETRY=2

  - <<: *lcm-slow-tests
    name: staging3 - lcm slow tests
    env:
    - GD_ENV=development
    - VCR_ON=false

  - <<: *userprov-tests
    name: staging3 - lcm user provisioning tests
    env:
    - GD_ENV=development
    - VCR_ON=false


  - <<: *bricks-smoke-tests
    name: staging3 - bricks smoke tests
    env:
    - GD_ENV=development
    - VCR_ON=false

  - <<: *sdk-integration-tests
    name: staging3 - sdk integration tests - base
    env:
    - GD_ENV=development
    - VCR_ON=false

  - <<: *sdk-integration-tests-project
    name: staging3 - sdk integration tests - project
    env:
    - GD_ENV=development
    - VCR_ON=false

  # cleanups
  - &cleanup
    stage: after-merge
    name: staging1 - test environment clean-up
    script: travis_wait 30 bundle exec ruby bin/test_projects_cleanup.rb -f
    env:
    - GD_ENV=staging
    - GD_MAX_RETRY=2

  - <<: *cleanup
    name: staging2 - test environment clean-up
    env:
    - GD_ENV=testing
    - GD_MAX_RETRY=2

  - <<: *cleanup
    name: staging3 - test environment clean-up
    env:
    - GD_ENV=development
    - GD_MAX_RETRY=2

  # AFTER MERGE UNIT TESTS ON ALTERNATIVE PLATFORM

  - stage: gem-release
    name: deploy MRI gem
    rvm: 2.3
    deploy:
      provider: rubygems
      gem: gooddata
      api_key: $RUBYGEMS_API_KEY
  - stage: gem-release
    name: deploy JRuby gem
    rvm: jruby-9.1.14
    jdk: openjdk8
    script: |
      echo -e "---\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
      chmod 0600 ~/.gem/credentials
      bundle exec rake gem:release
  - &gem-smoke-test
    stage: gem-smoke-test
    name: smoke test MRI gem
    rvm: 2.3
    script: |
      gem install gooddata
      ruby -e "require 'gooddata';GoodData.version"
  - <<: *gem-smoke-test
    name: smoke test JRuby gem
    rvm: jruby-9.1.14
    jdk: openjdk8

notifications:
  email:
    recipients:
      secure: AMTssALc5Qt4ApAoI7gCmqP3d7AL0dGyZ+DsxYYlas2T0tjXdOH97XlY2jRzFSxZU1P3JKJkjHLmxu0m908Q28SQVcdBlK29Ofyl2pwGnniExY4wdQJLmqNW9eKa2dmSMUsntR6DryNThKVn9mqUACdXgpT8X2CnQl/DWMGpo80=
    on_success: always
    on_failure: always