菜单

GitHub Actions 工作流

相关源文件

目的与范围

本文档详细介绍了 new-pac 仓库中使用的 GitHub Actions 工作流系统,用于自动化更新域名信息和时间戳。该工作流通过定期更新域名信息而无需手动干预,确保了规避工具的正常运行。

有关此工作流执行的更新脚本的信息,请参见更新脚本

工作流概述

此仓库中的 GitHub Actions 工作流按计划运行,自动更新主仓库的 README 文件以及包含审查规避工具域名信息的 Wiki 页面。

来源:.github/workflows/update_wiki.yml3-6

工作流配置

工作流在.github/workflows/update_wiki.yml文件中定义,并包含以下关键配置元素

配置元素目的
姓名自动更新 Wiki 和 README在 GitHub UI 中标识工作流
计划每 10 分钟 (*/10 * * * *)设置自动执行频率
手动触发workflow_dispatch允许在需要时手动执行
权限contents: write提供必要的仓库写入权限
运行器ubuntu-latest定义执行环境

来源:.github/workflows/update_wiki.yml1-14

工作流流程

工作流遵循一系列操作来更新这两个仓库

来源:.github/workflows/update_wiki.yml16-60

详细的工作流步骤

1. 仓库检出

工作流首先检出主仓库,其中包含 README.md 文件和更新脚本。

此步骤使用actions/checkout@v3 action 并设置fetch-depth: 0,以确保完整的仓库历史可用。

来源:.github/workflows/update_wiki.yml17-21

2. Wiki 仓库克隆

接下来,工作流将 wiki 仓库克隆到名为wiki的本地目录中。

此步骤使用自动提供的GITHUB_TOKEN来验证克隆操作。

来源:.github/workflows/update_wiki.yml24-26

3. Python 环境设置

工作流设置 Python 环境以运行更新脚本

来源:.github/workflows/update_wiki.yml29-32

4. 依赖项安装

安装必要的 Python 包 (pytz)

pytz 包用于更新脚本中的时区处理。

来源:.github/workflows/update_wiki.yml35-36

5. 更新脚本执行

工作流的核心是执行update_wiki_page.py脚本

此脚本执行实际的内容更新。

来源:.github/workflows/update_wiki.yml39-41

6-7. 提交并推送更改

最后一步是将更改提交并推送到两个仓库

来源:.github/workflows/update_wiki.yml44-60

更新脚本集成

GitHub Actions 工作流与update_wiki_page.py脚本集成,该脚本执行两个关键操作

  1. 增加 Wiki 文件中的域名数量
  2. 更新 Wiki 文件和 README.md 中的时间戳

来源:update_wiki_page.py6-62

域名更新机制

更新脚本使用正则表达式识别域名模式并增加其数字部分

来源:update_wiki_page.py21-29

时间戳更新机制

脚本还会更新时间戳以反映当前的北京时间

来源:update_wiki_page.py10-36 update_wiki_page.py52-55

仓库文件结构关系

工作流与两个不同仓库中的文件进行交互

来源:update_wiki_page.py6-8

故障排除与维护

常见问题

问题可能的原因解决方案
工作流运行失败文件未找到确保 Wiki 文件路径正确
未提交任何更改未检测到差异检查更新脚本中的正则表达式
权限错误Token 问题验证工作流权限设置正确

验证工作流操作

为验证工作流运行正常

  1. 检查 GitHub Actions 选项卡以查看成功的工作流运行
  2. 检查 README.md 文件以获取当前时间戳
  3. 检查 Wiki 中的域名数量是否每日递增
  4. 查阅两个仓库的提交历史,以查看定期的自动化提交

工作流修改最佳实践

如果需要修改工作流

  1. 首先在分叉的仓库中测试更改
  2. 使用手动触发器 (workflow_dispatch) 进行即时测试
  3. 更改后监控执行情况以确保正常运行
  4. 如果工作流行为发生重大变化,请更新文档

总结

GitHub Actions 工作流提供了一个可靠的自动化系统,用于保持 new-pac 仓库中的域名信息和时间戳最新。通过每 10 分钟运行一次,它确保用户能够访问最新的规避工具,同时最大限度地减少了手动维护。该工作流通过与更新脚本无缝集成并管理主仓库及其关联 wiki 的更改来实现这一点。