Files
xgj/config-env/scripts/validate-tools.sh
T
Lyda e3ca3af8d3 fix: 将 Docker 工具验证改为可选,并优化 Docker 登录和输出逻辑
- 将 Docker 验证从必需改为可选(required=false)
- Docker 登录步骤增加版本检测条件,避免 Docker 不可用时执行登录
- 环境配置总结中仅在 Docker 可用时显示版本信息
- 优化错误处理:Docker 缺失不再阻塞流程,kubectl 保持必需验证
2026-03-12 15:02:05 +08:00

77 lines
1.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() {
echo -e "${BLUE}$1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
validate_binary() {
local name="$1"
local required="$2"
local version_cmd="$3"
local output_var="$4"
local version_output=""
if command -v "$name" >/dev/null 2>&1; then
if [[ "$name" == "kubectl" ]]; then
if version_output=$(kubectl version --client --short 2>/dev/null | head -n 1); then
:
else
version_output=$(kubectl version --client 2>/dev/null | head -n 1)
fi
else
version_output=$(bash -c "$version_cmd")
fi
log_success "检测到 $name: $version_output"
printf '%s=%s\n' "$output_var" "$version_output" >> "$GITHUB_OUTPUT"
return 0
fi
if [[ "$required" == "true" ]]; then
log_error "未检测到必需的命令: $name"
exit 1
else
log_warning "未检测到可选命令: $name"
printf '%s=%s\n' "$output_var" "not-found" >> "$GITHUB_OUTPUT"
fi
}
main() {
: "${GITHUB_OUTPUT:?GITHUB_OUTPUT 未设置}" >/dev/null
local enable_validation="${ENABLE_VALIDATION:-true}"
if [[ "$enable_validation" != "true" ]]; then
log_info "已通过统一开关禁用环境校验"
printf 'docker-version=%s\n' "skipped" >> "$GITHUB_OUTPUT"
printf 'kubectl-version=%s\n' "skipped" >> "$GITHUB_OUTPUT"
return 0
fi
validate_binary "docker" "false" "docker --version" "docker-version"
validate_binary "kubectl" "true" "kubectl version --client --short 2>/dev/null || kubectl version --client" "kubectl-version"
}
trap 'log_error "工具校验失败,退出码: $?"' ERR
main "$@"