🔒 fix(ci): 修复 token 明文插值并加固脚本健壮性
- 安全: curl 的 Authorization 头改用 shell 变量 ${ACCESS_TOKEN},
避免 secret 经 ${{ }} 明文展开进脚本文本(changelog、stats)
- 修复: stats 分支清理 find 显式排除 .git,与注释一致,
不再依赖 linked worktree 中 .git 为文件的隐含前提
- 健壮性: echo -e 前用 esc() 转义用户 message/body 中的反斜杠,
防止字面 \n \t 被误展开破坏 Markdown
- 健壮性: 千分位格式化改用不依赖 locale 的 sed 实现,
替换 printf "%'d"
- 健壮性: git log 的 range 变量补全引号
- 优化: prepare.yml 的 push 触发限定 main/master 分支与 tag,
避免其它分支空跑
- 文档: route-release 标注 workflow_run.path 为 Gitea 特有字段
This commit is contained in:
@@ -85,7 +85,7 @@ jobs:
|
||||
run: |
|
||||
echo "🔐 验证访问令牌..."
|
||||
|
||||
if [ -z "${{ env.ACCESS_TOKEN }}" ]; then
|
||||
if [ -z "$ACCESS_TOKEN" ]; then
|
||||
echo "❌ 错误: 未配置访问令牌"
|
||||
echo "请在 Settings -> Secrets 中配置 WORKFLOW secret"
|
||||
exit 1
|
||||
@@ -230,7 +230,7 @@ jobs:
|
||||
# 使用更严格的保护,确保不会误删 .git
|
||||
echo "🔍 查找需要删除的文件..."
|
||||
find . -maxdepth 1 -type f ! -name '.git' ! -name '.gitignore' -delete 2>/dev/null || true
|
||||
find . -maxdepth 1 -type d ! -name '.' ! -name '..' ! -name '.gitea' -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -maxdepth 1 -type d ! -name '.' ! -name '..' ! -name '.git' ! -name '.gitea' -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
# 🔴 最终检查:确认 .git 仍然完好
|
||||
echo "🔍 最终检查..."
|
||||
@@ -331,8 +331,10 @@ jobs:
|
||||
echo " - 总代码行: $TOTAL_CODE"
|
||||
|
||||
# 格式化数字(添加千分位)
|
||||
FORMATTED_FILES=$(printf "%'d" $TOTAL_FILES)
|
||||
FORMATTED_CODE=$(printf "%'d" $TOTAL_CODE)
|
||||
# 用 sed 手工加千分位,避免依赖 locale(printf "%'d" 在 C/POSIX locale 下失效)
|
||||
add_thousands() { printf '%s' "$1" | sed -E ':a;s/([0-9])([0-9]{3})($|[^0-9])/\1,\2\3/;ta'; }
|
||||
FORMATTED_FILES=$(add_thousands "$TOTAL_FILES")
|
||||
FORMATTED_CODE=$(add_thousands "$TOTAL_CODE")
|
||||
|
||||
# 输出到环境变量
|
||||
echo "total_files=$TOTAL_FILES" >> $GITHUB_OUTPUT
|
||||
@@ -361,6 +363,9 @@ jobs:
|
||||
# 创建临时目录
|
||||
mkdir -p /tmp/lang_stats
|
||||
|
||||
# 用 sed 手工加千分位,避免依赖 locale(printf "%'d" 在 C/POSIX locale 下失效)
|
||||
add_thousands() { printf '%s' "$1" | sed -E ':a;s/([0-9])([0-9]{3})($|[^0-9])/\1,\2\3/;ta'; }
|
||||
|
||||
# 构建排除参数
|
||||
EXCLUDE_FIND_ARGS=()
|
||||
IFS=',' read -ra EXCLUDES <<< "${{ env.EXCLUDE_DIRS }}"
|
||||
@@ -399,7 +404,7 @@ jobs:
|
||||
|
||||
# 只保存超过阈值的语言
|
||||
if [ "$CODE_LINES" -ge "${{ env.MIN_LINES_THRESHOLD }}" ]; then
|
||||
FORMATTED_LINES=$(printf "%'d" $CODE_LINES)
|
||||
FORMATTED_LINES=$(add_thousands "$CODE_LINES")
|
||||
|
||||
echo " - 文件数: $FILE_COUNT"
|
||||
echo " - 代码行: $FORMATTED_LINES"
|
||||
|
||||
Reference in New Issue
Block a user