mirror of https://github.com/mastodon/mastodon
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			153 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			YAML
		
	
version: 2.1
 | 
						|
 | 
						|
orbs:
 | 
						|
  ruby: circleci/ruby@1.2.0
 | 
						|
  node: circleci/node@4.7.0
 | 
						|
 | 
						|
executors:
 | 
						|
  default:
 | 
						|
    parameters:
 | 
						|
      ruby-version:
 | 
						|
        type: string
 | 
						|
    docker:
 | 
						|
      - image: cimg/ruby:<< parameters.ruby-version >>
 | 
						|
        environment:
 | 
						|
          BUNDLE_JOBS: 3
 | 
						|
          BUNDLE_RETRY: 3
 | 
						|
          CONTINUOUS_INTEGRATION: true
 | 
						|
          DB_HOST: localhost
 | 
						|
          DB_USER: root
 | 
						|
          DISABLE_SIMPLECOV: true
 | 
						|
          RAILS_ENV: test
 | 
						|
      - image: cimg/postgres:14.0
 | 
						|
        environment:
 | 
						|
          POSTGRES_USER: root
 | 
						|
          POSTGRES_HOST_AUTH_METHOD: trust
 | 
						|
      - image: circleci/redis:5-alpine
 | 
						|
 | 
						|
commands:
 | 
						|
  install-system-dependencies:
 | 
						|
    steps:
 | 
						|
      - 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:
 | 
						|
    parameters:
 | 
						|
      ruby-version:
 | 
						|
        type: string
 | 
						|
    steps:
 | 
						|
      - run:
 | 
						|
          command: |
 | 
						|
            bundle config clean 'true'
 | 
						|
            bundle config frozen 'true'
 | 
						|
            bundle config without 'development production'            
 | 
						|
          name: Set bundler settings
 | 
						|
      - ruby/install-deps:
 | 
						|
          bundler-version: '2.2.29'
 | 
						|
          key: ruby<< parameters.ruby-version >>-gems-v1
 | 
						|
  wait-db:
 | 
						|
    steps:
 | 
						|
      - run:
 | 
						|
          command: dockerize -wait tcp://localhost:5432 -wait tcp://localhost:6379 -timeout 1m
 | 
						|
          name: Wait for PostgreSQL and Redis
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    docker:
 | 
						|
      - image: cimg/ruby:2.7-node
 | 
						|
        environment:
 | 
						|
          RAILS_ENV: test
 | 
						|
    steps:
 | 
						|
      - checkout
 | 
						|
      - install-system-dependencies
 | 
						|
      - install-ruby-dependencies:
 | 
						|
          ruby-version: '2.7'
 | 
						|
      - node/install-packages:
 | 
						|
          cache-version: v1
 | 
						|
          pkg-manager: yarn
 | 
						|
      - run:
 | 
						|
          command: ./bin/rails assets:precompile
 | 
						|
          name: Precompile assets
 | 
						|
      - persist_to_workspace:
 | 
						|
          paths:
 | 
						|
            - public/assets
 | 
						|
            - public/packs-test
 | 
						|
          root: .
 | 
						|
 | 
						|
  test:
 | 
						|
    parameters:
 | 
						|
      ruby-version:
 | 
						|
        type: string
 | 
						|
    executor:
 | 
						|
      name: default
 | 
						|
      ruby-version: << parameters.ruby-version >>
 | 
						|
    environment:
 | 
						|
      ALLOW_NOPAM: true
 | 
						|
      PAM_ENABLED: true
 | 
						|
      PAM_DEFAULT_SERVICE: pam_test
 | 
						|
      PAM_CONTROLLED_SERVICE: pam_test_controlled
 | 
						|
    parallelism: 4
 | 
						|
    steps:
 | 
						|
      - checkout
 | 
						|
      - install-system-dependencies
 | 
						|
      - run:
 | 
						|
          command: sudo apt-get install -y ffmpeg imagemagick libpam-dev
 | 
						|
          name: Install additional system dependencies
 | 
						|
      - run:
 | 
						|
          command: bundle config with 'pam_authentication'
 | 
						|
          name: Enable PAM authentication
 | 
						|
      - install-ruby-dependencies:
 | 
						|
          ruby-version: << parameters.ruby-version >>
 | 
						|
      - attach_workspace:
 | 
						|
          at: .
 | 
						|
      - wait-db
 | 
						|
      - run:
 | 
						|
          command: ./bin/rails db:create db:schema:load db:seed
 | 
						|
          name: Load database schema
 | 
						|
      - ruby/rspec-test
 | 
						|
 | 
						|
  test-migrations:
 | 
						|
    executor:
 | 
						|
      name: default
 | 
						|
      ruby-version: '2.7'
 | 
						|
    steps:
 | 
						|
      - checkout
 | 
						|
      - install-system-dependencies
 | 
						|
      - install-ruby-dependencies:
 | 
						|
          ruby-version: '2.7'
 | 
						|
      - wait-db
 | 
						|
      - run:
 | 
						|
          command: ./bin/rails db:create
 | 
						|
          name: Create database
 | 
						|
      - run:
 | 
						|
          command: ./bin/rails db:migrate
 | 
						|
          name: Run migrations
 | 
						|
 | 
						|
workflows:
 | 
						|
  version: 2
 | 
						|
  build-and-test:
 | 
						|
    jobs:
 | 
						|
      - build
 | 
						|
      - test:
 | 
						|
          matrix:
 | 
						|
            parameters:
 | 
						|
              ruby-version:
 | 
						|
                - '2.7'
 | 
						|
                - '3.0'
 | 
						|
          name: test-ruby<< matrix.ruby-version >>
 | 
						|
          requires:
 | 
						|
            - build
 | 
						|
      - test-migrations:
 | 
						|
          requires:
 | 
						|
            - build
 | 
						|
      - node/run:
 | 
						|
          cache-version: v1
 | 
						|
          name: test-webui
 | 
						|
          pkg-manager: yarn
 | 
						|
          requires:
 | 
						|
            - build
 | 
						|
          version: lts
 | 
						|
          yarn-run: test:jest
 |