news 2026/6/10 15:30:34

用 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/6/10 13:03:14

单目深度估计MiDaS:虚拟旅游场景应用

单目深度估计MiDaS&#xff1a;虚拟旅游场景应用 1. 引言&#xff1a;AI 单目深度估计与虚拟旅游的融合前景 随着增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和数字孪生技术的发展&#xff0c;用户对沉浸式视觉体验的需求日益增长。在虚拟旅游这…

作者头像 李华
网站建设 2026/6/10 11:59:48

AI单目测距保姆级教程:MiDaS模型部署与使用详解

AI单目测距保姆级教程&#xff1a;MiDaS模型部署与使用详解 1. 引言&#xff1a;走进AI的“三维眼睛” 1.1 单目深度估计的技术背景 在计算机视觉领域&#xff0c;如何让机器“看懂”真实世界的三维结构一直是一个核心挑战。传统方法依赖双目立体视觉或多传感器融合&#xf…

作者头像 李华
网站建设 2026/6/10 4:38:27

Linux应急响应深度实战:服务排查、文件审计与敏感目录监控

前言 在Linux应急响应中,除了进程和网络分析,服务配置排查和文件系统审计同样关键。攻击者常常通过修改服务配置实现持久化,替换系统命令植入后门,在敏感目录隐藏恶意文件。本文将深入讲解Linux服务管理、文件完整性检查、敏感目录监控等高级技术,帮助安全人员全面掌握文件系统…

作者头像 李华
网站建设 2026/6/10 6:58:20

AI 3D感知开发:MiDaS模型与Unity集成教程

AI 3D感知开发&#xff1a;MiDaS模型与Unity集成教程 1. 引言&#xff1a;让AI“看见”三维世界 在计算机视觉领域&#xff0c;单目深度估计&#xff08;Monocular Depth Estimation&#xff09;是一项极具挑战性但又极具应用价值的技术。传统双目或激光雷达系统虽然能获取精…

作者头像 李华
网站建设 2026/6/10 12:00:10

边缘设备也能跑翻译大模型?HY-MT1.5-1.8B镜像实测揭秘

边缘设备也能跑翻译大模型&#xff1f;HY-MT1.5-1.8B镜像实测揭秘 1. 引言&#xff1a;轻量级大模型如何改变边缘翻译格局 在全球化与移动化并行发展的今天&#xff0c;实时、低延迟的多语言翻译能力正从“增值服务”演变为“基础刚需”。无论是智能眼镜、手持翻译机&#xf…

作者头像 李华