4 Commits

Author SHA1 Message Date
SDI
662f720c6a fix: use updated backup tooling before deploy cleanup
All checks were successful
ITAM Code Check / build-and-config-check (push) Successful in 20s
ITAM Docker Build Check / docker-build-check (push) Successful in 19s
2026-06-19 15:58:39 +09:00
SDI
5678e28c66 fix: load local env file correctly in backup script
All checks were successful
ITAM Code Check / build-and-config-check (push) Successful in 20s
2026-06-19 15:53:04 +09:00
SDI
15c5cbaca2 Merge remote-tracking branch 'origin/main'
All checks were successful
ITAM Code Check / build-and-config-check (push) Successful in 21s
ITAM Docker Build Check / docker-build-check (push) Successful in 26s
2026-06-19 15:47:18 +09:00
6848baae5f Merge pull request 'feat: 자산관리 시스템 도커 운영 배포 환경 및 CI/CD 구축' (#21) from feature/docker-deploy into main
All checks were successful
ITAM Docker Build Check / docker-build-check (push) Successful in 18s
ITAM Code Check / build-and-config-check (push) Successful in 20s
Reviewed-on: #21
2026-06-19 10:50:17 +09:00
2 changed files with 14 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ on:
target_branch:
description: "Branch to deploy"
required: true
default: "Dockerizing"
default: "main"
type: string
jobs:
@@ -83,6 +83,10 @@ jobs:
ssh "${PROD_USER}@${PROD_HOST}" "mkdir -p '${PROD_DEPLOY_PATH}'"
ssh "${PROD_USER}@${PROD_HOST}" "if [ ! -d '${PROD_DEPLOY_PATH}/.git' ]; then git clone '${PROD_GIT_URL}' '${PROD_DEPLOY_PATH}'; else cd '${PROD_DEPLOY_PATH}' && git remote set-url origin '${PROD_GIT_URL}'; fi"
ssh "${PROD_USER}@${PROD_HOST}" "cd '${PROD_DEPLOY_PATH}' && git fetch origin '${TARGET_BRANCH}' && git checkout -B '${TARGET_BRANCH}' FETCH_HEAD && git reset --hard FETCH_HEAD"
EFFECTIVE_BACKUP_ROOT="${PROD_BACKUP_ROOT:-/home/user/dachs_backups}"
ssh "${PROD_USER}@${PROD_HOST}" "export DEPLOY_PATH='${PROD_DEPLOY_PATH}' BACKUP_ROOT='${EFFECTIVE_BACKUP_ROOT}'; sh -eu -s" <<'REMOTE_BACKUP'
@@ -97,19 +101,17 @@ jobs:
mkdir -p "$BACKUP_ROOT"
echo "Starting pre-deploy backup..."
cd "$DEPLOY_PATH"
if [ -f Makefile ] && [ -f scripts/backup.sh ]; then
if [ -f Makefile ] && [ -f scripts/backup.sh ] && [ -f .env ]; then
make predeploy-backup ENV_FILE=.env BACKUP_ROOT="$BACKUP_ROOT"
else
echo "Skipping pre-deploy backup because current deployed revision does not contain backup tooling."
echo "Skipping pre-deploy backup because required backup files are missing in current deployment."
fi
else
echo "Skipping pre-deploy backup because no existing deployment was found."
fi
REMOTE_BACKUP
ssh "${PROD_USER}@${PROD_HOST}" "if [ ! -d '${PROD_DEPLOY_PATH}/.git' ]; then git clone '${PROD_GIT_URL}' '${PROD_DEPLOY_PATH}'; else cd '${PROD_DEPLOY_PATH}' && git remote set-url origin '${PROD_GIT_URL}'; fi"
ssh "${PROD_USER}@${PROD_HOST}" "cd '${PROD_DEPLOY_PATH}' && git fetch origin '${TARGET_BRANCH}' && git checkout -B '${TARGET_BRANCH}' FETCH_HEAD && git reset --hard FETCH_HEAD && git clean -fd"
ssh "${PROD_USER}@${PROD_HOST}" "cd '${PROD_DEPLOY_PATH}' && git clean -fd"
ssh "${PROD_USER}@${PROD_HOST}" "cd '${PROD_DEPLOY_PATH}' && mkdir -p uploads logs/nginx"

View File

@@ -28,9 +28,14 @@ has_command() {
load_env() {
[ -f "$ENV_FILE" ] || fail "Env file not found: $ENV_FILE"
case "$ENV_FILE" in
*/*) env_path="$ENV_FILE" ;;
*) env_path="./$ENV_FILE" ;;
esac
set -a
# shellcheck disable=SC1090
. "$ENV_FILE"
. "$env_path"
set +a
: "${DB_HOST:?DB_HOST is required in $ENV_FILE}"