Files
pay/deploy.sh
T

30 lines
1.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# pay 一键发布:交叉编译 → 传 ali → 备份 → 重启 → 探活(失败自动回滚)。
# 用法:在 pay 仓根目录执行 ./deploy.sh
# 前提:~/.ssh/config 有 ali 别名;ali 上 systemd 服务名 pay、二进制 /opt/pay/payd。
# 密钥不在此脚本处理——运行时由 /etc/pay/pay.envBitwarden 灌)提供。
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