Mayo 16, 2020
Ruby on Rails GitHub Actions con MySQL
Guía básica para crear tu CI con GitHub Actions y MySQL
Esta guía provee los elementos básicos para crear un GitHub Action que te permita correr las pruebas de un proyecto de Ruby on Rails 6.
Realmente verás que es muy sencillo, solo tienes que agregar los siguientes dos archivos en las rutas correspondientes.
// .github/workflows/ruby.yml
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
name: Ruby
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app_db_test
ports:
- 3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6.6
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.6
- name: Gem cache
uses: actions/cache@v1
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Verify MySQL connection from host
run: |
sudo apt-get install -y mysql-client libmysqlclient-dev
sudo /etc/init.d/mysql start
mysql -h 127.0.0.1 --port ${{ job.services.mysql.ports[3306] }} -u root -proot -e "CREATE DATABASE IF NOT EXISTS app_db_test;"
- name: Yarn install
uses: borales/actions-yarn@v2.0.0
with:
cmd: install
- name: Bundle install, setup DB and run tests
env:
RAILS_ENV: test
DB_PASSWORD: root
DB_PORT: ${{ job.services.mysql.ports[3306] }}
run: |
cp config/database.yml.ci config/database.yml
gem install bundler --version 2.1.4
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
bundle exec rails db:setup
bundle exec rails test
// ./config/database.yml.ci
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: root
test:
<<: *default
database: app_db_test
Agregamos el archivo database.yml.ci
ya que seguramente tus configuraciones locales
o de tu servidor son diferentes al ambiente que crea la acción de GitHub. Solo asegúrate de tener las configuraciones
adecuadas de acuerdo a tu proyecto. Por ejemplo tu el nombre de tu base de datos será muy diferente a app_db_test
.