name: Snapshot Admin Deployment on: push: branches: - main workflow_dispatch: concurrency: group: snapshot-admin-deploy-main cancel-in-progress: true jobs: build-and-deploy: runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup .NET SDK uses: actions/setup-dotnet@v3 with: dotnet-version: '10.0.x' - name: Publish Blazor Web App run: | echo "[deploy] publishing .NET 10 Blazor app" dotnet publish src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj -c Release -o ./publish - name: Compress Artifact run: | echo "[deploy] compressing publish output" tar -czf quantengine.tar.gz -C ./publish . - name: Deploy to Host via Local SSH env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | echo "[deploy] setting up SSH and deploying shadow copy" mkdir -p ~/.ssh echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H 178.104.200.7 >> ~/.ssh/known_hosts # Upload artifact and deploy script to host ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 "mkdir -p /home/kjh2064/tmp" scp -i ~/.ssh/id_ed25519 quantengine.tar.gz kjh2064@178.104.200.7:/home/kjh2064/tmp/quantengine.tar.gz # Execute hot deploy script ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 "chmod +x /home/kjh2064/tmp/deploy.sh 2>/dev/null || true" scp -i ~/.ssh/id_ed25519 tools/deploy_quantengine.sh kjh2064@178.104.200.7:/home/kjh2064/tmp/deploy.sh ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 "chmod +x /home/kjh2064/tmp/deploy.sh && /home/kjh2064/tmp/deploy.sh"