软件工程团队经常难以让 API 文档与快速迭代的代码库保持同步,导致接口失效、参数缺失以及开发者体验不佳。将 Mintlify 与 GitHub 结合采用文档即代码(docs-as-code)方法,使团队能够像对待应用程序代码一样,以同等的工程严谨度来管理文档。通过将文档文件直接托管在 Git 仓库中、通过 Mintlify GitHub App 配置自动化部署,并将 OpenAPI 规范集成到持续集成(CI)流水线中,工程组织可以自动生成响应迅速的交互式开发者门户。这种方案消除了手动更新文档的负担,确保 API 参考文档与已部署的代码完全一致,并通过 Pull Request 预览建立流畅的审查工作流。
理解 Mintlify 与 GitHub 的文档即代码(Docs-as-Code)架构
Mintlify 基于文档即代码理念运行,文档源文件存放在 GitHub 仓库中,与生产代码并存或相邻。文档不再依赖静态内容管理系统(CMS)或独立的 Wiki 软件,而是使用 Markdown、MDX 组件和结构化配置文件进行定义。
该架构包含四个核心组件:
- 配置文件(
mint.json): 定义站点元数据、品牌标识、导航树、搜索设置以及与外部或内部 OpenAPI 规范的链接的核心配置文件。 - 内容文件(
.mdx): 扩展 Markdown 文件,将标准文本格式与交互式 React 风格组件(例如参数表、标签页、可折叠手风琴面板和代码组)结合在一起。 - OpenAPI 规范(
openapi.json/openapi.yaml): 标准化的机器可读 REST API 描述,Mintlify 会解析它们以生成交互式端点参考文档和“Try It”请求测试控制台。 - Mintlify GitHub 集成: 原生 GitHub App,用于监听仓库 Webhook,在变更合并到生产分支时自动触发云端构建,并为 Pull Request 生成预览环境。
+-----------------------------------------------------------------------+
| GitHub Repository |
| |
| +----------------+ +--------------------+ +---------------------+ |
| | mint.json | | docs/**/*.mdx | | openapi.json | |
| | (Site Config) | | (Guides & Pages) | | (API Specification) | |
| +----------------+ +--------------------+ +---------------------+ |
+-----------------------------------------------------------------------+
| ^
| (Push to main / Open PR) | (CI Auto-Sync)
v |
+-----------------------+ +-----------------------+
| Mintlify GitHub App | | GitHub Actions CI/CD |
| - Validates syntax | | - Extract spec from |
| - Builds static docs | | backend code |
| - Posts PR preview | | - Commit / Trigger |
+-----------------------+ +-----------------------+
|
v
+-----------------------------------------------------------------------+
| Production Documentation Site |
| (Interactive Developer Portal & Live API Playground) |
+-----------------------------------------------------------------------+
搭建文档代码仓库
工程团队既可以在独立的文档仓库中实施 Mintlify,也可以在现有的应用程序单体仓库(Monorepo)中实现。从清晰的目录布局开始,可以确保直观的导航和清晰的 CI/CD 边界。
1. 仓库结构
标准的 Mintlify 文档工作区遵循以下文件结构:
my-docs-repo/
├── .github/
│ └── workflows/
│ └── sync-api-spec.yml
├── docs/
│ ├── api-reference/
│ │ ├── authentication.mdx
│ │ └── errors.mdx
│ ├── guides/
│ │ ├── quickstart.mdx
│ │ └── rate-limits.mdx
│ └── openapi.json
└── mint.json
2. 配置 mint.json
mint.json 文件控制视觉主题、顶级导航和 API 参考文档的引入。团队通过配置 navigation 数组来组织概念指南,并自动链接 OpenAPI 规范中定义的 API 端点:
{
"$schema": "https://mintlify.com/schema.json",
"name": "Acme Developer Platform",
"logo": {
"dark": "/logo/dark.svg",
"light": "/logo/light.svg"
},
"favicon": "/favicon.svg",
"colors": {
"primary": "#0F52BA",
"light": "#4B9CD3",
"dark": "#002D62"
},
"navigation": [
{
"group": "Getting Started",
"pages": [
"docs/guides/quickstart",
"docs/guides/rate-limits"
]
},
{
"group": "API Reference",
"pages": [
"docs/api-reference/authentication",
"docs/api-reference/errors"
],
"openapi": "docs/openapi.json"
}
],
"api": {
"baseUrl": "https://api.acme.com/v1"
}
}
3. 使用 Mintlify CLI 进行本地开发
工程师在推送到 GitHub 之前应在本地验证文档更改。Mintlify CLI 提供了支持热重载的本地开发服务器:
- 全局安装 CLI 或使用
npx运行:npm install -g mint - 进入包含
mint.json的目录并启动开发服务器:mint dev - 在浏览器中打开
http://localhost:3000。对.mdx文件、mint.json或 OpenAPI 模式所做的任何修改都会即时重新加载。
通过 Mintlify GitHub App 实现自动化部署
连接 GitHub 与 Mintlify 的核心自动化机制是 Mintlify GitHub App。安装后,它将替代手动构建和部署脚本。
安装与分支配置
- 登录 Mintlify 控制台并导航至 Settings > Git Settings。
- 点击 Install GitHub App 并选择组织和目标仓库。
- 配置 Deployment Branch(通常为
main)。每当提交被推送到或合并进该分支时,Mintlify 都会触发生产构建。 - 如果文档位于 Monorepo 的子目录中(例如
/docs),请启用子目录开关并指定路径。这将限制构建,使 Mintlify 仅在文档目录内的文件发生更改时才触发。
Pull Request 预览与审查门禁
当工程师发起修改文档文件的 Pull Request 时,GitHub App 会自动执行构建检查,并在 PR 中留言附上唯一的预览 URL:
- 视觉质量保证(Visual QA): 审查人员可以在合并前直接在预览域名上检查渲染出的 MDX 组件、格式和交互式测试控制台。
- 语法验证: 如果引入了格式错误的 Markdown 元素、失效的内部链接或无效的 JSON 模式,构建检查将会失败,从而阻止 PR 合并到
main分支。 - 跨职能协作: 技术文档工程师、产品经理和开发人员可以在用于代码审查的同一界面中审查文案修改。
通过 GitHub Actions 自动化更新 OpenAPI 规范
概念指南通常使用 MDX 手动编写,而 API 参考文档则应始终直接派生自源代码。当后端工程师修改接口路由、请求载荷或响应模式时,自动化流水线必须更新文档目录中的 OpenAPI 规范文件。
在单体仓库(Monorepo)中同步规范
在 API 服务代码(例如 FastAPI、Express、NestJS 或 Go)与文档并存的 Monorepo 中,GitHub Actions 可以在每次提交时生成最新规范,并保持文档目录为最新状态。
以下 GitHub Actions 工作流展示了如何从后端服务中提取 OpenAPI 模式并触发 Mintlify 部署:
name: Sync OpenAPI Spec and Deploy Docs
on:
push:
branches:
- main
paths:
- 'services/api/**'
- 'docs/**'
jobs:
sync-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python Environment
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Dependencies
run: |
pip install -r services/api/requirements.txt
- name: Generate OpenAPI Specification
run: |
python -c "import json; from services.api.main import app; print(json.dumps(app.openapi()))" > docs/openapi.json
- name: Check for Spec Changes
id: git-diff
run: |
git diff --quiet docs/openapi.json || echo "changed=true" >> $GITHUB_OUTPUT
- name: Commit and Push Updated Spec
if: steps.git-diff.outputs.changed == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add docs/openapi.json
git commit -m "chore(docs): auto-update openapi.json from backend"
git push origin main
- name: Trigger Mintlify Deployment
run: |
curl -X POST https://api.mintlify.com/api/deploy \
-H "Authorization: Bearer ${{ secrets.MINTLIFY_API_TOKEN }}"
多仓库同步架构
在微服务架构中,后端服务通常存放在与集中式文档门户分离的独立仓库中,团队可使用 Repository Dispatch 事件或直接 API 调用:
- 服务 CI: 当后端服务在其独立仓库中构建时,CI 生成
openapi.json。 - Dispatch 或 PR: 工作流使用 GitHub Personal Access Token 向文档仓库派发 Webhook 事件,以更新后的规范发起自动化 Pull Request。
- 验证与合并: 文档仓库运行模式 Lint 检查,生成 Mintlify 预览,并在获得批准后合并更新。
API 文档自动化最佳实践
为了在不断扩大的工程团队中保持高标准的文档质量,建议执行以下运维标准:
| 实践 | 实施机制 | 收益 |
|---|---|---|
| 模式验证 | 在合并前于 CI 中运行 mint validate 或 Spectral Linter。 | 防止损坏的 OpenAPI 模式或无效的参数类型进入生产环境。 |
| 原子化代码与文档 PR | 要求 API 代码变更与对应的文档更新包含在同一个 PR 中。 | 消除发布功能与发布其对应文档之间的时间差。 |
| 环境变量安全 | 切勿将 API 密钥或生产机密提交到 OpenAPI 服务器配置块中。 | 保护基础设施安全,同时允许用户在交互式测试控制台中输入测试密钥。 |
| 端点打标(Tagging) | 在代码注解中通过一致的 tags 组织 OpenAPI 路径。 | Mintlify 会根据标签自动将端点分组为结构化的导航板块。 |
| 变更日志自动化 | 使用 GitHub Releases 或 Git 标签在 docs/changelog.mdx 中生成发布说明。 | 让调用方及时了解弃用声明、速率限制调整和新功能。 |
通过将 API 文档视作代码、将源文件托管在 GitHub 中,并实现部署与规范流水线的自动化,软件工程团队可以彻底消除文档漂移,加速开发者上手流程,并交付一个随每次代码发布始终保持准确的交互式 API 门户。