CI/CD
GitLab CI + Docker Compose + Traefik.
Окружения
| Окружение | URL | Триггер |
|---|---|---|
| dev | https://dev-glamb.happydev.tech | Push в ветку dev |
| production | https://glamb.happydev.tech | Push в ветку 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 | Ветка dev | docker compose up -d ci-cd/dev/ |
start-main | Ветка main | docker 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/компоузы никогда не запускаются локально.