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)
 | 
					- Code style rules (rubocop, eslint)
 | 
				
			||||||
- Normalization of locale files (i18n-tasks)
 | 
					- 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
 | 
					## 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).
 | 
					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 'fuubar', '~> 2.5'
 | 
				
			||||||
  gem 'i18n-tasks', '~> 1.0', require: false
 | 
					  gem 'i18n-tasks', '~> 1.0', require: false
 | 
				
			||||||
  gem 'rspec-rails', '~> 6.0'
 | 
					  gem 'rspec-rails', '~> 6.0'
 | 
				
			||||||
 | 
					  gem 'rspec_chunked', '~> 0.6'
 | 
				
			||||||
  gem 'rubocop-performance', require: false
 | 
					  gem 'rubocop-performance', require: false
 | 
				
			||||||
  gem 'rubocop-rails', require: false
 | 
					  gem 'rubocop-rails', require: false
 | 
				
			||||||
  gem 'rubocop-rspec', require: false
 | 
					  gem 'rubocop-rspec', require: false
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -596,6 +596,7 @@ GEM
 | 
				
			|||||||
      rspec-core (~> 3.0, >= 3.0.0)
 | 
					      rspec-core (~> 3.0, >= 3.0.0)
 | 
				
			||||||
      sidekiq (>= 2.4.0)
 | 
					      sidekiq (>= 2.4.0)
 | 
				
			||||||
    rspec-support (3.12.0)
 | 
					    rspec-support (3.12.0)
 | 
				
			||||||
 | 
					    rspec_chunked (0.6)
 | 
				
			||||||
    rspec_junit_formatter (0.6.0)
 | 
					    rspec_junit_formatter (0.6.0)
 | 
				
			||||||
      rspec-core (>= 2, < 4, != 2.12.0)
 | 
					      rspec-core (>= 2, < 4, != 2.12.0)
 | 
				
			||||||
    rubocop (1.45.1)
 | 
					    rubocop (1.45.1)
 | 
				
			||||||
@@ -858,6 +859,7 @@ DEPENDENCIES
 | 
				
			|||||||
  rqrcode (~> 2.1)
 | 
					  rqrcode (~> 2.1)
 | 
				
			||||||
  rspec-rails (~> 6.0)
 | 
					  rspec-rails (~> 6.0)
 | 
				
			||||||
  rspec-sidekiq (~> 3.1)
 | 
					  rspec-sidekiq (~> 3.1)
 | 
				
			||||||
 | 
					  rspec_chunked (~> 0.6)
 | 
				
			||||||
  rspec_junit_formatter (~> 0.6)
 | 
					  rspec_junit_formatter (~> 0.6)
 | 
				
			||||||
  rubocop
 | 
					  rubocop
 | 
				
			||||||
  rubocop-performance
 | 
					  rubocop-performance
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,13 +5,12 @@
 | 
				
			|||||||
</picture></h1>
 | 
					</picture></h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[][releases]
 | 
					[][releases]
 | 
				
			||||||
[][circleci]
 | 
					[](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml)
 | 
				
			||||||
[][code_climate]
 | 
					[][code_climate]
 | 
				
			||||||
[][crowdin]
 | 
					[][crowdin]
 | 
				
			||||||
[][docker]
 | 
					[][docker]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[releases]: https://github.com/mastodon/mastodon/releases
 | 
					[releases]: https://github.com/mastodon/mastodon/releases
 | 
				
			||||||
[circleci]: https://circleci.com/gh/mastodon/mastodon
 | 
					 | 
				
			||||||
[code_climate]: https://codeclimate.com/github/mastodon/mastodon
 | 
					[code_climate]: https://codeclimate.com/github/mastodon/mastodon
 | 
				
			||||||
[crowdin]: https://crowdin.com/project/mastodon
 | 
					[crowdin]: https://crowdin.com/project/mastodon
 | 
				
			||||||
[docker]: https://hub.docker.com/r/tootsuite/mastodon/
 | 
					[docker]: https://hub.docker.com/r/tootsuite/mastodon/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ development:
 | 
				
			|||||||
test:
 | 
					test:
 | 
				
			||||||
  <<: *default
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # CircleCI precompiles packs prior to running the tests.
 | 
					  # CI precompiles packs prior to running the tests.
 | 
				
			||||||
  # Also avoids race conditions in parallel_tests.
 | 
					  # Also avoids race conditions in parallel_tests.
 | 
				
			||||||
  compile: false
 | 
					  compile: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user