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/web - name: Publish Admin run: dotnet publish TaxBaik.Admin/ -c Release -o ./publish/admin - name: Copy migrations run: | cp -r db/migrations ./publish/web/migrations || true cp -r db/migrations ./publish/admin/migrations || true - 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 cp ./publish/web/wwwroot/version.txt ./publish/admin/wwwroot/version.txt echo "Build version: $COMMIT_HASH" - 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 "=== Stopping TaxBaik.Web ===" pkill -9 -f "TaxBaik.Web" || echo "No process" sleep 2 echo "=== Starting TaxBaik.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 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 "=== Stopping TaxBaik.Admin ===" pkill -9 -f "TaxBaik.Admin" || echo "No process" sleep 2 echo "=== Starting TaxBaik.Admin ===" cd "$DEPLOY_HOME/taxbaik_admin_active" 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 deployed" - name: Verify deployment run: | DEPLOY_HOME="/home/kjh2064" echo "=== Deployment Verification ===" echo "Latest version:" cat "$DEPLOY_HOME/taxbaik_active/wwwroot/version.txt" echo "" echo "Web process:" ps aux | grep TaxBaik.Web | grep -v grep || echo "Process not found" echo "" echo "Admin process:" ps aux | grep TaxBaik.Admin | grep -v grep || echo "Process not found"