Перейти к основному содержимому

CI/CD

GitLab CI + Docker Compose + Traefik.


Окружения

ОкружениеURLТриггер
devhttps://dev-glamb.happydev.techPush в ветку dev
productionhttps://glamb.happydev.techPush в ветку main

Стадии пайплайна

test  →  dev/main  →  cleanup
JobТриггерДействие
test-jobВсе веткиbundle exec rspec через ci-cd/test/
lint-jobВсе веткиrubocop без DB (параллельно с test-job)
lint-fixРучнойrubocop -A + коммит обратно в ветку
start-devВетка devdocker compose up -d ci-cd/dev/
start-mainВетка maindocker compose up -d ci-cd/prod/
cleanupВсегдаdocker image prune -f

test-job и lint-job выполняются параллельно. Оба должны пройти перед деплоем.


Git Flow

feature/* или fix/*
→ PR → dev (авто-деплой на dev-окружение)
→ PR → main (авто-деплой на production)

Секреты (GitLab CI Variables)

RAILS_MASTER_KEY
SECRET_KEY_BASE
DBUSER · DBPASS · DBNAME · DBPORT
ACTIVE_RECORD_KEY_SALT
ACTIVE_RECORD_PRIMARY_KEY
ACTIVE_RECORD_DETERMINISTIC_KEY
SWAGGER_USER · SWAGGER_PASSWORD # только dev
GIT_ACCESS_TOKEN # только lint-fix

Docker файлы

ФайлНазначение
docker-compose.ymlЛокальная разработка
ci-cd/test/RSpec в пайплайне
ci-cd/dev/Деплой на dev-сервер
ci-cd/prod/Деплой на production
ci-cd/lint/lint-fix с volume mount

ci-cd/ компоузы никогда не запускаются локально.