first commit

This commit is contained in:
douboer
2026-03-21 18:57:10 +08:00
commit c49aa1a5e9
570 changed files with 107167 additions and 0 deletions

103
deploy.sh Executable file
View File

@@ -0,0 +1,103 @@
#!/bin/bash
set -euo pipefail
REMOTE_HOST="mac.biboer.cn"
REMOTE_USER="gavin"
REMOTE_TARGET="${REMOTE_USER}@${REMOTE_HOST}"
PROJECT_DIR="${HOME}/remoteconn"
REMOTE_HOST_ALIASES="${REMOTE_HOST},gavin-mac-mini.local,gavin-mac-mini"
if [ -t 1 ]; then
COLOR_RESET=$'\033[0m'
COLOR_LOCAL=$'\033[1;32m'
COLOR_REMOTE=$'\033[1;94m'
else
COLOR_RESET=""
COLOR_LOCAL=""
COLOR_REMOTE=""
fi
log_local() {
echo "${COLOR_LOCAL}[LOCAL]${COLOR_RESET} $*"
}
log_remote() {
echo "${COLOR_REMOTE}[REMOTE]${COLOR_RESET} $*"
}
run_remote_deploy() {
log_remote "开始执行远端流程runit -> build -> gateway deploy"
cd "${PROJECT_DIR}"
log_remote "开始执行 ./runit.sh..."
LOG_CONTEXT=REMOTE ./runit.sh
log_remote "开始构建项目..."
npm run build
log_remote "开始部署网关..."
./scripts/gatewayctl.sh deploy
log_remote "远端部署完成。"
}
CURRENT_HOST_FQDN="$(hostname -f 2>/dev/null || hostname)"
CURRENT_HOST_SHORT="$(hostname -s 2>/dev/null || hostname)"
CURRENT_HOST_LOCAL="$(scutil --get LocalHostName 2>/dev/null || true)"
is_remote_host=false
IFS=',' read -r -a HOST_ALIAS_LIST <<< "${REMOTE_HOST_ALIASES}"
for alias in "${HOST_ALIAS_LIST[@]}"; do
if [[ "${CURRENT_HOST_FQDN}" == "${alias}" || "${CURRENT_HOST_SHORT}" == "${alias}" || "${CURRENT_HOST_LOCAL}" == "${alias}" ]]; then
is_remote_host=true
break
fi
done
if [[ "${is_remote_host}" == "true" ]]; then
log_remote "当前主机=${CURRENT_HOST_FQDN}(远端主机),直接执行远端流程。"
run_remote_deploy
exit 0
fi
log_local "当前主机=${CURRENT_HOST_FQDN}(本地),先执行本地 runit。"
LOG_CONTEXT=LOCAL ./runit.sh
ssh -T "${REMOTE_TARGET}" << 'EOF'
COLOR_RESET=$'\033[0m'
COLOR_REMOTE=$'\033[1;94m'
log_remote() {
echo "${COLOR_REMOTE}[REMOTE]${COLOR_RESET} $*"
}
log_remote "进入项目目录..."
cd ~/remoteconn || exit 1
log_remote "开始执行 ./runit.sh..."
LOG_CONTEXT=REMOTE ./runit.sh
if [ $? -ne 0 ]; then
log_remote "./runit.sh 执行失败,中止部署。"
exit 1
fi
log_remote "开始构建项目..."
npm run build
if [ $? -ne 0 ]; then
log_remote "构建失败,中止部署。"
exit 1
fi
log_remote "开始部署网关..."
./scripts/gatewayctl.sh deploy
if [ $? -ne 0 ]; then
log_remote "网关部署失败,中止部署。"
exit 1
fi
log_remote "远端部署完成。"
exit 0
EOF
log_local "部署流程执行完毕。"