news 2026/7/14 23:18:13

用 MkDocs + GitHub Actions 自动化部署项目文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 MkDocs + GitHub Actions 自动化部署项目文档

用 MkDocs + GitHub Actions 自动化部署项目文档

写文档不是写README凑合,而是把知识做成「可维护的工程产物」。我的目标很简单:
写 Markdown → push → 自动部署到 GitHub Pages,中间不手动干预、不折腾服务器、不装 Node。

下面先说清两样东西干啥,然后把我的方案(配置 + 原因)贴出来。


一、快速说明:MkDocs 和 GitHub Actions 各干什么

MkDocs

  • 静态站点生成器,输入一堆 Markdown,输出一堆静态 HTML(site/目录)。
  • 主题用 Material 非常合适:搜索、暗黑模式、代码复制、Mermaid、Tabs、Admonition 等开箱即用。
  • 本地可以用mkdocs serve做热预览,用mkdocs build生成静态文件。

GitHub Actions

  • CI/CD 工具。我们用它做三件事:检出代码 → 在 runner 上安装 Python 与 MkDocs 依赖 → 运行mkdocs build→ 把site/推到gh-pages分支(用于 Pages)。
  • 常见配套:actions/checkoutactions/setup-pythonpeaceiris/actions-gh-pages(负责把静态文件发布到gh-pages)。

关键思想:把构建行为放到 CI,把发布交给 actions-gh-pages。本地只做编辑与预览,生产环境由 Actions 完成。


我的想法

目标

  • main分支 push 自动触发构建并发布到gh-pages
  • 支持:Material 主题、中文/英文搜索、代码块复制、Git 修订日期显示(基于完整 git 历史)。
  • Actions 环境:Ubuntu runner + Python 3.11。

设计要点(为什么这样)

  1. fetch-depth: 0:必须的——git 插件需要完整历史才能显示创建/修改时间。
  2. 在 Actions 里显式pip install需要的插件(Material、awesome-pages、git-revision-date-localized)以避免构建失败。
  3. 使用peaceiris/actions-gh-pages统一负责把site/推到gh-pages,简洁可靠。
  4. 本地先mkdocs serve调试,Actions 只做非交互式构建与发布。

三、我的mkdocs.yml(直接用的配置 — 把占位符换成你的)

下面是我最终用的mkdocs.yml(照你之前给的大体结构整理,去掉了多余解释,保留功能与插件配置)。你可以直接放到仓库根目录:

site_name:${SiteName}# 替换为站点名site_description:$siteDescriptionsite_author:$SiteAuthorcopyright:"Copyright © $currentYear $SiteAuthor - 保留所有权利"docs_dir:"$DocDir"theme:name:materiallanguage:zhlogo:Awesome-Embedded.pngfavicon:Awesome-Embedded.icopalette:-media:"(prefers-color-scheme: light)"scheme:defaultprimary:indigoaccent:indigotoggle:icon:material/brightness-7name:切换至暗色模式-media:"(prefers-color-scheme: dark)"scheme:slateprimary:blackaccent:indigotoggle:icon:material/brightness-4name:切换至亮色模式font:text:Robotocode:Roboto Monofeatures:-navigation.instant-navigation.instant.prefetch-navigation.instant.progress-navigation.tracking-navigation.sections-navigation.expand-navigation.path-navigation.indexes-navigation.top-navigation.footer-toc.follow-toc.integrate-search.suggest-search.highlight-search.share-content.code.copy-content.code.select-content.code.annotate-content.tabs.link-content.tooltips-content.action.edit-content.action.viewmarkdown_extensions:-abbr-attr_list-def_list-footnotes-md_in_html-tables-toc:permalink:truepermalink_title:链接到此章节slugify:!!python/object/apply:pymdownx.slugs.slugifykwds:case:lower-admonition-pymdownx.details-pymdownx.highlight:anchor_linenums:trueline_spans:__spanpygments_lang_class:truelinenums:truelinenums_style:pymdownx-inline-pymdownx.inlinehilite-pymdownx.superfences:custom_fences:-name:mermaidclass:mermaidformat:!!python/name:pymdownx.superfences.fence_code_format-pymdownx.tabbed:alternate_style:truecombine_header_slug:trueslugify:!!python/object/apply:pymdownx.slugs.slugifykwds:case:lower-pymdownx.emoji:emoji_index:!!python/name:material.extensions.emoji.twemojiemoji_generator:!!python/name:material.extensions.emoji.to_svg-pymdownx.caret-pymdownx.mark-pymdownx.tilde-pymdownx.keys-pymdownx.smartsymbols-pymdownx.snippets-pymdownx.critic-pymdownx.betteremplugins:-search:separator:'[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'lang:-zh-enpipeline:-stemmer-stopWordFilter-trimmer-awesome-pages-git-revision-date-localized:enable_creation_date:truefallback_to_build_date:truetype:datetimetimezone:Asia/Shanghailocale:zhextra:social:-icon:fontawesome/brands/githublink:https://github.com/Awesome-Embedded-Learning-Studioname:GitHub-icon:fontawesome/solid/paper-planelink:$Emailname:发送邮件extra_javascript:-javascripts/mathjax.js-https://polyfill.io/v3/polyfill.min.js?features=es6-https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js

说明(要点)

  • docs_dir指向你的 Markdown 源目录(默认docs,可以改)。
  • git-revision-date-localized需要fetch-depth: 0才能正确显示创建/更新时间(下面 Actions 已配置)。
  • 如果不需要 MathJax,去掉extra_javascript里的 MathJax 条目以加速构建。

四、我的 GitHub Actions 工作流

# 工作流名称name:自动部署 MkDocs# 触发条件:推送到 main 分支on:push:branches:-mainworkflow_dispatch:permissions:contents:writejobs:deploy:runs-on:ubuntu-lateststeps:-name:检出仓库uses:actions/checkout@v4with:fetch-depth:0-name:设置 Pythonuses:actions/setup-python@v5with:python-version:"3.11"-name:安装依赖run:|pip install mkdocs-material pip install mkdocs-awesome-pages-plugin pip install mkdocs-git-revision-date-localized-plugin-name:构建网站run:mkdocs build--clean-name:部署到 GitHub Pagesuses:peaceiris/actions-gh-pages@v4with:github_token:${{secrets.GITHUB_TOKEN}}publish_dir:./site

为什么这样写

  • fetch-depth: 0:让git-revision-date-localized能获取完整历史。
  • 明确python-version:避免 runner 默认 Python 版本导致兼容问题。
  • 在 Actions 里安装插件:保证构建环境与本地一致(Actions 是一台干净机器)。
  • peaceiris/actions-gh-pagesGITHUB_TOKEN推送site/gh-pages,无需额外 secret。

五、部署 / 测试步骤(你应该怎么做)

  1. 在仓库根放mkdocs.yml,把docs/写好(index.md必须有)。
  2. 把上面的 workflow 存为.github/workflows/deploy-mkdocs.yml
  3. git add . && git commit -m "add docs site and ci" && git push origin main
  4. 去 GitHub → Actions 看日志,确认mkdocs build成功并且gh-pages分支有更新。
  5. 去仓库 Settings → Pages,确保 Pages 来源是gh-pages(通常 peaceiris 会自动设置)。
  6. 访问https://<username>.github.io/<repo>/(或你配置的自定义域名)。

结语

这就是我的方案:把 MkDocs 的配置尽量放在mkdocs.yml(功能全开),把构建与发布放到 GitHub Actions(可复现、可审计)。你只要维护docs/下的 Markdown,写文档就像写代码一样——有版本、有历史、有自动化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 0:09:48

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统 这是一本关于使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统的详细书籍,全文约 10 万字。 《Production-Grade Agentic AI System Design and Implementation: Building Agentic AI Systems Using FastAPI and La…

作者头像 李华
网站建设 2026/7/13 5:06:23

MiDaS模型应用实战:自然场景深度估计

MiDaS模型应用实战&#xff1a;自然场景深度估计 1. 引言&#xff1a;AI 单目深度估计的现实意义 在计算机视觉领域&#xff0c;从单张2D图像中恢复3D空间结构一直是极具挑战性的任务。传统方法依赖多视角几何或激光雷达等硬件设备&#xff0c;成本高且部署复杂。近年来&…

作者头像 李华
网站建设 2026/7/13 5:08:00

从零基础到 CTF 竞赛入门:2026最新超详细教程,看这篇直接上手

一、CTF简介 CTF&#xff08;Capture The Flag&#xff09;在中文网络安全界通称"夺旗赛"&#xff0c;代表着网络安全专家间最高层次的技术竞技。这项赛事形式诞生于1996年DEFCON全球黑客大会&#xff0c;旨在以安全可控的对抗形式取代早期黑客间的真实攻击行为。 …

作者头像 李华
网站建设 2026/7/9 13:46:11

[特殊字符]AI测试革命性突破!四层架构让测试效率暴涨300%,小白也能上手的企业级落地指南![特殊字符]

在软件测试领域&#xff0c;“效率低、覆盖窄、适应性差” 的痛点长期存在&#xff1a;某大型电商平台曾因回归测试用例编写滞后&#xff0c;导致新功能上线延迟 3 天&#xff1b;某金融机构因手工测试遗漏边界场景&#xff0c;引发线上交易故障。 而 AI 技术的成熟&#xff0…

作者头像 李华