Привет!
В этом быстром маленьком посте я собираюсь быстро показать, как я построил действие GitHub, которое запустит тестовый набор приложений My Rails. Теперь на этой теме много сообщений, но я законно не смог получить то, что я нашел в Google, чтобы работать. Поэтому после «дней» удара по стене, я смог собрать вместе работающее действие GitHub. Так что, если есть кто -то в подобном месте, я надеюсь, что это поможет. Как всегда, вы можете найти меня на Twitter , ваше здоровье.
Для моего приложения Ruby on Rails я использую следующее:
- Rails V6.1.3.1
- Postgres V12
- Стандартная интеграция 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»