From 17dc45fdfd89650ccd05a253b3ad0289608424e0 Mon Sep 17 00:00:00 2001 From: zhx Date: Wed, 8 Jul 2026 17:12:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .deploy/aslan-deploy/deploy-likei-services.sh | 30 +++++++++++++++---- .deploy/aslan-deploy/sync-and-deploy.sh | 14 +++++---- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/.deploy/aslan-deploy/deploy-likei-services.sh b/.deploy/aslan-deploy/deploy-likei-services.sh index 89f8d94c..f7a55f70 100755 --- a/.deploy/aslan-deploy/deploy-likei-services.sh +++ b/.deploy/aslan-deploy/deploy-likei-services.sh @@ -48,7 +48,10 @@ ensure_base_image() { if docker image inspect "$BASE_IMAGE" >/dev/null 2>&1; then return fi - log "base image not cached, pulling $FALLBACK_BASE_IMAGE" + if docker pull "$BASE_IMAGE"; then + return + fi + log "base image not available from primary registry, pulling $FALLBACK_BASE_IMAGE" docker pull "$FALLBACK_BASE_IMAGE" docker tag "$FALLBACK_BASE_IMAGE" "$BASE_IMAGE" } @@ -139,6 +142,7 @@ build_service() { rollout "$svc" "$image" ;; preload) + ensure_preload_pull_policy "$svc" preload_image_to_nodes "$svc" "$image" rollout "$svc" "$image" ;; @@ -182,6 +186,18 @@ preload_image_to_nodes() { done } +ensure_preload_pull_policy() { + local svc="$1" + local policy + policy="$(kubectl --kubeconfig "$KUBECONFIG" -n "$NAMESPACE" get "deployment/$svc" \ + -o "jsonpath={.spec.template.spec.containers[?(@.name=='$svc')].imagePullPolicy}")" + # Preload mode imports images into node containerd; Always-pull pods would bypass that cache and fail. + if [[ "$policy" == "Always" ]]; then + echo "deployment/$svc uses imagePullPolicy=Always; preload mode requires IfNotPresent or unset" >&2 + exit 4 + fi +} + preload_image_to_node() { local svc="$1" local image="$2" @@ -275,17 +291,19 @@ main() { esac done + if [[ "${1:-}" == "status" || "$MODE" == "status" ]]; then + need_cmd kubectl + [[ -f "$KUBECONFIG" ]] || { echo "missing kubeconfig: $KUBECONFIG" >&2; exit 2; } + status + exit 0 + fi + need_cmd java need_cmd mvn need_cmd docker need_cmd kubectl [[ -f "$KUBECONFIG" ]] || { echo "missing kubeconfig: $KUBECONFIG" >&2; exit 2; } - if [[ "${1:-}" == "status" || "$MODE" == "status" ]]; then - status - exit 0 - fi - update_source_from_git local services=("$@") diff --git a/.deploy/aslan-deploy/sync-and-deploy.sh b/.deploy/aslan-deploy/sync-and-deploy.sh index c7a4501e..46df9076 100755 --- a/.deploy/aslan-deploy/sync-and-deploy.sh +++ b/.deploy/aslan-deploy/sync-and-deploy.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -DEPLOY_HOST="${DEPLOY_HOST:-43.160.245.220}" +DEPLOY_HOST="${DEPLOY_HOST:-43.160.219.15}" DEPLOY_USER="${DEPLOY_USER:-ubuntu}" SSH_KEY="${SSH_KEY:-$HOME/.ssh/aslan-deploy-sg-ed25519}" REMOTE_BASE="${REMOTE_BASE:-/opt/aslan-deploy}" @@ -23,12 +23,12 @@ Examples: .deploy/aslan-deploy/sync-and-deploy.sh --mode preload other external console Environment: - DEPLOY_HOST default 43.160.245.220 + DEPLOY_HOST default 43.160.219.15 DEPLOY_USER default ubuntu SSH_KEY default ~/.ssh/aslan-deploy-sg-ed25519 Git source on deploy host: - ssh -i ~/.ssh/aslan-deploy-sg-ed25519 ubuntu@43.160.245.220 \ + ssh -i ~/.ssh/aslan-deploy-sg-ed25519 ubuntu@43.160.219.15 \ 'USE_GIT_SOURCE=1 GIT_REF=atyou_prod /opt/aslan-deploy/deploy-likei-services.sh --mode preload other' EOF } @@ -72,5 +72,9 @@ for cache_group in $M2_CACHE_GROUPS; do done printf -v remote_script_q '%q' "$REMOTE_BASE/deploy-likei-services.sh" -printf -v remote_args_q '%q ' "$@" -"${ssh_base[@]}" "chmod +x $remote_script_q && $remote_script_q $remote_args_q" +remote_cmd="$remote_script_q" +if [[ "$#" -gt 0 ]]; then + printf -v remote_args_q ' %q' "$@" + remote_cmd+="$remote_args_q" +fi +"${ssh_base[@]}" "chmod +x $remote_script_q && $remote_cmd"