Convert CircleCI to GitHub Actions (#23608)
This commit is contained in:
		
							parent
							
								
									174352716a
								
							
						
					
					
						commit
						e594bb7d50
					
				
					 7 changed files with 144 additions and 133 deletions
				
			
		|  | @ -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 a new issue