@ -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 |