feat: rbac迁移完成,并已部署至dev服务器
This commit is contained in:
Executable
+106
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# ============================================
|
||||
# 本地交叉编译 → 打包镜像 → 通过 SSH 直传 dev 服务器
|
||||
# 不依赖 Harbor,绕过 HTTPS 问题
|
||||
# 用法: ./deploy/build.sh [服务名]
|
||||
# ./deploy/build.sh # 全部
|
||||
# ./deploy/build.sh gateway # 单个
|
||||
# ============================================
|
||||
|
||||
DEV_HOST="192.168.100.128"
|
||||
DEV_USER="root"
|
||||
PROJECT="sundynix"
|
||||
TAG="${BUILD_TAG:-latest}"
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
DOCKERFILE="${ROOT_DIR}/deploy/Dockerfile"
|
||||
BIN_DIR="${ROOT_DIR}/bin"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[BUILD]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
err() { echo -e "${RED}[ERROR]${NC} $1"; exit 1; }
|
||||
|
||||
# 本地交叉编译(linux/amd64)
|
||||
compile_service() {
|
||||
local name=$1
|
||||
local path=$2
|
||||
log "编译: ${name} (linux/amd64)"
|
||||
mkdir -p "${BIN_DIR}"
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||
-ldflags="-s -w" \
|
||||
-o "${BIN_DIR}/${name}" \
|
||||
"${ROOT_DIR}/${path}"
|
||||
log "编译完成 ✅"
|
||||
}
|
||||
|
||||
# 打包镜像并通过 SSH 直传 dev 服务器
|
||||
docker_deploy() {
|
||||
local name=$1
|
||||
local image="${PROJECT}/${name}:${TAG}"
|
||||
|
||||
log "打包镜像: ${image}"
|
||||
DOCKER_BUILDKIT=0 docker build \
|
||||
--build-arg SERVICE_NAME="${name}" \
|
||||
-t "${image}" \
|
||||
-f "${DOCKERFILE}" \
|
||||
"${ROOT_DIR}"
|
||||
|
||||
log "传输镜像到 ${DEV_HOST}(通过 SSH 管道,无需 Harbor)..."
|
||||
docker save "${image}" | ssh ${DEV_USER}@${DEV_HOST} "docker load"
|
||||
log "${name} 部署完成 ✅"
|
||||
}
|
||||
|
||||
# 编译 + 部署单个服务
|
||||
build_service() {
|
||||
local name=$1
|
||||
local path=$2
|
||||
log "════════════════════════════════════"
|
||||
log "服务: ${name}"
|
||||
compile_service "$name" "$path"
|
||||
docker_deploy "$name"
|
||||
}
|
||||
|
||||
build_all() {
|
||||
build_service "system-rpc" "app/system/rpc"
|
||||
build_service "auth-api" "app/auth/api"
|
||||
build_service "system-api" "app/system/api"
|
||||
build_service "gateway" "app/gateway"
|
||||
}
|
||||
|
||||
build_one() {
|
||||
case "$1" in
|
||||
system-rpc) build_service "system-rpc" "app/system/rpc" ;;
|
||||
auth-api) build_service "auth-api" "app/auth/api" ;;
|
||||
system-api) build_service "system-api" "app/system/api" ;;
|
||||
gateway) build_service "gateway" "app/gateway" ;;
|
||||
*) err "未知服务: $1\n可选: system-rpc | auth-api | system-api | gateway" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main() {
|
||||
cd "${ROOT_DIR}"
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
build_one "$1"
|
||||
else
|
||||
build_all
|
||||
fi
|
||||
|
||||
# 清理本地编译产物
|
||||
rm -rf "${BIN_DIR}"
|
||||
|
||||
echo ""
|
||||
log "════════════════════════════════════"
|
||||
log "全部完成 🎉 镜像已传至 ${DEV_HOST}"
|
||||
log "在 dev 服务器上执行: cd /opt/sundynix && docker-compose up -d"
|
||||
log "════════════════════════════════════"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user