mirror of
https://github.com/KingHWJ/WeReadBoard.git
synced 2026-11-03 18:24:58 +08:00
48 lines
1.2 KiB
Bash
Executable File
48 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
WORKFLOW="$ROOT_DIR/.github/workflows/deploy.yml"
|
|
|
|
if ! grep -q '^ - master$' "$WORKFLOW"; then
|
|
echo "部署工作流尚未监听 master"
|
|
exit 1
|
|
fi
|
|
if ! grep -q 'deploy_webhook.py' "$ROOT_DIR/deploy/weread-webhook.service"; then
|
|
echo "Webhook systemd 服务未配置"
|
|
exit 1
|
|
fi
|
|
if ! grep -q 'DEFAULT_BRANCH = "master"' "$ROOT_DIR/deploy_webhook.py"; then
|
|
echo "Webhook 未固定 master 分支"
|
|
exit 1
|
|
fi
|
|
if grep -q 'SERVER_SSH_KEY\|ssh -i' "$WORKFLOW"; then
|
|
echo "验证工作流仍包含服务器 SSH 部署"
|
|
exit 1
|
|
fi
|
|
|
|
TEST_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "$TEST_DIR"' EXIT
|
|
mkdir -p "$TEST_DIR/project" "$TEST_DIR/bin"
|
|
printf '#!/usr/bin/env bash\nexit 0\n' > "$TEST_DIR/bin/python3"
|
|
chmod +x "$TEST_DIR/bin/python3"
|
|
|
|
set +e
|
|
OUTPUT="$(
|
|
PATH="$TEST_DIR/bin" \
|
|
PROJECT_DIR="$TEST_DIR/project" \
|
|
VENV_DIR="$TEST_DIR/project/.venv" \
|
|
DEPLOY_BRANCH=dev \
|
|
SKIP_GIT_PULL=1 \
|
|
/bin/bash "$ROOT_DIR/deploy.sh" 2>&1
|
|
)"
|
|
STATUS=$?
|
|
set -e
|
|
|
|
if [ "$STATUS" -eq 0 ] || [[ "$OUTPUT" != *"只允许部署 master"* ]]; then
|
|
echo "deploy.sh 没有拒绝 dev 分支"
|
|
exit 1
|
|
fi
|
|
|
|
echo "master-only 部署约束验证通过"
|