mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
Update .gitlab-ci.yml file
This commit is contained in:
+16
-55
@@ -49,80 +49,41 @@ build_production:
|
|||||||
|
|
||||||
|
|
||||||
# =========================
|
# =========================
|
||||||
# MIGRATE (AUTO)
|
# MIGRATE (PRODUCTION - MANUAL)
|
||||||
# =========================
|
# =========================
|
||||||
migrate_production:
|
migrate_production:
|
||||||
stage: migrate
|
stage: migrate
|
||||||
rules:
|
rules:
|
||||||
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "production"'
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "production"'
|
||||||
|
when: manual
|
||||||
|
allow_failure: false
|
||||||
needs:
|
needs:
|
||||||
- job: build_production
|
- job: build_production
|
||||||
artifacts: false
|
artifacts: false
|
||||||
script: |
|
script: |
|
||||||
set -e
|
set -e
|
||||||
echo "✅ Running migrations (production) ..."
|
cd /opt/deploy/lti-prod
|
||||||
|
test -f .env || (echo "❌ .env not found" && exit 1)
|
||||||
|
|
||||||
cd "$DEPLOY_DIR"
|
|
||||||
test -f "$COMPOSE_FILE" || (echo "❌ $COMPOSE_FILE not found in $DEPLOY_DIR" && exit 1)
|
|
||||||
test -f .env || (echo "❌ .env not found in $DEPLOY_DIR" && exit 1)
|
|
||||||
|
|
||||||
# ✅ load env dari server
|
|
||||||
set -a
|
set -a
|
||||||
. ./.env
|
. ./.env
|
||||||
set +a
|
set +a
|
||||||
|
|
||||||
# ✅ validasi
|
# Validasi env wajib
|
||||||
test -n "$DB_HOST" || (echo "❌ DB_HOST empty" && exit 1)
|
: "${DB_HOST:?DB_HOST not set}"
|
||||||
test -n "$DB_PORT" || (echo "❌ DB_PORT empty" && exit 1)
|
: "${DB_PORT:?DB_PORT not set}"
|
||||||
test -n "$DB_USER" || (echo "❌ DB_USER empty" && exit 1)
|
: "${DB_USER:?DB_USER not set}"
|
||||||
test -n "$DB_PASSWORD" || (echo "❌ DB_PASSWORD empty" && exit 1)
|
: "${DB_PASSWORD:?DB_PASSWORD not set}"
|
||||||
test -n "$DB_NAME" || (echo "❌ DB_NAME empty" && exit 1)
|
: "${DB_NAME:?DB_NAME not set}"
|
||||||
|
|
||||||
export DATABASE_URL="postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=${DB_SSLMODE:-disable}"
|
DB_SSLMODE="${DB_SSLMODE:-require}"
|
||||||
echo "✅ DATABASE_URL=$DATABASE_URL"
|
export DATABASE_URL="postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=${DB_SSLMODE}"
|
||||||
|
|
||||||
# ✅ Pastikan postgres & redis ON (sesuaikan nama service compose kamu!)
|
echo "✅ Running migrations (production)..."
|
||||||
echo "✅ Ensuring postgres & redis running ..."
|
docker run --rm \
|
||||||
docker compose -f "$COMPOSE_FILE" up -d postgres-lti redis-lti || true
|
|
||||||
|
|
||||||
# ✅ Ambil network key dari compose
|
|
||||||
COMPOSE_NETWORK_KEY="$(docker compose -f "$COMPOSE_FILE" config | awk '/networks:/ {getline; print $1}' | tr -d ':')"
|
|
||||||
echo "✅ Compose network key: $COMPOSE_NETWORK_KEY"
|
|
||||||
|
|
||||||
# ✅ Cari network name yang dipakai docker
|
|
||||||
NETWORK_NAME="$(docker network ls --format '{{.Name}}' | grep "_${COMPOSE_NETWORK_KEY}$" | head -n 1)"
|
|
||||||
test -n "$NETWORK_NAME" || (echo "❌ Cannot find docker network for compose ($COMPOSE_NETWORK_KEY)" && exit 1)
|
|
||||||
|
|
||||||
echo "✅ Docker network detected: $NETWORK_NAME"
|
|
||||||
|
|
||||||
# ✅ Migrations dari repo (CI workspace)
|
|
||||||
echo "✅ Checking migrations from repo..."
|
|
||||||
ls -lah "$CI_PROJECT_DIR/internal/database/migrations"
|
|
||||||
|
|
||||||
echo "✅ Running migrations via migrate/migrate container"
|
|
||||||
set +e
|
|
||||||
out=$(docker run --rm \
|
|
||||||
--network "$NETWORK_NAME" \
|
|
||||||
-v "$CI_PROJECT_DIR/internal/database/migrations:/migrations:ro" \
|
-v "$CI_PROJECT_DIR/internal/database/migrations:/migrations:ro" \
|
||||||
migrate/migrate:v4.15.2 \
|
migrate/migrate:v4.15.2 \
|
||||||
-path=/migrations -database "$DATABASE_URL" up 2>&1)
|
-path=/migrations -database "$DATABASE_URL" up
|
||||||
code=$?
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "$out"
|
|
||||||
|
|
||||||
# ✅ Handle no change dengan benar (tidak false-success)
|
|
||||||
if echo "$out" | grep -qi "no change"; then
|
|
||||||
echo "✅ No change (already up to date)"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $code -ne 0 ]; then
|
|
||||||
echo "❌ Migration failed with exit code $code"
|
|
||||||
exit $code
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Migration applied successfully"
|
|
||||||
|
|
||||||
|
|
||||||
# =========================
|
# =========================
|
||||||
|
|||||||
Reference in New Issue
Block a user