Convert CircleCI to GitHub Actions (#23608)
This commit is contained in:
		@@ -1,128 +0,0 @@
 | 
			
		||||
version: 2.1
 | 
			
		||||
 | 
			
		||||
orbs:
 | 
			
		||||
  ruby: circleci/ruby@2.0.0
 | 
			
		||||
  node: circleci/node@5.0.3
 | 
			
		||||
 | 
			
		||||
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.5
 | 
			
		||||
        environment:
 | 
			
		||||
          POSTGRES_USER: root
 | 
			
		||||
          POSTGRES_HOST_AUTH_METHOD: trust
 | 
			
		||||
      - image: cimg/redis:7.0
 | 
			
		||||
 | 
			
		||||
commands:
 | 
			
		||||
  install-system-dependencies:
 | 
			
		||||
    steps:
 | 
			
		||||
      - run:
 | 
			
		||||
          name: Install system dependencies
 | 
			
		||||
          command: |
 | 
			
		||||
            sudo apt-get update
 | 
			
		||||
            sudo apt-get install -y libicu-dev libidn11-dev
 | 
			
		||||
  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.3.26'
 | 
			
		||||
          key: ruby<< parameters.ruby-version >>-gems-v2
 | 
			
		||||
  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:3.2-node
 | 
			
		||||
        environment:
 | 
			
		||||
          RAILS_ENV: test
 | 
			
		||||
    steps:
 | 
			
		||||
      - checkout
 | 
			
		||||
      - install-system-dependencies
 | 
			
		||||
      - install-ruby-dependencies:
 | 
			
		||||
          ruby-version: '3.2'
 | 
			
		||||
      - node/install-packages:
 | 
			
		||||
          cache-version: v1
 | 
			
		||||
          pkg-manager: yarn
 | 
			
		||||
      - run:
 | 
			
		||||
          command: |
 | 
			
		||||
            export NODE_OPTIONS=--openssl-legacy-provider
 | 
			
		||||
            ./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 libmagickcore-dev libmagickwand-dev libjpeg-dev libpng-dev libtiff-dev libwebp-dev 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
 | 
			
		||||
 | 
			
		||||
workflows:
 | 
			
		||||
  version: 2
 | 
			
		||||
  build-and-test:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - build
 | 
			
		||||
      - test:
 | 
			
		||||
          matrix:
 | 
			
		||||
            parameters:
 | 
			
		||||
              ruby-version:
 | 
			
		||||
                - '2.7'
 | 
			
		||||
                - '3.0'
 | 
			
		||||
                - '3.1'
 | 
			
		||||
                - '3.2'
 | 
			
		||||
          name: test-ruby<< matrix.ruby-version >>
 | 
			
		||||
          requires:
 | 
			
		||||
            - build
 | 
			
		||||
							
								
								
									
										139
									
								
								.github/workflows/test-ruby.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								.github/workflows/test-ruby.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,139 @@
 | 
			
		||||
name: Ruby Testing
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
  pull_request:
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  BUNDLE_CLEAN: true
 | 
			
		||||
  BUNDLE_FROZEN: true
 | 
			
		||||
  BUNDLE_WITHOUT: 'development production'
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    env:
 | 
			
		||||
      RAILS_ENV: test
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - name: Set up Node.js
 | 
			
		||||
        uses: actions/setup-node@v3
 | 
			
		||||
        with:
 | 
			
		||||
          cache: yarn
 | 
			
		||||
          node-version-file: '.nvmrc'
 | 
			
		||||
 | 
			
		||||
      - name: Install native Ruby dependencies
 | 
			
		||||
        run: sudo apt-get install -y libicu-dev libidn11-dev
 | 
			
		||||
 | 
			
		||||
      - name: Set up bundler cache
 | 
			
		||||
        uses: ruby/setup-ruby@v1
 | 
			
		||||
        with:
 | 
			
		||||
          ruby-version: .ruby-version
 | 
			
		||||
          bundler-cache: true
 | 
			
		||||
 | 
			
		||||
      - run: yarn install --frozen-lockfile
 | 
			
		||||
      - name: Precompile assets
 | 
			
		||||
        # Previously had set this, but it's not supported
 | 
			
		||||
        # export NODE_OPTIONS=--openssl-legacy-provider
 | 
			
		||||
        run: |-
 | 
			
		||||
          ./bin/rails assets:precompile
 | 
			
		||||
 | 
			
		||||
      - uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: |-
 | 
			
		||||
            ./public/assets
 | 
			
		||||
            ./public/packs-test
 | 
			
		||||
          name: ${{ github.sha }}
 | 
			
		||||
          retention-days: 0
 | 
			
		||||
 | 
			
		||||
  test:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    needs:
 | 
			
		||||
      - build
 | 
			
		||||
 | 
			
		||||
    services:
 | 
			
		||||
      postgres:
 | 
			
		||||
        image: postgres:14.5
 | 
			
		||||
        env:
 | 
			
		||||
          POSTGRES_PASSWORD: postgres
 | 
			
		||||
          POSTGRES_USER: postgres
 | 
			
		||||
        options: >-
 | 
			
		||||
          --health-cmd pg_isready
 | 
			
		||||
          --health-interval 10s
 | 
			
		||||
          --health-timeout 5s
 | 
			
		||||
          --health-retries 5
 | 
			
		||||
        ports:
 | 
			
		||||
          - 5432:5432
 | 
			
		||||
 | 
			
		||||
      redis:
 | 
			
		||||
        image: redis:7.0
 | 
			
		||||
        options: >-
 | 
			
		||||
          --health-cmd "redis-cli ping"
 | 
			
		||||
          --health-interval 10s
 | 
			
		||||
          --health-timeout 5s
 | 
			
		||||
          --health-retries 5
 | 
			
		||||
        ports:
 | 
			
		||||
          - 6379:6379
 | 
			
		||||
 | 
			
		||||
    env:
 | 
			
		||||
      DB_HOST: localhost
 | 
			
		||||
      DB_USER: postgres
 | 
			
		||||
      DB_PASS: postgres
 | 
			
		||||
      DISABLE_SIMPLECOV: true
 | 
			
		||||
      RAILS_ENV: test
 | 
			
		||||
      ALLOW_NOPAM: true
 | 
			
		||||
      PAM_ENABLED: true
 | 
			
		||||
      PAM_DEFAULT_SERVICE: pam_test
 | 
			
		||||
      PAM_CONTROLLED_SERVICE: pam_test_controlled
 | 
			
		||||
      BUNDLE_WITH: 'pam_authentication'
 | 
			
		||||
      CI_JOBS: ${{ matrix.ci_job }}/4
 | 
			
		||||
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        ruby-version:
 | 
			
		||||
          - '2.7'
 | 
			
		||||
          - '3.0'
 | 
			
		||||
          - '3.1'
 | 
			
		||||
          - '.ruby-version'
 | 
			
		||||
        ci_job:
 | 
			
		||||
          - 1
 | 
			
		||||
          - 2
 | 
			
		||||
          - 3
 | 
			
		||||
          - 4
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - uses: actions/download-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: './public'
 | 
			
		||||
          name: ${{ github.sha }}
 | 
			
		||||
 | 
			
		||||
      - name: Install native Ruby dependencies
 | 
			
		||||
        run: sudo apt-get install -y libicu-dev libidn11-dev
 | 
			
		||||
 | 
			
		||||
      - name: Install additional system dependencies
 | 
			
		||||
        run: sudo apt-get install -y ffmpeg imagemagick libpam-dev
 | 
			
		||||
 | 
			
		||||
      - name: Set up bundler cache
 | 
			
		||||
        uses: ruby/setup-ruby@v1
 | 
			
		||||
        with:
 | 
			
		||||
          ruby-version: ${{ matrix.ruby-version}}
 | 
			
		||||
          bundler-cache: true
 | 
			
		||||
 | 
			
		||||
      - name: Update system gems
 | 
			
		||||
        if: matrix.ruby-version == '2.7'
 | 
			
		||||
        run: gem update --system
 | 
			
		||||
 | 
			
		||||
      - name: Load database schema
 | 
			
		||||
        run: './bin/rails db:create db:schema:load db:seed'
 | 
			
		||||
 | 
			
		||||
      - run: bundle exec rake rspec_chunked
 | 
			
		||||
@@ -41,8 +41,6 @@ It is not always possible to phrase every change in such a manner, but it is des
 | 
			
		||||
- Code style rules (rubocop, eslint)
 | 
			
		||||
- Normalization of locale files (i18n-tasks)
 | 
			
		||||
 | 
			
		||||
**Note**: You may need to log in and authorise the GitHub account your fork of this repository belongs to with CircleCI to enable some of the automated checks to run.
 | 
			
		||||
 | 
			
		||||
## Documentation
 | 
			
		||||
 | 
			
		||||
The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							@@ -104,6 +104,7 @@ group :development, :test do
 | 
			
		||||
  gem 'fuubar', '~> 2.5'
 | 
			
		||||
  gem 'i18n-tasks', '~> 1.0', require: false
 | 
			
		||||
  gem 'rspec-rails', '~> 6.0'
 | 
			
		||||
  gem 'rspec_chunked', '~> 0.6'
 | 
			
		||||
  gem 'rubocop-performance', require: false
 | 
			
		||||
  gem 'rubocop-rails', require: false
 | 
			
		||||
  gem 'rubocop-rspec', require: false
 | 
			
		||||
 
 | 
			
		||||
@@ -596,6 +596,7 @@ GEM
 | 
			
		||||
      rspec-core (~> 3.0, >= 3.0.0)
 | 
			
		||||
      sidekiq (>= 2.4.0)
 | 
			
		||||
    rspec-support (3.12.0)
 | 
			
		||||
    rspec_chunked (0.6)
 | 
			
		||||
    rspec_junit_formatter (0.6.0)
 | 
			
		||||
      rspec-core (>= 2, < 4, != 2.12.0)
 | 
			
		||||
    rubocop (1.45.1)
 | 
			
		||||
@@ -858,6 +859,7 @@ DEPENDENCIES
 | 
			
		||||
  rqrcode (~> 2.1)
 | 
			
		||||
  rspec-rails (~> 6.0)
 | 
			
		||||
  rspec-sidekiq (~> 3.1)
 | 
			
		||||
  rspec_chunked (~> 0.6)
 | 
			
		||||
  rspec_junit_formatter (~> 0.6)
 | 
			
		||||
  rubocop
 | 
			
		||||
  rubocop-performance
 | 
			
		||||
 
 | 
			
		||||
@@ -5,13 +5,12 @@
 | 
			
		||||
</picture></h1>
 | 
			
		||||
 | 
			
		||||
[][releases]
 | 
			
		||||
[][circleci]
 | 
			
		||||
[](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml)
 | 
			
		||||
[][code_climate]
 | 
			
		||||
[][crowdin]
 | 
			
		||||
[][docker]
 | 
			
		||||
 | 
			
		||||
[releases]: https://github.com/mastodon/mastodon/releases
 | 
			
		||||
[circleci]: https://circleci.com/gh/mastodon/mastodon
 | 
			
		||||
[code_climate]: https://codeclimate.com/github/mastodon/mastodon
 | 
			
		||||
[crowdin]: https://crowdin.com/project/mastodon
 | 
			
		||||
[docker]: https://hub.docker.com/r/tootsuite/mastodon/
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,7 @@ development:
 | 
			
		||||
test:
 | 
			
		||||
  <<: *default
 | 
			
		||||
 | 
			
		||||
  # CircleCI precompiles packs prior to running the tests.
 | 
			
		||||
  # CI precompiles packs prior to running the tests.
 | 
			
		||||
  # Also avoids race conditions in parallel_tests.
 | 
			
		||||
  compile: false
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user