Привет!
В этом быстром маленьком посте я собираюсь быстро показать, как я построил действие 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»