Files
blog/themes/Ying/ACTIONS_FIX_GUIDE.md
T

6.1 KiB
Raw Blame History

🔧 GitHub Actions修复 + 避免冲突指南

✅ 问题已修复

问题1:Python依赖安装失败

原因: 缺少requirements.txt文件,导致cache功能失败

解决方案:

  • ✅ 创建了 requirements.txt 文件
  • ✅ 包含 fonttools 和 brotli 依赖
  • ✅ 恢复了cache功能(更快的后续运行)

🎯 立即修复并提交

快速命令(复制粘贴)

cd E:\GitHub\blog

# 1. 提交requirements.txt
git add requirements.txt
git commit -m "ci: add requirements.txt for GitHub Actions cache"

# 2. 提交所有优化文件
git add themes/Ying/assets/css/main.css themes/Ying/static/font/zql-v2-subset.* themes/Ying/static/font/used_chars.txt .github/workflows/subset-fonts.yml
git commit -m "perf: 完整性能优化 - JS按需加载 + 字体子集化 + 自动化"

# 3. 推送
git push origin main

⚠️ 避免与deploy.yml冲突

潜在问题

如果你的deploy.yml也是这样触发的:

on:
  push:
    branches:
      - main

那么:

  1. subset-fonts.yml push → 触发deploy.yml
  2. deploy.yml部署完成 → 可能又push
  3. 再次触发subset-fonts.yml → 无限循环!

解决方案

方案1:修改deploy.yml(推荐)

找到你的deploy.yml文件,修改触发条件:

原始:

on:
  push:
    branches:
      - main

修改为(排除字体文件):

on:
  push:
    branches:
      - main
    paths:
      - 'content/**'
      - 'layouts/**'
      - 'themes/**'
      - '!.github/**'  # 排除工作流变更
      - '!themes/Ying/static/font/zql-v2-subset.*'  # 排除字体子集
      - '!themes/Ying/static/font/used_chars.txt'  # 排除字符列表
      - '!requirements.txt'  # 排除依赖文件

方案2:在subset-fonts.yml中标记自动化提交

我已经在commit消息中添加了标记:

git commit -m "chore: update font subset (automated)"

在deploy.yml中添加条件检查:

jobs:
  deploy:
    # 只在非自动化提交时部署
    if: "!contains(github.event.head_commit.message, '(automated)')"
    runs-on: ubuntu-latest
    steps:
      # ... 部署步骤

方案3:让subset-fonts.yml不push,只commit

修改subset-fonts.yml,注释掉push步骤:

# 9. 推送更改
# - name: Push changes
#   if: steps.check.outputs.needs_update == 'true' || github.event.inputs.force_rebuild == 'true'
#   run: |
#     git push origin main

效果: 只commit不push,你手动push或通过其他方式触发部署


🔍 我需要你的帮助

为了给你最准确的避免冲突方案,请告诉我:

你的deploy.yml在哪里?

# 查看所有工作流文件
dir .github\workflows\

# 查看deploy.yml内容
type .github\workflows\deploy.yml

常见的部署工作流文件名

  • deploy.yml
  • pages.yml
  • ci.yml
  • build.yml
  • hugo.yml

请告诉我:

  1. deploy.yml的文件名
  2. 它的触发条件(on: push: 部分)
  3. 它是否会push回main分支

🚀 临时安全方案

在你确认deploy.yml内容之前,先用这个最安全的方案:

方案:subset-fonts.yml只commit不push

这样就不会触发deploy.yml:

# 9. 推送更改(禁用,避免冲突)
# - name: Push changes
#   if: steps.check.outputs.needs_update == 'true' || github.event.inputs.force_rebuild == 'true'
#   run: |
#     git push origin main

使用方式:

  1. subset-fonts.yml自动commit到main
  2. 你手动push,或者通过其他方式触发部署
  3. 完全避免循环触发

📋 推荐的完整工作流

日常开发流程

# 1. 本地开发
git add content/posts/new-article.md
git commit -m "feat: add new article"

# 2. 推送到GitHub
git push origin main

# 3. GitHub Actions自动触发:
#    - deploy.yml(部署)
#    - subset-fonts.yml(字体优化)

# 4. subset-fonts.yml自动:
#    - 构建Hugo
#    - 运行字体子集化
#    - commit优化后的字体
#    - (不push,避免触发deploy)

# 5. 你手动push字体优化
git pull origin main
git push origin main

如果你想要全自动

需要修改deploy.yml,让它忽略字体优化提交:

on:
  push:
    branches:
      - main
    paths:
      - 'content/**'
      - 'layouts/**'
      - 'themes/**'
      - '!themes/Ying/static/font/**'  # 忽略字体目录

🎯 现在该怎么做?

立即行动(5分钟)

# 1. 提交requirements.txt和所有优化
cd E:\GitHub\blog
git add requirements.txt
git commit -m "ci: add requirements.txt"

git add themes/Ying/assets/css/main.css themes/Ying/static/font/zql-v2-subset.* themes/Ying/static/font/used_chars.txt .github/workflows/subset-fonts.yml
git commit -m "perf: 完整性能优化"

# 2. 推送(会触发deploy和subset-fonts)
git push origin main

# 3. 监控Actions
# https://github.com/zqlit/blog/actions

# 4. 如果发现循环触发,立即:
#    - 修改deploy.yml(参考上面的方案)
#    - 或者禁用subset-fonts.yml的push步骤

安全起见(推荐)

# 先只push一次,观察Actions行为
git push origin main

# 如果看到循环触发:
# 1. 立即修改deploy.yml
# 2. 或者禁用subset-fonts.yml

💡 最佳实践

避免循环触发的原则

  1. 明确触发条件

    • 使用 paths 精确控制
    • 排除自动化文件
  2. 标记自动化提交

    • 在commit消息中添加 (automated)
    • 在工作流中检查这个标记
  3. 使用不同的触发条件

    • deploy:特定路径变更
    • subset-fonts:内容目录变更
  4. 监控Actions运行

    • 定期检查Actions页面
    • 设置失败通知

📚 相关文档

  • COMMIT_GUIDE.md - 提交指南
  • GITHUB_ACTIONS_GUIDE.md - Actions详细说明
  • FINAL_FONT_TEST.md - 测试指南

❓ 需要你的帮助

请告诉我:

  1. 你的deploy.yml文件名是什么?
  2. 它的触发条件是什么?
  3. 它会push回main吗?

这样我可以给你最准确的避免冲突方案!


文档版本: v1.0 创建时间: 2026-06-03 适用场景: 修复GitHub Actions错误 + 避免工作流冲突