Skip to content

Create rails_ci.yml #18

Create rails_ci.yml

Create rails_ci.yml #18

Workflow file for this run

name: "Ruby on Rails CI"
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:11-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
# Set Ruby version dynamically
- name: Define Ruby version
id: ruby-version
run: echo "RUBY_VERSION=${{ github.event.inputs.ruby_version || '3.2.1' }}" >> $GITHUB_ENV
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
bundler-cache: true
- name: Ensure Bundler is installed
run: gem install bundler && bundle install
# Install RSpec and RuboCop (with binstubs)
- name: Install RSpec and RuboCop
run: bundle install --binstubs
- name: Verify installed gems
run: bundle show rspec
- name: Set up database schema
run: bin/rails db:schema:load
- name: Run RSpec tests
run: bundle exec rspec
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# Define Ruby version dynamically for the lint job as well
- name: Define Ruby version
id: ruby-version
run: echo "RUBY_VERSION=${{ github.event.inputs.ruby_version || '3.3.1' }}" >> $GITHUB_ENV
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
bundler-cache: true
- name: Ensure Bundler is installed
run: gem install bundler && bundle install
# Install RSpec and RuboCop (with binstubs)
- name: Install RSpec and RuboCop
run: bundle binstubs --all
- name: Verify installed gems
run: bundle show rubocop
- name: Lint Ruby files
run: bundle exec rubocop --parallel
- name: Lint JavaScript files
uses: actions/setup-node@v3
with:
node-version: 18
- run: npm ci
- run: npm run lint