Skip to content
Snippets Groups Projects
config.yml 5.96 KiB
Newer Older
  • Learn to ignore specific revisions
  • version: 2
    
    aliases:
      - &defaults
        docker:
    
          - image: circleci/ruby:2.6-buster-node
    
            environment: &ruby_environment
              BUNDLE_APP_CONFIG: ./.bundle/
              DB_HOST: localhost
              DB_USER: root
    
              RAILS_ENV: test
              PARALLEL_TEST_PROCESSORS: 4
    
              ALLOW_NOPAM: true
    
              DISABLE_SIMPLECOV: true
    
              PAM_ENABLED: true
              PAM_DEFAULT_SERVICE: pam_test
    
              PAM_CONTROLLED_SERVICE: pam_test_controlled
    
        working_directory: ~/projects/mastodon/
    
      - &attach_workspace
        attach_workspace:
          at: ~/projects/
    
      - &persist_to_workspace
        persist_to_workspace:
          root: ~/projects/
          paths:
            - ./mastodon/
    
    
      - &restore_ruby_dependencies
        restore_cache:
          keys:
            - v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }}
            - v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-
    
      - &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
    
              
              ## TODO: FIX THESE BUSTER DEPENDANCES
              sudo wget http://ftp.au.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u3_amd64.deb
              sudo dpkg -i libicu57_57.1-6+deb9u3_amd64.deb
              sudo wget http://ftp.au.debian.org/debian/pool/main/p/protobuf/libprotobuf10_3.0.0-9_amd64.deb
              sudo dpkg -i libprotobuf10_3.0.0-9_amd64.deb
    
    
      - &install_ruby_dependencies
          steps:
            - *attach_workspace
            - *install_system_dependencies
            - run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version
    
            - *restore_ruby_dependencies
    
            - run: bundle install --clean --jobs 16 --path ./vendor/bundle/ --retry 3 --with pam_authentication --without development production && bundle clean
    
            - save_cache:
    
                key: v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }}
    
                  - ./vendor/bundle/
    
            - persist_to_workspace:
                root: ~/projects/
                paths:
                    - ./mastodon/.bundle/
                    - ./mastodon/vendor/bundle/
    
    
      - &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: ./bin/retry bundle exec parallel_test ./spec/ --group-by filesize --type rspec
    
    
    jobs:
      install:
        <<: *defaults
        <<: *install_steps
    
    
        <<: *defaults
        <<: *install_ruby_dependencies
    
    
        <<: *defaults
        docker:
    
          - image: circleci/ruby:2.5-buster-node
    
            environment: *ruby_environment
        <<: *install_ruby_dependencies
    
    
          - image: circleci/ruby:2.4-buster-node
    
            environment: *ruby_environment
        <<: *install_ruby_dependencies
    
    
      build:
        <<: *defaults
        steps:
          - *attach_workspace
          - *install_system_dependencies
          - run: ./bin/rails assets:precompile
    
          - persist_to_workspace:
              root: ~/projects/
    
                  - ./mastodon/public/assets
                  - ./mastodon/public/packs-test/
    
        <<: *defaults
        docker:
    
          - image: circleci/ruby:2.6-buster-node
    
            environment: *ruby_environment
    
          - image: circleci/postgres:10.6-alpine
    
            environment:
              POSTGRES_USER: root
    
          - image: circleci/redis:5-alpine
    
        <<: *defaults
        docker:
    
          - image: circleci/ruby:2.5-buster-node
    
            environment: *ruby_environment
    
          - image: circleci/postgres:10.6-alpine
    
            environment:
              POSTGRES_USER: root
    
          - image: circleci/redis:5-alpine
    
          - image: circleci/ruby:2.4-buster-node
    
          - image: circleci/postgres:10.6-alpine
    
          - image: circleci/redis:5-alpine
    
      test-webui:
        <<: *defaults
        docker:
    
          - image: circleci/node:12-buster
    
        steps:
          - *attach_workspace
    
          - run: ./bin/retry yarn test:jest
    
    
      check-i18n:
        <<: *defaults
        steps:
          - *attach_workspace
    
          - run: bundle exec i18n-tasks check-normalized
    
          - run: bundle exec i18n-tasks unused -l en
    
          - run: bundle exec i18n-tasks check-consistent-interpolations
    
          - run: bundle exec rake repo:check_locales_files
    
    
    workflows:
      version: 2
      build-and-test:
        jobs:
          - install
    
              requires:
                - install
    
    ThibG's avatar
    ThibG committed
                - install-ruby2.6
    
    ThibG's avatar
    ThibG committed
                - install-ruby2.6
    
    ThibG's avatar
    ThibG committed
                - install-ruby2.6
    
          - test-ruby2.6:
              requires:
                - install-ruby2.6
                - build
    
          - test-ruby2.5:
              requires:
                - install-ruby2.5
    
          - test-ruby2.4:
              requires:
                - install-ruby2.4
    
          - test-webui:
              requires:
                - install
          - check-i18n:
              requires:
    
    ThibG's avatar
    ThibG committed
                - install-ruby2.6