Post

Configuring GitLab CE CI for a Rails 4 monolith

Configuring GitLab CE CI for a Rails 4 monolith

Configuring GitLab CE CI for a Rails 4 monolith

Estamos usando GitLab CE e precisamos de um pipeline simples para um monólito Rails 4 sem queimar runners compartilhados. Aqui vai o gitlab-ci.yml mínimo com runner Docker que estamos adotando agora.

Requisitos

  • GitLab CE self-hosted.
  • Runner registrado com executor Docker.
  • Imagem base com Ruby 2.3, Node, Yarn e Postgres client.

.gitlab-ci.yml basico

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
image: ruby:2.3

services:
  - postgres:9.6

variables:
  POSTGRES_DB: app_test
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: ""

stages:
  - test

before_script:
  - apt-get update && apt-get install -y nodejs yarn
  - gem install bundler -v 1.17.3
  - bundle install --path vendor/bundle
  - cp config/database.ci.yml config/database.yml
  - bundle exec rake db:create db:schema:load

rspec:
  stage: test
  script:
    - bundle exec rspec

Dicas rapidas

  • Use cache de vendor/bundle para acelerar jobs.
  • Crie config/database.ci.yml apontando para o service Postgres.
  • Para Chrome headless em system specs, adicione chromium e chromedriver.
  • Se a base for maior, substitua db:schema:load por db:structure:load.

Troubleshooting comum

  • Erro de pool: ajuste pool em database.ci.yml para 5 se usar poucos workers.
  • Bundle lento: habilite mirror interno de gems ou cache por branch.
  • RSpec quebrando por timezone: defina TZ=UTC nas variables globais.
Esta postagem está licenciada sob CC BY 4.0 pelo autor.