Рубрики
Uncategorized

Быстро: Действие GitHub для тестирования приложения Rails

Действие GitHub по запуску тестов в приложении Rails против базы данных Postgres. Tagged with Ruby, DevOps, ShowDev, тестирование.

Привет!

В этом быстром маленьком посте я собираюсь быстро показать, как я построил действие GitHub, которое запустит тестовый набор приложений My Rails. Теперь на этой теме много сообщений, но я законно не смог получить то, что я нашел в Google, чтобы работать. Поэтому после «дней» удара по стене, я смог собрать вместе работающее действие GitHub. Так что, если есть кто -то в подобном месте, я надеюсь, что это поможет. Как всегда, вы можете найти меня на Twitter , ваше здоровье.

Для моего приложения Ruby on Rails я использую следующее:

  1. Rails V6.1.3.1
  2. Postgres V12
  3. Стандартная интеграция Minitest Rails.

Цель

На своих многочисленных толчках я хотел бы, чтобы действие GitHub, которое проверяет мой код и тесты. Это также должно проверить любую ветвь, которая будет установлена, чтобы быть PR’D в Главный ветка. Также для примечания, это личный проект, поэтому я много занимаюсь, и мои коммиты MSG довольно скудны.

В применении рельсов.

В config/database.yml Обновите настройки, чтобы использовать Env Vars, которые мы установим позже.

test:
  <<: *default
  database: <%= ENV.fetch('PG_DATABASE', 'myapp_test') %>
  host:     <%= ENV.fetch('PG_HOST',  'localhost') %>
  username: <%= ENV.fetch('PG_USER', nil) %>
  password: <%= ENV.fetch('PG_PASSWORD', nil) %>
  port:     <%= ENV.fetch('PG_PORT', 5432) %>

И Действие GitHub

name: Rails
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

env:
  registry: myapp_registry
  DB_HOST: localhost
  DB_USERNAME: myapp
  DB_PASSWORD: password


jobs:
  tests:
    name: Tests
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:12
        ports: ["5432:5432"]
        env:
          POSTGRES_PASSWORD: password
          POSTGRES_DB: myapp_test
          POSTGRES_USER: myapp
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup Ruby
        uses: ruby/setup-ruby@v1
        #with:
        #  ruby-version: 2.7.2 not needed with .ruby-version file

      - name: Setup Node
        uses: actions/setup-node@v1
        with:
          node-version: 10.18.0

      - name: Find yarn cache location
        id: yarn-cache
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - name: JS package cache
        uses: actions/cache@v1
        with:
          path: ${{ steps.yarn-cache.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install packages
        run: |
          yarn install --pure-lockfile
      - name: Install PostgresSQL 12 Client
        run: |
          sudo apt-get -yqq install libpq-dev
      - name: Cache Ruby Gems
        uses: actions/cache@v2
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-
      - name: Bundle Install
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3
      - name: Setup test database and run tests
        env:
          RAILS_ENV: test
          PG_HOST: localhost
          PG_DATABASE: myapp_test
          PG_USER: myapp
          PG_PASSWORD: password
          WITH_COVERAGE: true
          DISABLE_SPRING: 1
        run: |
          bin/rails db:setup
          bin/rails test

      - name: Upload Code Coverage
        uses: actions/upload-artifact@v2
        with:
          name: code-coverage
          path: coverage/

Где этот файл?

С действиями GitHub вы можете настроить их непосредственно в репо GitHub.

Это создаст файл в вашей кодовой базе под .github/workflows/{filename} .yml .

При этом вы должны теперь увидеть шаги сборки, выполняющие 1 на 1 и успешно завершить, если ваш проект действительно проходит все тесты.

Обложка кредит: https://unsplash.com/photos/sJjvg1ybXRk

Оригинал: «https://dev.to/coreyjs/quick-bit-github-action-to-test-a-rails-app-1k0a»