version: 2 aliases: - &defaults docker: - image: circleci/ruby:2.5.1-stretch-node environment: &ruby_environment BUNDLE_APP_CONFIG: ./.bundle/ RAILS_ENV: test NODE_ENV: test DB_HOST: localhost DB_USER: root LOCAL_DOMAIN: cb6e6126.ngrok.io LOCAL_HTTPS: true PARALLEL_TEST_PROCESSORS: 2 ALLOW_NOPAM: true working_directory: ~/projects/mastodon/ - &attach_workspace attach_workspace: at: ~/projects/ - &persist_to_workspace persist_to_workspace: root: ~/projects/ paths: - ./mastodon/ - &install_steps steps: - checkout - *attach_workspace - restore_cache: keys: - v1-node-dependencies-{{ checksum "yarn.lock" }} - v1-node-dependencies- - run: yarn install --frozen-lockfile - save_cache: key: v1-node-dependencies-{{ checksum "yarn.lock" }} paths: - ./node_modules/ - *persist_to_workspace - &install_system_dependencies run: name: Install system dependencies command: | sudo apt-get update sudo apt-get install -y libicu-dev libidn11-dev libprotobuf-dev protobuf-compiler - &install_ruby_dependencies steps: - *attach_workspace - *install_system_dependencies - run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version - restore_cache: keys: - v1-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} - v1-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}- - v1-ruby-dependencies-- - run: bundle install --clean --jobs 16 --path ./vendor/bundle/ --retry 3 --with pam_authentication --without development production - save_cache: key: v1-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} paths: - ./vendor/bundle/ - run: name: Precompile Assets command: | if [ ! -d ./public/assets/ -o ! -d ./public/packs-test/ ]; then ./bin/rails assets:precompile fi - *persist_to_workspace - &test_steps steps: - *attach_workspace - *install_system_dependencies - run: sudo apt-get install -y ffmpeg - run: name: Prepare Tests command: ./bin/rails parallel:create parallel:load_schema parallel:prepare - run: name: Run Tests command: bundle exec parallel_test ./spec/ --group-by filesize --type rspec jobs: install: <<: *defaults <<: *install_steps install-ruby2.5: <<: *defaults <<: *install_ruby_dependencies install-ruby2.4: <<: *defaults docker: - image: circleci/ruby:2.4.4-stretch-node environment: *ruby_environment <<: *install_ruby_dependencies test-ruby2.5: <<: *defaults docker: - image: circleci/ruby:2.5.1-stretch-node environment: *ruby_environment - image: circleci/postgres:10.3-alpine environment: POSTGRES_USER: root - image: circleci/redis:4.0.9-alpine <<: *test_steps test-ruby2.4: <<: *defaults docker: - image: circleci/ruby:2.4.4-stretch-node environment: *ruby_environment - image: circleci/postgres:10.3-alpine environment: POSTGRES_USER: root - image: circleci/redis:4.0.9-alpine <<: *test_steps test-webui: <<: *defaults docker: - image: circleci/node:8.11.1-stretch steps: - *attach_workspace - run: yarn test:jest check-i18n: <<: *defaults steps: - *attach_workspace - run: bundle exec i18n-tasks check-normalized - run: bundle exec i18n-tasks unused workflows: version: 2 build-and-test: jobs: - install - install-ruby2.5: requires: - install - install-ruby2.4: requires: - install-ruby2.5 - test-ruby2.5: requires: - install-ruby2.5 - test-ruby2.4: requires: - install-ruby2.4 - test-webui: requires: - install - check-i18n: requires: - install-ruby2.5