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.
79 lines
3.8 KiB
79 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 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
|
|
}
|
|
|
|
# 生产镜像名按公司区分。prod-build.sh 与 prod-deploy.sh 都调它,避免两处各写一份映射后漂移
|
|
# ——构建推的名字和部署拉的名字对不上,报错要到远端 docker pull 才暴露。
|
|
#
|
|
# admin/console:两家都用 starpivot-* 新命名,与 docker-compose.yml 里写死的 image/container_name
|
|
# 一致。云雁的 admin/console 生产目标已于 2026-08-05 迁到上海机(那台没有历史容器),
|
|
# 旧名 yunyan-admin / console-a11 只留在待下线的美国机 47.253.88.66 上,不再由脚本部署。
|
|
# app:云雁仍用 voitrans-a11——上海机正跑着 7 个该镜像的容器,改名会让 compose 认不出既有容器。
|
|
#
|
|
# 用法:IMAGE_NAME="$(prod_image_name lingpu admin)"
|
|
prod_image_name() { # $1=公司 $2=服务(admin|console|app)
|
|
case "${1:-}/${2:-}" in
|
|
yunyan/admin) printf 'starpivot-admin' ;;
|
|
yunyan/console) printf 'starpivot-console' ;;
|
|
yunyan/app) printf 'voitrans-a11' ;;
|
|
lingpu/admin|lingpu/console|lingpu/app) printf 'starpivot-%s' "$2" ;;
|
|
*)
|
|
printf "\033[31m✗ 未知的公司/服务组合: %s/%s\033[0m\n" "${1:-<空>}" "${2:-<空>}" >&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))]}"
|
|
}
|
|
|