diff --git a/.claude/scheduled_tasks.lock b/.claude/scheduled_tasks.lock new file mode 100644 index 0000000..1d16352 --- /dev/null +++ b/.claude/scheduled_tasks.lock @@ -0,0 +1 @@ +{"sessionId":"49d9d3ba-3c81-4fe7-ab85-f0734baf92f6","pid":42320,"acquiredAt":1782462035015} \ No newline at end of file diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d0957d2..4e464e3 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,7 +6,7 @@ on: - master jobs: - build-and-deploy: + build: runs-on: ubuntu-latest steps: @@ -30,75 +30,17 @@ jobs: - name: Publish Admin run: dotnet publish TaxBaik.Admin/ -c Release -o ./publish/admin - - name: Copy migrations to publish + - name: Copy migrations run: | cp -r db/migrations ./publish/web/migrations || true cp -r db/migrations ./publish/admin/migrations || true - - name: Generate build info + - name: Generate version info run: | mkdir -p ./publish/web/wwwroot ./publish/admin/wwwroot COMMIT_HASH=$(git rev-parse --short HEAD) BUILD_TIME=$(date -u +'%Y-%m-%d %H:%M:%S UTC') echo "Version: $COMMIT_HASH" > ./publish/web/wwwroot/version.txt echo "Built: $BUILD_TIME" >> ./publish/web/wwwroot/version.txt - echo "Version: $COMMIT_HASH" > ./publish/admin/wwwroot/version.txt - echo "Built: $BUILD_TIME" >> ./publish/admin/wwwroot/version.txt - echo "✓ Version files created:" - cat ./publish/web/wwwroot/version.txt - - - name: Deploy Web - run: | - set -e - WEB_TIMESTAMP=$(date +%Y%m%d_%H%M%S) - DEPLOY_HOME="/home/kjh2064" - WEB_DEPLOY_DIR="$DEPLOY_HOME/deployments/taxbaik_${WEB_TIMESTAMP}" - - echo "=== Deploying Web (v$(git rev-parse --short HEAD)) ===" - echo "Deploy dir: $WEB_DEPLOY_DIR" - mkdir -p "$WEB_DEPLOY_DIR" || { echo "Failed to mkdir"; exit 1; } - cp -r ./publish/web "$WEB_DEPLOY_DIR/" || { echo "Failed to copy"; exit 1; } - ln -sfn "$WEB_DEPLOY_DIR/web" "$DEPLOY_HOME/taxbaik_active" || { echo "Failed to symlink"; exit 1; } - echo "✓ Web deployed to $WEB_DEPLOY_DIR" - - echo "=== Stopping TaxBaik.Web ===" - pkill -9 -f "TaxBaik.Web" || echo "No process to kill" - sleep 3 - - echo "=== Starting TaxBaik.Web ===" - cd "$DEPLOY_HOME/taxbaik_active" || { echo "Failed to cd"; exit 1; } - export ConnectionStrings__Default="Host=localhost;Database=taxbaikdb;Username=taxbaik;Password=taxbaik123" - export ASPNETCORE_ENVIRONMENT=Production - export ASPNETCORE_URLS=http://127.0.0.1:5001 - nohup /usr/local/dotnet/dotnet TaxBaik.Web.dll > web.log 2>&1 & - sleep 2 - echo "✓ Web process started" - ps aux | grep TaxBaik.Web | grep -v grep || echo "Process not found" - - - name: Deploy Admin - run: | - set -e - ADMIN_TIMESTAMP=$(date +%Y%m%d_%H%M%S) - DEPLOY_HOME="/home/kjh2064" - ADMIN_DEPLOY_DIR="$DEPLOY_HOME/deployments/taxbaik_admin_${ADMIN_TIMESTAMP}" - - echo "=== Deploying Admin (v$(git rev-parse --short HEAD)) ===" - echo "Deploy dir: $ADMIN_DEPLOY_DIR" - mkdir -p "$ADMIN_DEPLOY_DIR" || { echo "Failed to mkdir"; exit 1; } - cp -r ./publish/admin "$ADMIN_DEPLOY_DIR/" || { echo "Failed to copy"; exit 1; } - ln -sfn "$ADMIN_DEPLOY_DIR/admin" "$DEPLOY_HOME/taxbaik_admin_active" || { echo "Failed to symlink"; exit 1; } - echo "✓ Admin deployed to $ADMIN_DEPLOY_DIR" - - echo "=== Stopping TaxBaik.Admin ===" - pkill -9 -f "TaxBaik.Admin" || echo "No process to kill" - sleep 3 - - echo "=== Starting TaxBaik.Admin ===" - cd "$DEPLOY_HOME/taxbaik_admin_active" || { echo "Failed to cd"; exit 1; } - export ConnectionStrings__Default="Host=localhost;Database=taxbaikdb;Username=taxbaik;Password=taxbaik123" - export ASPNETCORE_ENVIRONMENT=Production - export ASPNETCORE_URLS=http://127.0.0.1:5002 - nohup /usr/local/dotnet/dotnet TaxBaik.Admin.dll > admin.log 2>&1 & - sleep 2 - echo "✓ Admin process started" - ps aux | grep TaxBaik.Admin | grep -v grep || echo "Process not found" + cp ./publish/web/wwwroot/version.txt ./publish/admin/wwwroot/version.txt + echo "✓ Build complete - Version: $COMMIT_HASH" diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..693cedb --- /dev/null +++ b/deploy.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -e + +DEPLOY_HOME="/home/kjh2064" +WEB_TIMESTAMP=$(date +%Y%m%d_%H%M%S) + +echo "===== 🚀 TaxBaik 배포 스크립트 =====" +echo "Web Timestamp: $WEB_TIMESTAMP" + +# Web 배포 +echo "=== Deploying Web ===" +WEB_DEPLOY_DIR="$DEPLOY_HOME/deployments/taxbaik_${WEB_TIMESTAMP}" +mkdir -p "$WEB_DEPLOY_DIR" + +if [ -z "$1" ]; then + echo "Error: Publish directory required" + exit 1 +fi + +# 첫 번째 인자는 publish 경로 +cp -r "$1/web" "$WEB_DEPLOY_DIR/" +ln -sfn "$WEB_DEPLOY_DIR/web" "$DEPLOY_HOME/taxbaik_active" +echo "✓ Web symlink updated: $WEB_DEPLOY_DIR/web" + +# Admin 배포 +echo "=== Deploying Admin ===" +ADMIN_TIMESTAMP=$(date +%Y%m%d_%H%M%S) +ADMIN_DEPLOY_DIR="$DEPLOY_HOME/deployments/taxbaik_admin_${ADMIN_TIMESTAMP}" +mkdir -p "$ADMIN_DEPLOY_DIR" +cp -r "$1/admin" "$ADMIN_DEPLOY_DIR/" +ln -sfn "$ADMIN_DEPLOY_DIR/admin" "$DEPLOY_HOME/taxbaik_admin_active" +echo "✓ Admin symlink updated: $ADMIN_DEPLOY_DIR/admin" + +# 프로세스 재시작 +echo "=== Restarting processes ===" +pkill -9 -f "TaxBaik.Web" || true +pkill -9 -f "TaxBaik.Admin" || true +sleep 3 + +echo "=== Starting Web ===" +cd "$DEPLOY_HOME/taxbaik_active" +export ConnectionStrings__Default="Host=localhost;Database=taxbaikdb;Username=taxbaik;Password=taxbaik123" +export ASPNETCORE_ENVIRONMENT=Production +export ASPNETCORE_URLS=http://127.0.0.1:5001 +nohup /usr/local/dotnet/dotnet TaxBaik.Web.dll > web.log 2>&1 & +sleep 2 +ps aux | grep TaxBaik.Web | grep -v grep && echo "✓ Web started" || echo "✗ Web failed" + +echo "=== Starting Admin ===" +cd "$DEPLOY_HOME/taxbaik_admin_active" +export ASPNETCORE_URLS=http://127.0.0.1:5002 +nohup /usr/local/dotnet/dotnet TaxBaik.Admin.dll > admin.log 2>&1 & +sleep 2 +ps aux | grep TaxBaik.Admin | grep -v grep && echo "✓ Admin started" || echo "✗ Admin failed" + +echo "" +echo "===== ✅ 배포 완료 =====" +cat "$DEPLOY_HOME/taxbaik_active/wwwroot/version.txt" 2>/dev/null || echo "Version file not found"