name: deploy-prod-non-docker on: push: branches: - main workflow_dispatch: concurrency: group: wx-service-prod cancel-in-progress: true jobs: deploy: runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout uses: actions/checkout@v4 - name: Prepare SSH env: SSH_KEY: ${{ secrets.PROD_SSH_KEY }} HOST: ${{ secrets.PROD_HOST }} PORT: ${{ secrets.PROD_PORT }} run: | set -e if [ -z "$SSH_KEY" ] || [ -z "$HOST" ]; then echo "Missing required secrets: PROD_SSH_KEY / PROD_HOST" exit 1 fi mkdir -p ~/.ssh chmod 700 ~/.ssh printf '%s\n' "$SSH_KEY" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -p "${PORT:-22}" "$HOST" >> ~/.ssh/known_hosts - name: Deploy on server (git pull + go build) env: HOST: ${{ secrets.PROD_HOST }} PORT: ${{ secrets.PROD_PORT }} USER: ${{ secrets.PROD_USER }} run: | set -e SSH_OPTS="-o BatchMode=yes -o ConnectTimeout=15 -o ServerAliveInterval=10 -o ServerAliveCountMax=6" ssh ${SSH_OPTS} -p "${PORT:-22}" "${USER:-root}@${HOST}" \ "APP_DIR='/www/wwwroot/wx_service' \ DIST_DIR='/www/wwwroot/wx_service/dist' \ DEPLOY_REF='${GITHUB_SHA}' \ RELEASE_ID='${GITHUB_SHA}' \ GO_VERSION='1.23.6' \ SERVICE_NAME='wx_service' \ RUN_USER='www' \ RUN_GROUP='www' \ PORT='8080' \ bash -s" < scripts/ops/deploy_from_source.sh