建立推送机制 webhook
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
# 在服务器上执行:安装 Webhook 自动发版
|
||||
set -euo pipefail
|
||||
|
||||
APP_ROOT="${APP_ROOT:-/opt/dukang-haoke}"
|
||||
DEPLOY_DIR="$APP_ROOT/deploy"
|
||||
ENV_FILE="$DEPLOY_DIR/auto-release.env"
|
||||
LOG_DIR="/var/log/dukang"
|
||||
|
||||
echo "==> 1. 准备目录"
|
||||
mkdir -p "$LOG_DIR" /var/run
|
||||
chmod +x "$DEPLOY_DIR/auto-release.sh" "$DEPLOY_DIR/setup-webhook.sh" 2>/dev/null || true
|
||||
sed -i 's/\r$//' "$DEPLOY_DIR"/*.sh "$DEPLOY_DIR"/*.mjs 2>/dev/null || true
|
||||
|
||||
echo "==> 2. 生成 webhook 密钥(若不存在)"
|
||||
if [[ ! -f "$ENV_FILE" ]]; then
|
||||
SECRET="$(openssl rand -hex 24)"
|
||||
cp "$DEPLOY_DIR/auto-release.env.example" "$ENV_FILE"
|
||||
sed -i "s/change-me-to-a-long-random-string/$SECRET/" "$ENV_FILE"
|
||||
chmod 600 "$ENV_FILE"
|
||||
echo " 已创建 $ENV_FILE"
|
||||
else
|
||||
echo " 保留已有 $ENV_FILE"
|
||||
fi
|
||||
|
||||
echo "==> 3. Nginx webhook 路由"
|
||||
HOOK_CONF="$DEPLOY_DIR/nginx-deploy-webhook.conf"
|
||||
# 勿放在 /etc/nginx/conf.d/(会被 http 上下文直接加载)
|
||||
rm -f /etc/nginx/conf.d/dukang-deploy-webhook.conf
|
||||
|
||||
MARKER="include $HOOK_CONF;"
|
||||
for conf in /etc/nginx/conf.d/dukang-runxian.conf /etc/nginx/conf.d/dukang-runxian-ssl.conf; do
|
||||
if [[ -f "$conf" ]] && grep -q 'server_name dkapi.runxian.top' "$conf"; then
|
||||
# 清理旧错误 include
|
||||
sed -i '\|include /etc/nginx/conf.d/dukang-deploy-webhook.conf;|d' "$conf"
|
||||
if ! grep -qF "$MARKER" "$conf"; then
|
||||
sed -i "/server_name dkapi.runxian.top;/a\\ $MARKER" "$conf"
|
||||
echo " 已 patch $conf"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
nginx -t
|
||||
systemctl reload nginx
|
||||
|
||||
echo "==> 4. 启动 PM2 webhook"
|
||||
cd "$APP_ROOT"
|
||||
if pm2 describe dukang-deploy-webhook &>/dev/null; then
|
||||
pm2 restart dukang-deploy-webhook
|
||||
else
|
||||
pm2 start "$DEPLOY_DIR/ecosystem.config.cjs" --only dukang-deploy-webhook
|
||||
fi
|
||||
pm2 save
|
||||
|
||||
echo "==> 5. 健康检查"
|
||||
sleep 1
|
||||
curl -sf http://127.0.0.1:8095/health | head -c 200
|
||||
echo
|
||||
|
||||
SECRET="$(grep DEPLOY_WEBHOOK_SECRET "$ENV_FILE" | cut -d= -f2- | tr -d '\"')"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Webhook 已就绪"
|
||||
echo " URL: https://dkapi.runxian.top/hooks/deploy"
|
||||
echo " Secret: $SECRET"
|
||||
echo " Branch: dev (refs/heads/dev)"
|
||||
echo " Log: $LOG_DIR/deploy.log"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "CodeUp 配置:仓库 → 设置 → Webhooks → 添加"
|
||||
echo " URL: https://dkapi.runxian.top/hooks/deploy"
|
||||
echo " Secret Token: (与上方 Secret 相同)"
|
||||
echo " 触发事件: Push events"
|
||||
echo " 分支过滤: dev"
|
||||
Reference in New Issue
Block a user