mishina2228/oanda-api-rails

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: ci

on:
  - push
  - pull_request

permissions:
  contents: read

jobs:
  test:
    strategy:
      fail-fast: true
      matrix:
        ruby_version:
          - '3.3'
          - '3.2'
          - '3.1'
    runs-on: ubuntu-latest
    env:
      DB_HOST: 127.0.0.1
      DB_PASSWORD: 'root'
      DB_USERNAME: 'root'
      RAILS_ENV: test
      NODE_ENV: test
      TZ: 'Asia/Tokyo'
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Start local MySQL
        run: sudo systemctl start mysql.service
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby_version }}
          bundler-cache: true
          cache-version: 1
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'yarn'
      - run: yarn install
      - name: Database setup
        run: |-
          bin/rails db:create --trace
          bin/rails db:schema:load --trace
      - name: Build assets in advance
        run: bin/rails assets:precompile
      - name: Run unit tests
        run: bin/rails test
      - name: Upload unit test coverage report
        uses: codecov/codecov-action@v4
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

      - name: Run system test
        run: bin/rails test:system
      - name: Archive system test result screenshots
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: system test result screenshots
          path: tmp/screenshots/
  brakeman:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.3'
          bundler-cache: true
      - name: Run Brakeman
        run: bundle exec brakeman
  standard:
    runs-on: ubuntu-latest
    env:
      NODE_ENV: test
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'yarn'
      - run: yarn install
      - name: Run Standard
        run: yarn standard
  rubocop:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.3'
          bundler-cache: true
      - name: Run RuboCop
        run: bundle exec rubocop
  erb-lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.3'
          bundler-cache: true
      - name: Run ERB Lint
        run: bundle exec erblint --lint-all
  markdownlint:
    runs-on: ubuntu-latest
    env:
      NODE_ENV: test
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'yarn'
      - run: yarn install
      - name: Run markdownlint
        run: yarn markdownlint .