Jenkins production 배포 환경 추가 (운영서버 배포 테스트까지만 적용)
This commit is contained in:
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
pipeline {
|
||||
agent { label 'mac-mini' }
|
||||
|
||||
environment {
|
||||
SSH_TARGET = "happyhome@jisangs.synology.me"
|
||||
SSH_PORT = "21022"
|
||||
REMOTE_TMP = "/volume1/docker/service/jisangs/chocomae-stage/tmp"
|
||||
DEPLOY_DIR = "deploy/stage-jenkins"
|
||||
ARCHIVE = "chocomae-build-${BUILD_NUMBER}.tar.gz"
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Package') {
|
||||
steps {
|
||||
sh 'chmod +x ${DEPLOY_DIR}/*.sh && ./${DEPLOY_DIR}/package.sh'
|
||||
}
|
||||
}
|
||||
stage('Upload') {
|
||||
steps {
|
||||
sh '''
|
||||
ssh -p ${SSH_PORT} ${SSH_TARGET} "mkdir -p ${REMOTE_TMP}"
|
||||
scp -O -P ${SSH_PORT} ${ARCHIVE} ${DEPLOY_DIR}/remote_deploy.sh ${SSH_TARGET}:${REMOTE_TMP}/
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Deploy') {
|
||||
steps {
|
||||
sh '''
|
||||
ssh -p ${SSH_PORT} ${SSH_TARGET} \
|
||||
"bash ${REMOTE_TMP}/remote_deploy.sh ${ARCHIVE}"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
sh 'rm -fv ${ARCHIVE} || true'
|
||||
}
|
||||
success {
|
||||
echo "✓ chocomae-stage 배포 성공 (build #${BUILD_NUMBER})"
|
||||
}
|
||||
failure {
|
||||
echo "✗ 배포 실패 — Deploy stage였다면 원격에서 자동 롤백됨. Console Output 확인"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
# 배포 환경 설정 — 모든 스크립트가 공유
|
||||
|
||||
NAS_USER="happyhome"
|
||||
NAS_HOST="jisangs.synology.me"
|
||||
NAS_SSH_PORT="21022"
|
||||
|
||||
NAS_BASE="/volume1/docker/service/jisangs/chocomae-stage"
|
||||
NAS_TMP_DIR="${NAS_BASE}/tmp"
|
||||
NAS_BACKUP_DIR="${NAS_BASE}/backup"
|
||||
STAGE_HTML_DIR="${NAS_BASE}/html"
|
||||
STAGE_DEPLOY_DIR="${STAGE_HTML_DIR}/mouse_typing"
|
||||
STAGE_CONTAINER_NAME="chocomae-stage-http" # 실제 컨테이너명 확인
|
||||
|
||||
# BUILD_NUMBER는 Jenkins가 주입 — 로컬 수동 실행 시엔 manual-시각 사용
|
||||
ARCHIVE_NAME="chocomae-build-${BUILD_NUMBER:-manual-$(date +%Y%m%d%H%M%S)}.tar.gz"
|
||||
@@ -1,13 +1,35 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
source "${SCRIPT_DIR}/config.sh"
|
||||
|
||||
# BUILD_NUMBER는 Jenkins가 주입 — 로컬 수동 실행 시엔 manual-시각 사용
|
||||
ARCHIVE_NAME="chocomae-build-${BUILD_NUMBER:-manual-$(date +%Y%m%d%H%M%S)}.tar.gz"
|
||||
|
||||
EXCLUDES=(
|
||||
".DS_Store" ".git" ".idea" ".claude" ".gitignore"
|
||||
"__pycache__" "*.pyc" "node_modules" "venv"
|
||||
"*.zip" "*.tar" "*.tar.gz" "*.pdf" "*.psd" "*.log"
|
||||
"src/web/server/setup/service_db_setting.php"
|
||||
|
||||
# phaser-input 플러그인 개발 아티팩트 (런타임은 build/phaser-input.min.js만 필요)
|
||||
"src/util/phaser-input-master/example"
|
||||
"src/util/phaser-input-master/ts"
|
||||
"src/util/phaser-input-master/config"
|
||||
"src/util/phaser-input-master/Gruntfile.js"
|
||||
"src/util/phaser-input-master/tslint.json"
|
||||
"src/util/phaser-input-master/package.json"
|
||||
"src/util/phaser-input-master/package-lock.json"
|
||||
|
||||
# DB 초기 세팅 전용 — 웹 루트에 있으면 노출 위험
|
||||
"src/web/sql"
|
||||
|
||||
# deprecated 배치 스크립트
|
||||
"src/php-cli/batch/old"
|
||||
|
||||
# 백업/문서
|
||||
"src/web/css/color_button_backup.css"
|
||||
"README.md"
|
||||
"SECURITY.md"
|
||||
"LICENSE"
|
||||
)
|
||||
|
||||
TAR_EXCLUDE_ARGS=()
|
||||
|
||||
@@ -43,9 +43,8 @@ mkdir -p "${NEW_DIR}"
|
||||
tar xzf "${NAS_TMP_DIR}/${ARCHIVE_NAME}" -C "${NEW_DIR}"
|
||||
|
||||
echo "=== [2/5] stage 설정 적용 ==="
|
||||
cp -v "${NEW_DIR}/src/game/lib/global/global_variables_debug.js" \
|
||||
"${NEW_DIR}/src/game/lib/global/global_variables.js"
|
||||
cp -v "${NEW_DIR}/src/web/server/setup/NA_stage_db_setting.php" \
|
||||
rm "${NEW_DIR}/src/game/lib/global/global_variables_release.js"
|
||||
mv -v "${NEW_DIR}/src/web/server/setup/NA_stage_db_setting.php" \
|
||||
"${NEW_DIR}/src/web/server/setup/service_db_setting.php"
|
||||
|
||||
DB_CONFIG="${NEW_DIR}/src/web/server/setup/service_db_setting.php"
|
||||
|
||||
Reference in New Issue
Block a user