改进环境变量注入和调试日志

- 添加详细的环境变量调试日志
- 改进变量替换逻辑,支持expandvars和手动替换双保险
- 提供更好的错误诊断信息和解决方案
- 显示环境变量设置状态和部分值(隐藏敏感信息)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-21 10:28:38 +08:00
parent 66ef9b059b
commit 94a04e53fb

View File

@@ -17,13 +17,64 @@ def sync_repository(repo_config):
print(f"❌ [{name}] 错误: 缺少 source_url 或 target_url")
return False
# 替换环境变量
source_url = os.path.expandvars(source_url)
target_url = os.path.expandvars(target_url)
print(f"[DEBUG] ===== 变量替换开始 =====")
print(f"[DEBUG] 替换前的 source_url: {source_url}")
print(f"[DEBUG] 替换前的 target_url: {target_url}")
print(f"[DEBUG] 当前环境变量:")
# 检查环境变量是否已设置
env_vars = {}
for var in ['UPSTREAM_USERNAME', 'UPSTREAM_TOKEN', 'TARGET_USERNAME', 'TARGET_TOKEN']:
value = os.environ.get(var)
env_vars[var] = value
if value:
print(f"[DEBUG] {var}: 已设置 (长度: {len(value)})")
# 隐藏敏感信息(只显示前后几个字符)
if 'TOKEN' in var and len(value) > 8:
shown = value[:4] + '...' + value[-4:]
else:
shown = value
print(f"[DEBUG] {var} 值: {shown}")
else:
print(f"[DEBUG] {var}: ⚠️ 未设置或为空!会导致替换失败")
# 方法1使用 os.path.expandvars()
source_url_expanded = os.path.expandvars(source_url)
target_url_expanded = os.path.expandvars(target_url)
# 方法2手动替换备用方案
if '${' in source_url_expanded:
print(f"[DEBUG] os.path.expandvars() 未完全替换,尝试手动替换...")
for var, value in env_vars.items():
if value:
source_url_expanded = source_url_expanded.replace(f"${{{var}}}", value)
source_url_expanded = source_url_expanded.replace(f"${var}", value)
if '${' in target_url_expanded:
print(f"[DEBUG] os.path.expandvars() 未完全替换,尝试手动替换...")
for var, value in env_vars.items():
if value:
target_url_expanded = target_url_expanded.replace(f"${{{var}}}", value)
target_url_expanded = target_url_expanded.replace(f"${var}", value)
source_url = source_url_expanded
target_url = target_url_expanded
print(f"[DEBUG] 最终 source_url: {source_url}")
print(f"[DEBUG] 最终 target_url: {target_url}")
print(f"[DEBUG] ===== 变量替换结束 =====")
# 检查必要的环境变量是否设置
if '${' in source_url:
print(f"⚠️ [{name}] 警告: source_url 中的环境变量未完全解析: {source_url}")
print(f" [{name}] 错误: source_url 中的环境变量未完全解析: {source_url}")
print(f"❌ 这可能是因为:")
print(f" 1. 环境变量未传递给 Python 脚本")
print(f" 2. 变量名拼写错误")
print(f" 3. secrets 未在 Gitea 中正确配置")
return False
if '${' in target_url:
print(f"⚠️ [{name}] 警告: target_url 中的环境变量未完全解析: {target_url}")
print(f" [{name}] 错误: target_url 中的环境变量未完全解析: {target_url}")
return False
print(f"\n{'='*60}")
print(f"开始同步仓库: {name}")
print(f"源地址: {source_url.split('@')[-1] if '@' in source_url else source_url}")