From 163af5426cb9d28dc4e625f59027d6a499a1dd6c Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 26 Jun 2026 18:31:09 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20Gitea=20Actions=20=EB=B0=B0=ED=8F=AC=20CI?= =?UTF-8?q?=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EC=99=84?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 배포 자동화 시스템을 완성합니다: ## 변경사항 ✅ dotnet restore, build, publish 단계 추가 ✅ 버전 정보 자동 생성 ✅ Web/Admin 배포 단계 분리 ✅ systemd 자동 재시작 활용 ## 배포 흐름 1. 코드 체크아웃 2. .NET 10 설정 3. 의존성 복구 및 빌드 4. Web/Admin 발행 5. 배포 디렉토리에 복사 6. 심링크 업데이트 7. systemd가 자동으로 서비스 재시작 ## 검증 - Web: http://127.0.0.1:5001 - Admin: http://127.0.0.1:5002 --- .gitea/workflows/deploy.yml | 75 +++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 1e8ae67..e63541f 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,8 +6,77 @@ on: - master jobs: - trigger-deploy: + build-and-deploy: runs-on: ubuntu-latest + steps: - - name: Trigger deployment webhook - run: echo "✓ CI triggered - server will deploy via git hook" + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '10.0' + + - name: Restore dependencies + run: dotnet restore TaxBaik.sln + + - name: Build solution + run: dotnet build TaxBaik.sln -c Release --no-restore + + - name: Publish Web + run: dotnet publish TaxBaik.Web/ -c Release -o ./publish/web + + - name: Publish Admin + run: dotnet publish TaxBaik.Admin/ -c Release -o ./publish/admin + + - name: Copy migrations to publish + run: | + cp -r db/migrations ./publish/web/migrations || true + cp -r db/migrations ./publish/admin/migrations || true + + - name: Generate build 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 + cp ./publish/web/wwwroot/version.txt ./publish/admin/wwwroot/version.txt + echo "✓ Version files created" + + - 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)) ===" + mkdir -p "$WEB_DEPLOY_DIR" + cp -r ./publish/web "$WEB_DEPLOY_DIR/" + ln -sfn "$WEB_DEPLOY_DIR/web" "$DEPLOY_HOME/taxbaik_active" + echo "✓ Web deployed" + + - 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)) ===" + mkdir -p "$ADMIN_DEPLOY_DIR" + cp -r ./publish/admin "$ADMIN_DEPLOY_DIR/" + ln -sfn "$ADMIN_DEPLOY_DIR/admin" "$DEPLOY_HOME/taxbaik_admin_active" + echo "✓ Admin deployed" + + - name: Restart services + run: | + echo "=== Restarting services ===" + pkill -9 -f "TaxBaik.Web" || echo "No Web process to kill" + pkill -9 -f "TaxBaik.Admin" || echo "No Admin process to kill" + sleep 2 + + echo "=== Services will restart automatically via systemd ===" + echo "✓ Deployment complete"