# This workflow uses actions that are not certified by GitHub. They are # provided by a third-party and are governed by separate terms of service, # privacy policy, and support documentation. # # This workflow will install a prebuilt Ruby version, install dependencies, and # run tests and linters. name: "Ruby on Rails CI" on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] 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@v4 # Add or replace dependency steps here - name: Install Ruby and gems uses: ruby/setup-ruby@78c01b705fd9d5ad960d432d3a0cfa341d50e410 # v1.179.1 with: bundler-cache: true # Add or replace database setup steps here - name: Set up database schema run: bin/rails db:schema:load # Add or replace test runners here - name: Run tests run: bin/rake lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Ruby and gems uses: ruby/setup-ruby@78c01b705fd9d5ad960d432d3a0cfa341d50e410 # v1.179.1 with: bundler-cache: true - name: Generate binstubs run: bundle binstubs bundler-audit brakeman rubocop # Add or replace any other lints here - name: Security audit dependencies run: bin/bundler-audit --update - name: Security audit application code run: bin/brakeman -q -w2 - name: Lint Ruby files run: bin/rubocop --parallel