CI/CD
GitLab CI + Docker Compose + Traefik.
Medii
| Mediu | URL | Declanșator |
|---|---|---|
| dev | https://dev-glamb.happydev.tech | Push pe ramura dev |
| production | https://glamb.happydev.tech | Push pe ramura main |
Etapele pipeline-ului
test → dev/main → cleanup
| Job | Declanșator | Acțiune |
|---|---|---|
test-job | Toate ramurile | bundle exec rspec prin ci-cd/test/ |
lint-job | Toate ramurile | rubocop fără DB (paralel cu test-job) |
lint-fix | Manual | rubocop -A + commit înapoi în ramură |
start-dev | Ramura dev | docker compose up -d ci-cd/dev/ |
start-main | Ramura main | docker compose up -d ci-cd/prod/ |
cleanup | Întotdeauna | docker image prune -f |
test-job și lint-job rulează în paralel. Ambele trebuie să treacă înainte de deployment.
Git Flow
feature/* sau fix/*
→ PR → dev (deploy automat în mediul dev)
→ PR → main (deploy automat în producție)
Secrete necesare (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 # doar dev
GIT_ACCESS_TOKEN # doar lint-fix
Fișiere Docker
| Fișier | Scop |
|---|---|
docker-compose.yml | Dezvoltare locală |
ci-cd/test/ | RSpec în pipeline |
ci-cd/dev/ | Deploy pe serverul dev |
ci-cd/prod/ | Deploy în producție |
ci-cd/lint/ | lint-fix cu volume mount |
Compusele
ci-cd/nu se rulează niciodată local.