sudo: false # Ruby is the main language of the project. language: ruby bundler_args: --with development,ci # Cache third party dependencies for faster builds cache: apt: true bundler: true directories: # Cache NPM packages - lib/assets/node_modules - $HOME/.npm addons: chrome: stable apt: packages: - wkhtmltopdf # artifacts: # paths: "./log:./tmp/capybara" # bucket: roadmap-test-assets # s3_region: "eu-west-2" # debug: true services: - mysql - postgresql matrix: fast_finish: true include: rvm: # Use 2.4.1, since this is installed by default on Travis (1st Aug, 2018) - 2.4.4 # These env variables will set up a separate testing environment for each # combination of variables. env: # Run specs once with each database adapter we support - DB_ADAPTER=postgresql - DB_ADAPTER=mysql2 before_install: - nvm install 10.10.0 # sassc-rails causes a build failure when running assets:precompile in Travis # for the mysql2 env. Forcing the gem to install and build ffi locally fixes # the issue: https://github.com/sass/sassc-ruby/issues/146 #- gem install sassc -- --disable-march-tune-native install: - gem install bundler -v 1.17.2 # Install all gem and JS dependencies - bundle install --with development,ci --path=${BUNDLE_PATH:-vendor/bundle} - yarn install --ignore-optional # This is a temporary bug fix for Karma tests # See here: https://github.com/travis-ci/travis-ci/issues/9024 before_script: - "sudo chown root /opt/google/chrome/chrome-sandbox" - "sudo chmod 4755 /opt/google/chrome/chrome-sandbox" # Main test script script: - export WICKED_PDF_PATH=./vendor/bundle/ruby/2.4.0/bin/wkhtmltopdf # Copy over config files needed for setup, and create DB - bin/setup - bundle exec rake webpacker:compile - bundle exec rake assets:precompile # Default test stage: Run all specs, listing the 10 slowest. - bundle exec rspec spec --profile=10 # Run these stages in this order: stages: - security - test - hygiene # Define each stage (test is already defined automatically) jobs: include: # Run Brakeman check with warning level 2, except these two checks: - stage: security name: "Brakeman check" if: branch = master script: bundle exec brakeman -w2 --except=Redirect,CrossSiteScripting - stage: security name: "Bundle audit" if: branch = master script: bundle exec bundle-audit check --update --ignore CVE-2015-9284 - stage: test name: "Running JS through linter checks" script: yarn run lint - stage: test name: "Running JS through Karma tests" script: yarn run test - stage: hygiene name: "Check seeds are valid" script: bin/setup bundle exec rake db:drop bundle exec rake db:create bundle exec rake db:schema:load bundle exec rake db:seed