feat: 更新文件处理逻辑,确保使用绝对路径并添加 CI_EMAIL 环境变量检查
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import subprocess
|
||||||
import threading
|
import threading
|
||||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
import yaml
|
import yaml
|
||||||
import requests
|
import requests
|
||||||
import subprocess
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
# 初始化日志记录器
|
# 初始化日志记录器
|
||||||
@@ -34,6 +34,7 @@ def process_item(item):
|
|||||||
global modified
|
global modified
|
||||||
file_path = item.get("file")
|
file_path = item.get("file")
|
||||||
source = item.get("source")
|
source = item.get("source")
|
||||||
|
|
||||||
if not file_path or not source:
|
if not file_path or not source:
|
||||||
logging.warning(f"⚠️ 条目缺少 file 或 source 字段: {item}")
|
logging.warning(f"⚠️ 条目缺少 file 或 source 字段: {item}")
|
||||||
return
|
return
|
||||||
@@ -43,13 +44,13 @@ def process_item(item):
|
|||||||
if new_content is None:
|
if new_content is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
# 确保文件路径是相对路径且安全
|
# 构建最终文件路径
|
||||||
rel_path = os.path.relpath(file_path)
|
abs_file_path = os.path.join(os.getcwd(), file_path)
|
||||||
os.makedirs(os.path.dirname(rel_path), exist_ok=True)
|
os.makedirs(os.path.dirname(abs_file_path), exist_ok=True)
|
||||||
|
|
||||||
updated = False
|
updated = False
|
||||||
if os.path.exists(rel_path):
|
if os.path.exists(abs_file_path):
|
||||||
with open(rel_path, "r", encoding="utf-8") as f:
|
with open(abs_file_path, "r", encoding="utf-8") as f:
|
||||||
old_content = f.read()
|
old_content = f.read()
|
||||||
if old_content != new_content:
|
if old_content != new_content:
|
||||||
updated = True
|
updated = True
|
||||||
@@ -57,16 +58,16 @@ def process_item(item):
|
|||||||
updated = True
|
updated = True
|
||||||
|
|
||||||
if updated:
|
if updated:
|
||||||
with open(rel_path, "w", encoding="utf-8") as f:
|
with open(abs_file_path, "w", encoding="utf-8") as f:
|
||||||
f.write(new_content)
|
f.write(new_content)
|
||||||
logging.info(f"🚀 更新了 {rel_path}")
|
logging.info(f"🚀 更新了 {abs_file_path}")
|
||||||
with LOCK:
|
with LOCK:
|
||||||
modified = True
|
modified = True
|
||||||
|
|
||||||
|
|
||||||
def check_env_vars():
|
def check_env_vars():
|
||||||
"""检查必要的环境变量是否存在"""
|
"""检查必要的环境变量是否存在"""
|
||||||
required_vars = ["THE_REPO", "REPO_TOKEN"]
|
required_vars = ["THE_REPO", "REPO_TOKEN", "CI_EMAIL"]
|
||||||
missing_vars = [var for var in required_vars if not os.environ.get(var)]
|
missing_vars = [var for var in required_vars if not os.environ.get(var)]
|
||||||
if missing_vars:
|
if missing_vars:
|
||||||
logging.error(f"❌ 缺少必要的环境变量: {', '.join(missing_vars)}")
|
logging.error(f"❌ 缺少必要的环境变量: {', '.join(missing_vars)}")
|
||||||
@@ -81,7 +82,8 @@ def main():
|
|||||||
|
|
||||||
# 加载 list.yaml 文件
|
# 加载 list.yaml 文件
|
||||||
try:
|
try:
|
||||||
with open("list.yaml", "r", encoding="utf-8") as f:
|
list_yaml_path = os.path.join(os.getcwd(), "list.yaml")
|
||||||
|
with open(list_yaml_path, "r", encoding="utf-8") as f:
|
||||||
items = yaml.safe_load(f) or []
|
items = yaml.safe_load(f) or []
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
logging.error("❌ list.yaml 文件不存在。")
|
logging.error("❌ list.yaml 文件不存在。")
|
||||||
@@ -105,7 +107,8 @@ def main():
|
|||||||
if modified:
|
if modified:
|
||||||
try:
|
try:
|
||||||
# 配置 Git 用户信息
|
# 配置 Git 用户信息
|
||||||
subprocess.run(["git", "config", "--global", "user.email", "cicd@sugarscat.cn"], check=True)
|
ci_email = os.environ["CI_EMAIL"]
|
||||||
|
subprocess.run(["git", "config", "--global", "user.email", ci_email], check=True)
|
||||||
subprocess.run(["git", "config", "--global", "user.name", "CI/CD"], check=True)
|
subprocess.run(["git", "config", "--global", "user.name", "CI/CD"], check=True)
|
||||||
|
|
||||||
# 设置远程仓库 URL(隐藏敏感信息)
|
# 设置远程仓库 URL(隐藏敏感信息)
|
||||||
|
|||||||
Reference in New Issue
Block a user