Files
xgj/config-env/scripts/validate-tools.sh
T
Lyda 1618c6fe6d fix: 将环境校验默认值改为 false,并优化 kubectl 相关步骤的条件判断
- 将 enable-validation 默认值从 true 改为 false
- kubectl 配置和验证步骤增加工具可用性检测条件
- 环境配置总结中仅在 kubectl 可用时显示版本信息
- 当 enable-validation 为 true 时,Docker 和 kubectl 都改为必需验证
- 优化输出逻辑:仅在 kubectl 验证成功时显示当前上下文
2026-03-12 15:04:55 +08:00

78 lines
2.0 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:-false}"
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
# 当 enable-validation 为 true 时,Docker 和 kubectl 都是必需的
validate_binary "docker" "true" "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 "$@"