chore: 加一键发布脚本 deploy.sh(编译→传ali→备份→重启→探活,失败自动回滚)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019UQmqWmV67sXGLrb3U1XXn
This commit is contained in:
@@ -60,8 +60,14 @@ pay/
|
|||||||
|
|
||||||
## 构建部署
|
## 构建部署
|
||||||
|
|
||||||
|
**一键发布到 ali(推荐)**:
|
||||||
|
```bash
|
||||||
|
./deploy.sh # 交叉编译 linux/amd64 → 传 ali → 备份 → 重启 pay → 探活(失败自动回滚)
|
||||||
|
```
|
||||||
|
|
||||||
|
手动构建:
|
||||||
```bash
|
```bash
|
||||||
go build -o payd . # 纯 Go,无需 gcc,可直接拷到阿里云 Linux 运行
|
go build -o payd . # 纯 Go,无需 gcc,可直接拷到阿里云 Linux 运行
|
||||||
```
|
```
|
||||||
|
|
||||||
生产改 `config.yaml`:`server.mode: release`、`base_url` 为正式 HTTPS 域名、商户 `production: true` 并换正式密钥。
|
生产改 `config.yaml`:`server.mode: release`、`base_url` 为正式 HTTPS 域名、商户 `production: true`;密钥走环境变量(`/etc/pay/pay.env`,Bitwarden 灌),不入库。
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# pay 一键发布:交叉编译 → 传 ali → 备份 → 重启 → 探活(失败自动回滚)。
|
||||||
|
# 用法:在 pay 仓根目录执行 ./deploy.sh
|
||||||
|
# 前提:~/.ssh/config 有 ali 别名;ali 上 systemd 服务名 pay、二进制 /opt/pay/payd。
|
||||||
|
# 密钥不在此脚本处理——运行时由 /etc/pay/pay.env(Bitwarden 灌)提供。
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HOST=ali
|
||||||
|
DIR=/opt/pay
|
||||||
|
BIN=/tmp/payd-release
|
||||||
|
|
||||||
|
echo "[1/4] 交叉编译 linux/amd64 …"
|
||||||
|
GOOS=linux GOARCH=amd64 go build -o "$BIN" .
|
||||||
|
|
||||||
|
echo "[2/4] 上传到 $HOST:$DIR/payd-new …"
|
||||||
|
scp -q "$BIN" "$HOST:$DIR/payd-new"
|
||||||
|
|
||||||
|
echo "[3/4] 备份旧版 + 切换 + 重启 …"
|
||||||
|
ssh "$HOST" "cp $DIR/payd $DIR/payd.bak && mv $DIR/payd-new $DIR/payd && chmod +x $DIR/payd && systemctl restart pay"
|
||||||
|
|
||||||
|
echo "[4/4] 探活 …"
|
||||||
|
if ssh "$HOST" "curl -fsS --retry 8 --retry-delay 1 --retry-connrefused -o /dev/null -w 'health %{http_code}\n' http://127.0.0.1:8080/health"; then
|
||||||
|
echo "✅ 发布完成(上一版已备份在 $DIR/payd.bak)"
|
||||||
|
else
|
||||||
|
echo "❌ 探活失败,自动回滚到上一版 …"
|
||||||
|
ssh "$HOST" "cp $DIR/payd.bak $DIR/payd && systemctl restart pay"
|
||||||
|
echo "↩️ 已回滚。请检查本次改动后重试。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user