Convert CircleCI to GitHub Actions (#23608)
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 |
@ -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 |
Loading…
Reference in new issue