name: TaxBaik CI/CD on: push: branches: - master jobs: build-and-deploy: runs-on: ubuntu-latest steps: - 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 - name: Copy migrations to publish run: | cp -r db/migrations ./publish/migrations || true - name: Generate build info run: | mkdir -p ./publish/wwwroot COMMIT_HASH=$(git rev-parse --short HEAD) BUILD_TIME=$(date -u +'%Y-%m-%d %H:%M:%S UTC') echo "Version: $COMMIT_HASH" > ./publish/wwwroot/version.txt echo "Built: $BUILD_TIME" >> ./publish/wwwroot/version.txt echo "✓ Version files created:" cat ./publish/wwwroot/version.txt - name: Deploy (통합 Web + Admin) run: | set -e TIMESTAMP=$(date +%Y%m%d_%H%M%S) DEPLOY_HOME="/home/kjh2064" DEPLOY_DIR="$DEPLOY_HOME/deployments/taxbaik_${TIMESTAMP}" echo "=== Deploying TaxBaik (통합 Web + Admin) (v$(git rev-parse --short HEAD)) ===" echo "Deploy dir: $DEPLOY_DIR" mkdir -p "$DEPLOY_DIR" || { echo "Failed to mkdir"; exit 1; } cp -r ./publish/* "$DEPLOY_DIR/" || { echo "Failed to copy"; exit 1; } ln -sfn "$DEPLOY_DIR" "$DEPLOY_HOME/taxbaik_active" || { echo "Failed to symlink"; exit 1; } echo "✓ Deployed to $DEPLOY_DIR" # systemd 서비스 재시작 (SSH를 통해 진행) echo "=== Restarting TaxBaik service via systemd ===" ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "sudo systemctl restart taxbaik && systemctl status taxbaik --no-pager | head -5" || echo "Service restart may require password" echo "✓ Deployment complete"