GitLab CI/CD Platform for Containerized Microservices

Built a standard CI/CD system for 5 microservices by containerizing each service and introducing a shared GitLab CI template library used by every repo.

Each service stays lightweight (minimal `.gitlab-ci.yml`) while the templates enforce consistent build/deploy behavior. Test deploys run automatically, and production releases require manual approval.

Every image is tagged by git commit SHA for easy rollback. Deployments are verified with ECS stability checks so broken releases fail fast and don’t take production down.

For the backend, I integrated Terraform plan/apply into the same pipeline so infrastructure changes follow the same review-and-promote workflow as application code.

GitLab CI/CDDockerAWS ECRAWS ECS FargateTerraformShell RunnersYAML Templates
View on GitHub

What this covers

Containerization

Unified deployment unit across Node/Angular/React services by standardizing everything into Docker images.

Shared Template Library

Central GitLab template repo for build/deploy/Terraform stages; services consume via remote `include` so improvements roll out everywhere.

Minimal Service Configs

Service pipelines are intentionally short (stages + includes); no duplicated pipeline logic across repos.

Environment Separation

Auto-deploy to test on main; production is gated with manual approvals and environment-scoped variables.

Safe Rollback

Dual tags (commit SHA + latest) keep rollback one command away; ECR lifecycle retains a rollback buffer.

Deployment Verification

ECS `services-stable` checks (with timeout) catch failed rollouts automatically.

IaC in the Pipeline

Terraform plan/apply with plan artifacts passed forward, giving safe, reviewable infrastructure changes.