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:
Vendored
+34
-20
@@ -4,7 +4,14 @@ pipeline {
|
||||
options {
|
||||
timestamps()
|
||||
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 {
|
||||
@@ -19,39 +26,46 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage('Repo layout') {
|
||||
stage('Sync to PROD_DIR') {
|
||||
steps {
|
||||
sh '''
|
||||
echo "=== top-level ==="
|
||||
ls -la | head -30
|
||||
echo
|
||||
echo "=== compose files ==="
|
||||
ls -la docker-compose*.yml 2>/dev/null || true
|
||||
set -e
|
||||
echo "Syncing latest main to ${PROD_DIR}"
|
||||
cd "${PROD_DIR}"
|
||||
git fetch --all --prune
|
||||
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 {
|
||||
sh '''
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
echo "docker version:"
|
||||
docker --version
|
||||
echo
|
||||
echo "=== compose config (syntax only, no apply) ==="
|
||||
docker compose -f docker-compose.yml config --quiet \
|
||||
&& echo "OK: docker-compose.yml is valid" \
|
||||
|| echo "WARN: compose validation failed (non-fatal for now)"
|
||||
else
|
||||
echo "docker not available in this build environment, skipping"
|
||||
fi
|
||||
set -e
|
||||
cd "${PROD_DIR}"
|
||||
echo "=== docker compose config (project: ${COMPOSE_PROJECT_NAME}) ==="
|
||||
docker compose config --quiet
|
||||
echo "OK: compose config valid"
|
||||
echo
|
||||
echo "=== compose ps (project ${COMPOSE_PROJECT_NAME} containers, if any) ==="
|
||||
docker compose ps || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
// Phase 2 (나중 활성화): 실제 배포 stage
|
||||
// stage('Deploy') {
|
||||
// steps {
|
||||
// sh 'cd "${PROD_DIR}" && docker compose up -d --remove-orphans'
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
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" }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user