Files
wx_service/.github/workflows/deploy-prod.yml
T

58 lines
1.6 KiB
YAML

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