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 run: | echo "[deploy] checkout main for snapshot admin runtime" if [ -d .git ]; then git remote set-url origin http://x-access-token:${{ secrets.GITHUB_TOKEN }}@178.104.200.7/kjh2064/QuantEngineByItz.git else git init git remote add origin http://x-access-token:${{ secrets.GITHUB_TOKEN }}@178.104.200.7/kjh2064/QuantEngineByItz.git fi git fetch origin main --depth=1 git reset --hard FETCH_HEAD - 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" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H 178.104.200.7 >> ~/.ssh/known_hosts # Upload artifact and deploy script to host ssh kjh2064@178.104.200.7 "mkdir -p /home/kjh2064/tmp" scp quantengine.tar.gz kjh2064@178.104.200.7:/home/kjh2064/tmp/quantengine.tar.gz # Execute hot deploy script ssh kjh2064@178.104.200.7 "chmod +x /home/kjh2064/tmp/deploy.sh 2>/dev/null || true" scp tools/deploy_quantengine.sh kjh2064@178.104.200.7:/home/kjh2064/tmp/deploy.sh ssh kjh2064@178.104.200.7 "chmod +x /home/kjh2064/tmp/deploy.sh && /home/kjh2064/tmp/deploy.sh"