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.
 
 
 
 
 
 

57 lines
2.6 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 yunyan # → 设好 REGISTRY / REGISTRY_USER / REGISTRY_PASS / COMPANY_DESC
# COMPANY="$(pick_company)" # → 交互选公司(无 TTY 时用 DEFAULT_COMPANY)
#
# ⚠️ 本文件纳入 git,下面的仓库密码会随仓库提交(私有仓库内可接受)。
# 公开仓库前务必清空 REGISTRY_PASS。
set -euo pipefail
COMPANIES=(yunyan lingpu) # 可选公司(交互菜单按此顺序展示)
DEFAULT_COMPANY="yunyan" # 不指定且无 TTY(CI/管道)时用哪个
# 按公司设置仓库三件套。失败返回非 0,由调用方决定是否 exit。
registry_profile() {
case "${1:-}" in
yunyan)
COMPANY_DESC="云雁"
REGISTRY="registry.voitrans.net" # 仓库实体在广州机 8.138.86.223(1Panel OpenResty 反代 → docker-registry:5000)
REGISTRY_USER="liwei"
REGISTRY_PASS="li13451234"
;;
lingpu)
COMPANY_DESC="灵谱"
REGISTRY="registry.lingpu.net" # 仓库实体在灵谱香港机 8.217.193.140
REGISTRY_USER="liwei"
REGISTRY_PASS="li13451234"
;;
*)
printf "\033[31m✗ 未知公司: %s(应为 %s)\033[0m\n" "${1:-<空>}" "${COMPANIES[*]}" >&2
return 1
;;
esac
}
# 交互选择公司;无 TTY 时回落到 DEFAULT_COMPANY。选中的 key 从 stdout 返回(菜单走 stderr,不污染返回值)。
pick_company() {
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))]}"
}