ci: add GitLab CI/CD pipeline for Docker deploy
On every push to main: builds both Docker images on the server via docker compose up --build -d, prunes dangling images, and prints the running container list. No registry required — shell executor runner on the deployment server is all that's needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
50
.gitlab-ci.yml
Normal file
50
.gitlab-ci.yml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# ──────────────────────────────────────────────────────────────────────────────
|
||||||
|
# Flight Radar — GitLab CI/CD
|
||||||
|
#
|
||||||
|
# PREREQUISITES (one-time setup on the server):
|
||||||
|
#
|
||||||
|
# 1. Install GitLab Runner
|
||||||
|
# https://docs.gitlab.com/runner/install/linux-manually/
|
||||||
|
#
|
||||||
|
# 2. Register the runner (shell executor, tag: "shell")
|
||||||
|
# gitlab-runner register \
|
||||||
|
# --url https://gitlab.com \
|
||||||
|
# --registration-token <YOUR_PROJECT_TOKEN> \
|
||||||
|
# --executor shell \
|
||||||
|
# --tag-list shell \
|
||||||
|
# --description "flight-radar-server"
|
||||||
|
#
|
||||||
|
# 3. Give the runner access to Docker (no sudo needed)
|
||||||
|
# sudo usermod -aG docker gitlab-runner
|
||||||
|
# sudo systemctl restart gitlab-runner
|
||||||
|
#
|
||||||
|
# PIPELINE BEHAVIOUR:
|
||||||
|
# • Triggers on every push to the default branch (main).
|
||||||
|
# • Builds both Docker images on the server (no registry needed).
|
||||||
|
# • Brings the app up with docker compose; only changed services restart.
|
||||||
|
# • If the build fails the old containers keep running — no downtime.
|
||||||
|
# • Prunes dangling images after a successful deploy.
|
||||||
|
# ──────────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Stable project name so containers are found across different checkout dirs
|
||||||
|
COMPOSE_PROJECT: flight-radar
|
||||||
|
# Path to compose file (relative to repo root = $CI_PROJECT_DIR)
|
||||||
|
COMPOSE_FILE: flight-comparator/docker-compose.yml
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
stage: deploy
|
||||||
|
tags:
|
||||||
|
- shell # must match the tag you gave your runner at registration
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||||
|
script:
|
||||||
|
- echo "=== Deploying commit $CI_COMMIT_SHORT_SHA to $CI_COMMIT_BRANCH ==="
|
||||||
|
- docker compose -f "$COMPOSE_FILE" -p "$COMPOSE_PROJECT" up --build -d --remove-orphans
|
||||||
|
- echo "=== Cleaning up dangling images ==="
|
||||||
|
- docker image prune -f
|
||||||
|
- echo "=== Running containers ==="
|
||||||
|
- docker compose -f "$COMPOSE_FILE" -p "$COMPOSE_PROJECT" ps
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
name: flight-radar # pins the project name — must match COMPOSE_PROJECT in .gitlab-ci.yml
|
||||||
|
|
||||||
services:
|
services:
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
|
|||||||
Reference in New Issue
Block a user