Codeminer42/cm42-central

View on GitHub
.github/workflows/cm42-central.yml

Summary

Maintainability
Test Coverage
# This workflow will install a prebuilt Ruby version, install dependencies, and
# run tests and linters.
name: 'CM42 Central CI'
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
jobs:
  unit-tests:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:11-alpine
        ports:
          - '5432:5432'
        env:
          POSTGRES_DB: rails_test
          POSTGRES_USER: rails
          POSTGRES_PASSWORD: password

      redis:
        image: redis
        # Set health checks to wait until redis has started
        options: >-
          --health-cmd "redis-cli ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - '6379:6379'

    env:
      CI: true
      RAILS_ENV: test
      DATABASE_URL: 'postgres://rails:password@localhost:5432/rails_test'
      MAILER_SENDER: noreply@example.com
      CLOUDINARY_URL: cloudinary://username:password@localhost

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      # Add or replace dependency steps here
      - name: Install Ruby and gems
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7.8
      - name: Run bundle install
        run: bundle install
      # Add or replace database setup steps here
      - name: Set up database schema
        run: bin/rake db:setup
      # Add or replace test runners here
      - name: Run tests
        run: bin/bundle exec rspec spec/ --exclude-pattern "spec/features/*"

  javascript-tests:
    runs-on: ubuntu-latest

    env:
      CI: true

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      # Add or replace dependency steps here
      - name: Install Node
        uses: actions/setup-node@v2
        with:
          node-version: 20.17.0
          cache: 'yarn'
      - name: Install JS dependencies
        run: yarn install
      # Add or replace test runners here
      - name: Run tests
        run: npm test

  feature-tests:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:11-alpine
        ports:
          - '5432:5432'
        env:
          POSTGRES_DB: rails_test
          POSTGRES_USER: rails
          POSTGRES_PASSWORD: password

      redis:
        image: redis
        # Set health checks to wait until redis has started
        options: >-
          --health-cmd "redis-cli ping"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - '6379:6379'

    env:
      CI: true
      RAILS_ENV: test
      DATABASE_URL: 'postgres://rails:password@localhost:5432/rails_test'
      MAILER_SENDER: noreply@example.com
      CLOUDINARY_URL: cloudinary://username:password@localhost

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      # Add or replace dependency steps here
      - name: Install Ruby and gems
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7.8
      - name: Run bundle install
        run: bundle install
      - name: Install Node
        uses: actions/setup-node@v2
        with:
          node-version: 20.17.0
          cache: 'yarn'
      - name: Install JS dependencies
        run: yarn install

      # Add or replace database setup steps here
      - name: Set up database schema
        run: bin/rake db:setup

      # Add or replace test runners here
      - name: Run tests
        run: bin/bundle exec rspec spec/ --pattern "spec/features/*"