Files
yuxuanhui 34a2e3b751
Deploy backend / deploy (push) Has been cancelled
feat: 添加生产环境部署工作流和相关文档
2026-09-29 19:17:46 +08:00

54 lines
1.5 KiB
YAML

name: Deploy backend
on:
push:
branches: [main]
paths:
- backend/**
- .gitea/workflows/deploy-backend.yaml
workflow_dispatch:
permissions:
contents: read
jobs:
deploy:
runs-on: tencent-prod
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Build and deploy on the Docker host
shell: bash
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
WECHAT_APP_ID: ${{ secrets.WECHAT_APP_ID }}
WECHAT_APP_SECRET: ${{ secrets.WECHAT_APP_SECRET }}
run: |
set -euo pipefail
cd backend
exec 9>/tmp/ballet-island-deploy.lock
flock -w 600 9
latest_main="$(git ls-remote origin refs/heads/main | cut -f1)"
test -n "$latest_main"
if [ "$(git rev-parse HEAD)" != "$latest_main" ]; then
echo "Skipping deployment: a newer main commit exists."
exit 0
fi
export IMAGE_TAG="$(git rev-parse --short=12 HEAD)"
compose=(docker compose --env-file /dev/null -f compose.prod.yaml)
"${compose[@]}" config --quiet
"${compose[@]}" build api
"${compose[@]}" up -d --wait --wait-timeout 180
curl --fail --silent --show-error http://127.0.0.1:8080/readyz
- name: Show container status
if: always()
shell: bash
run: |
docker ps --all \
--filter label=com.docker.compose.project=ballet-island \
--format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'