ci: Phase 1 pipeline — sync to /home/kyu/trading-prod + compose config validate

Phase 1 (now): clone main → /home/kyu/trading-prod, run `docker compose config`
  with project name 'trading-prod' (separate from running trading-ai stack).
  No containers are created or touched.

Phase 2 (later): uncomment Deploy stage to actually run `docker compose up -d`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
kyu
2026-05-28 00:22:49 +09:00
parent f87756ee2e
commit b8c9f2f01b
Vendored
+34 -20
View File
@@ -4,7 +4,14 @@ pipeline {
options { options {
timestamps() timestamps()
buildDiscarder(logRotator(numToKeepStr: '20')) buildDiscarder(logRotator(numToKeepStr: '20'))
timeout(time: 10, unit: 'MINUTES') timeout(time: 15, unit: 'MINUTES')
}
environment {
PROD_DIR = '/home/kyu/trading-prod'
// Phase 1: project name 분리. running stack(trading-ai)과 충돌 방지.
COMPOSE_PROJECT_NAME = 'trading-prod'
HOME = '/home/kyu'
} }
stages { stages {
@@ -19,39 +26,46 @@ pipeline {
} }
} }
stage('Repo layout') { stage('Sync to PROD_DIR') {
steps { steps {
sh ''' sh '''
echo "=== top-level ===" set -e
ls -la | head -30 echo "Syncing latest main to ${PROD_DIR}"
echo cd "${PROD_DIR}"
echo "=== compose files ===" git fetch --all --prune
ls -la docker-compose*.yml 2>/dev/null || true git reset --hard origin/main
git clean -fdx -e .env -e qdrant-config/config.yaml
echo "--- after sync ---"
git log -1 --oneline
''' '''
} }
} }
stage('Validate compose') { stage('Validate compose (no deploy)') {
steps { steps {
sh ''' sh '''
if command -v docker >/dev/null 2>&1; then set -e
echo "docker version:" cd "${PROD_DIR}"
docker --version echo "=== docker compose config (project: ${COMPOSE_PROJECT_NAME}) ==="
echo docker compose config --quiet
echo "=== compose config (syntax only, no apply) ===" echo "OK: compose config valid"
docker compose -f docker-compose.yml config --quiet \ echo
&& echo "OK: docker-compose.yml is valid" \ echo "=== compose ps (project ${COMPOSE_PROJECT_NAME} containers, if any) ==="
|| echo "WARN: compose validation failed (non-fatal for now)" docker compose ps || true
else
echo "docker not available in this build environment, skipping"
fi
''' '''
} }
} }
// Phase 2 (나중 활성화): 실제 배포 stage
// stage('Deploy') {
// steps {
// sh 'cd "${PROD_DIR}" && docker compose up -d --remove-orphans'
// }
// }
} }
post { post {
success { echo "SUCCESS — no deployment performed (by design)" } success { echo "Phase 1 SUCCESS — PROD_DIR synced & validated. No containers touched." }
failure { echo "FAILED — check logs" } failure { echo "FAILED — check logs" }
} }
} }