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 clean TaxBaik.sln -c Release dotnet build TaxBaik.sln -c Release --no-restore - name: Publish Web (통합 앱) run: dotnet publish TaxBaik.Web/ -c Release -o ./publish --no-restore - 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: $COMMIT_HASH" - name: Deploy (CI only, 통합 Web) 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 v$(git rev-parse --short HEAD) ===" mkdir -p "$DEPLOY_DIR" cp -r ./publish/* "$DEPLOY_DIR/" ln -sfn "$DEPLOY_DIR" "$DEPLOY_HOME/taxbaik_active" echo "✓ Deployed to $DEPLOY_DIR" # systemd가 새 아티팩트를 다시 읽도록 프로세스 종료 echo "=== Restarting service ===" pkill -f "TaxBaik.Web.dll" || true sleep 3 echo "✓ Deployment complete" - name: Verify deployment run: | sleep 5 HOME_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:5001/taxbaik/ || echo "000") LOGIN_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:5001/taxbaik/admin/login || echo "000") AUTH_BODY=$(curl -s -X POST http://127.0.0.1:5001/taxbaik/api/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin123"}' || echo "") echo "Home Status: $HOME_STATUS" echo "Login Status: $LOGIN_STATUS" echo "Auth Body: $AUTH_BODY" if [ "$HOME_STATUS" = "200" ] && [ "$LOGIN_STATUS" = "200" ] && echo "$AUTH_BODY" | grep -q '"token"'; then echo "✓ Service is running" else echo "⚠ Service may not be running (home: $HOME_STATUS, login: $LOGIN_STATUS, auth: $AUTH_BODY)" fi