2eb4275e6f
deploy-{server,site,client}.sh 目标主机参数化(DEPLOY_HOST/USER/SSH_KEY),
不传时行为与现状完全一致(只发 EC2)。workflow 的 Deploy 拆成 EC2(前)+
Ali(后,if:always + continue-on-error,影子目标失败不挡线上)。deploy-server
的 ali 分支只换二进制 + reload 独立 nginx(listen 443),不启动 jiu(阿里 DB
为只读从库,切流提升为主后才起)。新增 deploy/nginx-jiu-ali.conf 并打进
configs.tar.gz。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZ4DskSRKsSiheQonFtQvx
71 lines
2.3 KiB
YAML
71 lines
2.3 KiB
YAML
name: Deploy Server
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- 'server-v[0-9]*.[0-9]*.[0-9]*'
|
||
|
||
concurrency:
|
||
group: deploy-server
|
||
cancel-in-progress: false
|
||
|
||
jobs:
|
||
release-deploy-server:
|
||
runs-on: mac
|
||
env:
|
||
GOPROXY: https://goproxy.cn,direct
|
||
PUB_HOSTED_URL: https://pub.flutter-io.cn
|
||
FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Provision (idempotent — auto-runs if host not initialized)
|
||
run: sh scripts/ci/provision-mac.sh
|
||
|
||
- name: Compile (Linux backend + configs)
|
||
run: sh scripts/ci/compile-backend.sh "${{ gitea.ref_name }}"
|
||
|
||
- name: Test (go test)
|
||
run: sh scripts/ci/test.sh server
|
||
|
||
- name: Release
|
||
env:
|
||
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
||
FORGEJO_URL: ${{ secrets.FORGEJO_URL }}
|
||
GITEA_REPOSITORY: ${{ gitea.repository }}
|
||
run: sh scripts/ci/release-server.sh "${{ gitea.ref_name }}"
|
||
|
||
- name: Deploy → EC2
|
||
env:
|
||
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
||
FORGEJO_URL: ${{ secrets.FORGEJO_URL }}
|
||
GITEA_REPOSITORY: ${{ gitea.repository }}
|
||
DEPLOY_TARGET: ec2
|
||
EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
|
||
EC2_HOST: ${{ secrets.EC2_HOST }}
|
||
EC2_USER: ${{ secrets.EC2_USER }}
|
||
run: sh scripts/ci/deploy-server.sh "${{ gitea.ref_name }}"
|
||
|
||
# 迁移期影子目标:部署到阿里机(只换二进制 + reload 独立 nginx,jiu 保持 stopped)。
|
||
# if: always() → EC2 失败也照样尝试;continue-on-error → 阿里失败不让流水线变红。
|
||
- name: Deploy → Ali (migration shadow)
|
||
if: always()
|
||
continue-on-error: true
|
||
env:
|
||
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
||
FORGEJO_URL: ${{ secrets.FORGEJO_URL }}
|
||
GITEA_REPOSITORY: ${{ gitea.repository }}
|
||
DEPLOY_TARGET: ali
|
||
DEPLOY_SSH_KEY: ${{ secrets.ALI_SSH_KEY }}
|
||
DEPLOY_HOST: ${{ secrets.ALI_HOST }}
|
||
DEPLOY_USER: ${{ secrets.ALI_USER }}
|
||
run: sh scripts/ci/deploy-server.sh "${{ gitea.ref_name }}"
|
||
|
||
- name: Notify
|
||
if: always()
|
||
env:
|
||
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
|
||
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||
run: sh scripts/ci/notify.sh "${{ gitea.ref_name }}" "${{ job.status }}"
|