6.1 KiB
6.1 KiB
🔧 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
那么:
- subset-fonts.yml push → 触发deploy.yml
- deploy.yml部署完成 → 可能又push
- 再次触发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.ymlpages.ymlci.ymlbuild.ymlhugo.yml
请告诉我:
- deploy.yml的文件名
- 它的触发条件(on: push: 部分)
- 它是否会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
使用方式:
- subset-fonts.yml自动commit到main
- 你手动push,或者通过其他方式触发部署
- 完全避免循环触发
📋 推荐的完整工作流
日常开发流程
# 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
💡 最佳实践
避免循环触发的原则
-
明确触发条件
- 使用
paths精确控制 - 排除自动化文件
- 使用
-
标记自动化提交
- 在commit消息中添加
(automated) - 在工作流中检查这个标记
- 在commit消息中添加
-
使用不同的触发条件
- deploy:特定路径变更
- subset-fonts:内容目录变更
-
监控Actions运行
- 定期检查Actions页面
- 设置失败通知
📚 相关文档
- COMMIT_GUIDE.md - 提交指南
- GITHUB_ACTIONS_GUIDE.md - Actions详细说明
- FINAL_FONT_TEST.md - 测试指南
❓ 需要你的帮助
请告诉我:
- 你的deploy.yml文件名是什么?
- 它的触发条件是什么?
- 它会push回main吗?
这样我可以给你最准确的避免冲突方案!
文档版本: v1.0 创建时间: 2026-06-03 适用场景: 修复GitHub Actions错误 + 避免工作流冲突