fix ci build error (4) #198
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Ruby on Rails CI" | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
jobs: | |
# Job for Ubuntu (Linux) runner with Docker-based PostgreSQL service | |
test-ubuntu: | |
name: Test on Ubuntu | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:14-alpine | |
ports: | |
- "5432:5432" | |
env: | |
POSTGRES_DB: rails_test | |
POSTGRES_USER: rails | |
POSTGRES_PASSWORD: password | |
env: | |
RAILS_ENV: test | |
DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install PostgreSQL Client on Ubuntu | |
run: sudo apt-get install -y postgresql-client-14 libpq-dev | |
- name: Install Ruby and gems | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.3.1 | |
bundler-cache: true | |
- name: Set up database schema | |
run: bin/rails db:schema:load | |
- name: Run tests | |
run: bundle exec rspec | |
# Job for macOS runner with Homebrew-based PostgreSQL installation | |
test-macos: | |
name: Test on macOS | |
runs-on: macos-latest | |
env: | |
RAILS_ENV: test | |
DATABASE_URL: "postgres://localhost:5432/rails_test" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install PostgreSQL on macOS | |
run: | | |
brew install postgresql@14 | |
brew services start postgresql@14 | |
# Ensure the postgres role is created by connecting to the default "postgres" database | |
psql postgres -c "CREATE ROLE postgres WITH SUPERUSER LOGIN;" || echo "Role postgres already exists" | |
# Create the test database (rails_test) | |
psql postgres -c "CREATE DATABASE rails_test;" -U postgres | |
- name: Install Ruby and gems | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
- name: Set up database schema | |
run: bin/rails db:schema:load | |
- name: Run tests | |
run: bundle exec rspec | |
# Linting job, runs on both Ubuntu and macOS | |
lint: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install Ruby and gems | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
- name: Security audit dependencies | |
run: bundle exec bundler-audit --update | |
- name: Security audit application code | |
run: bundle exec brakeman -q -w2 | |
- name: Lint Ruby files | |
run: bundle exec rubocop --parallel |