You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
3.8 KiB

#!/usr/bin/env bash
# 各公司私有镜像仓库档案 —— 所有 build / deploy 脚本共用这一份。
#
# 以前每个 dev-deploy.sh / prod-build.sh / prod-deploy.sh 各写死一份仓库地址和账号,
# 换仓库要改 6+ 处、极易漏;现在统一放这里,换地址只改本文件。
#
# 用法(在脚本里):
# source "$REPO_ROOT/deploy/registry-profiles.sh"
# registry_profile along # → 设好 REGISTRY / REGISTRY_USER / REGISTRY_PASS / COMPANY_DESC
# COMPANY="$(pick_company)" # → 选公司(目前只剩 along,直接返回它)
#
# ⚠️ 本文件纳入 git,下面的仓库密码会随仓库提交(私有仓库内可接受)。
# 公开仓库前务必清空 REGISTRY_PASS。
set -euo pipefail
# 2026-09-23:云雁(yunyan → registry.voitrans.net)与灵谱(lingpu → registry.lingpu.net)两个档案已删除。
# 它们的部署目标早在 2026-09-13 就从本仓库清掉了,仓库档案再留着只会让人误推镜像到没人拉的地方。
# 需要找回:git log -- deploy/registry-profiles.sh
COMPANIES=(along) # 可选公司(目前只剩阿龙一家)
DEFAULT_COMPANY="along" # 不指定且无 TTY(CI/管道)时用哪个
# 按公司设置仓库三件套。失败返回非 0,由调用方决定是否 exit。
registry_profile() {
case "${1:-}" in
along)
COMPANY_DESC="阿龙"
REGISTRY="registry.ymaikj.com" # 仓库实体就在阿龙测试机 8.133.166.29 上(NPM 反代 → docker-registry:5000)
# 正式机 47.116.104.181 也从这里拉镜像(阿龙只此一个仓库)
REGISTRY_USER="admin" # 注意:账号是 admin
REGISTRY_PASS="li13451234"
;;
*)
printf "\033[31m✗ 未知公司: %s(应为 %s)\033[0m\n" "${1:-<空>}" "${COMPANIES[*]}" >&2
return 1
;;
esac
}
# 生产镜像名按公司区分。prod-build.sh 与 prod-deploy.sh 都调它,避免两处各写一份映射后漂移
# ——构建推的名字和部署拉的名字对不上,报错要到远端 docker pull 才暴露。
#
# 三个服务一律 starpivot-<服务>,与 docker-compose.yml 里的 image/container_name 一致。
# 函数保留公司参数只为兼容调用方和将来再分叉。
#
# 用法:IMAGE_NAME="$(prod_image_name along admin)"
prod_image_name() { # $1=公司 $2=服务(admin|console|app)
case "${2:-}" in
admin|console|app) printf 'starpivot-%s' "$2" ;;
*)
printf "\033[31m✗ 未知的服务: %s(应为 admin|console|app)\033[0m\n" "${2:-<空>}" >&2
return 1
;;
esac
}
# 交互选择公司;无 TTY 时回落到 DEFAULT_COMPANY。选中的 key 从 stdout 返回(菜单走 stderr,不污染返回值)。
# 只剩一家时不弹菜单——让人对着独苗菜单按回车纯属噪音。
pick_company() {
if [ "${#COMPANIES[@]}" -le 1 ]; then printf '%s' "${COMPANIES[0]}"; return 0; fi
if [ ! -t 0 ]; then printf '%s' "$DEFAULT_COMPANY"; return 0; fi
printf "\033[34m选择镜像仓库所属公司:\033[0m\n" >&2
local i=1 c
for c in "${COMPANIES[@]}"; do
( registry_profile "$c" >/dev/null 2>&1
printf " %d) %-8s → %s (%s)\n" "$i" "$c" "${COMPANY_DESC:-}" "${REGISTRY:-}" >&2 )
i=$((i+1))
done
printf " 请输入序号 [1-%d](回车用默认 %s): " "${#COMPANIES[@]}" "$DEFAULT_COMPANY" >&2
local sel; read -r sel || { printf '%s' "$DEFAULT_COMPANY"; return 0; }
[ -n "$sel" ] || { printf '%s' "$DEFAULT_COMPANY"; return 0; }
case "$sel" in ''|*[!0-9]*) printf "\033[31m✗ 无效序号: %s\033[0m\n" "$sel" >&2; return 1 ;; esac
{ [ "$sel" -ge 1 ] && [ "$sel" -le "${#COMPANIES[@]}" ]; } || { printf "\033[31m✗ 序号超出范围\033[0m\n" >&2; return 1; }
printf '%s' "${COMPANIES[$((sel-1))]}"
}