跳转到主要内容

你将构建的内容

一个自动化流程:当代码推送到主 branch 时自动更新文档。该工作流可在多个平台上搭建,包括 GitHub Actions 和 n8n。它会监控你的代码存储库,然后调用代理 API,在单独的文档存储库中更新文档。 此工作流连接两个独立的存储库:
  • 代码存储库:用于存放应用程序代码。你将在此存储库上设置自动化触发器。示例包括后端 API、前端应用、SDK,或命令行界面(CLI)工具。
  • 文档存储库:用于存放文档并连接到你的 Mintlify 项目。代理会在此存储库中创建包含文档更新的拉取请求(PR;亦称“合并请求”/Merge Request)。
本教程假设你的文档与应用程序代码位于不同的存储库中。如果你使用 monorepo,请修改工作流以定位存放文档的目录。

工作流概览

  1. 有人将代码推送到你的主分支。
  2. 工作流被触发。
  3. 工作流调用代理的 API 来更新你的文档。
  4. 代理在你的文档存储库中创建一个包含文档更新的拉取请求(PR)。

选择你的平台

  • GitHub Actions
  • n8n
如果您的代码已在 GitHub 上,GitHub Actions 是最简单的选择。无需额外服务。

前提条件

在代码仓库中安装 Mintlify 应用

必须在您的代码仓库中安装 Mintlify 应用,以便 agent 能够从代码库获取上下文信息。要将应用添加到新仓库:
  1. 在 Mintlify 仪表盘中,前往 Agent 页面。
  2. 点击 Add to new organization。这会跳转到 GitHub 上的应用安装页面。
  3. 从列表中选择要授予访问权限的仓库。
  4. 保存更改。

获取管理员 API 密钥

  1. 在仪表盘中前往 API keys 页面。
  2. 选择 Create Admin API Key
  3. 复制该密钥并妥善保存。

构建工作流

创建工作流文件

  1. 在代码仓库中创建一个新文件:.github/workflows/update-docs.yml
  2. 添加以下工作流:
    name: 更新文档
    
    on:
    push:
        branches:
        - main
    
    jobs:
    update-docs:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/github-script@v8
            env:
            MINTLIFY_API_KEY: ${{ secrets.MINTLIFY_API_KEY }}
            PROJECT_ID: ${{ secrets.MINTLIFY_PROJECT_ID }}
            with:
            script: |
                const { owner, repo } = context.repo;
                const projectId = process.env.PROJECT_ID;
                const apiKey = process.env.MINTLIFY_API_KEY;
    
                if (!projectId || !apiKey) {
                core.setFailed('缺少 MINTLIFY_PROJECT_ID 或 MINTLIFY_API_KEY 密钥');
                return;
                }
    
                const url = `https://api.mintlify.com/v1/agent/${projectId}/job`;
                const payload = {
                branch: `mintlify/docs-update-${Date.now()}`,
                messages: [
                    {
                    role: 'system',
                    content: '你是一个根据代码变更自动更新文档的操作执行器。你不应该提出任何问题。如果无法访问代码仓库,请报告错误并退出。'
                    },
                    {
                    role: 'user',
                    content: `更新我们最近推送到 main 分支的文档:\n\n代码仓库: ${owner}/${repo}`
                    }
                ]
                };
    
                try {
                    const response = await fetch(url, {
                    method: 'POST',
                    headers: {
                        'Authorization': `Bearer ${apiKey}`,
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify(payload)
                    });
    
                    if (!response.ok) {
                    throw new Error(`API 请求失败,状态码为 ${response.status}: ${await response.text()}`);
                    }
    
                    const reader = response.body.getReader();
                    const decoder = new TextDecoder();
                    let buffer = '';
    
                    while (true) {
                    const { done, value } = await reader.read();
                    if (done) break;
                    buffer += decoder.decode(value, { stream: true });
                    const lines = buffer.split('\n');
                    buffer = lines.pop() || '';
                    for (const line of lines) {
                        if (line.trim()) {
                        console.log(line);
                        }
                    }
                    }
                    if (buffer.trim()) {
                    console.log(buffer);
                    }
    
                    core.notice(`已为 ${owner}/${repo} 触发文档更新任务`);
                } catch (error) {
                    core.setFailed(`创建文档更新任务失败: ${error.message}`);
                }
    

添加密钥

  1. 在代码仓库中,依次点击 SettingsSecrets and variablesActions
  2. 点击 New repository secret
  3. 添加以下机密:
    • 名称:MINTLIFY_API_KEY,Secret:您的 Mintlify 管理员 API 密钥
    • 名称:MINTLIFY_PROJECT_ID,Secret:您的 Mintlify 项目 ID(可在仪表盘的 API keys 页面找到)
更多信息请参阅 GitHub 文档中的在 GitHub Actions 中使用密钥

测试自动化

  1. 在你的代码仓库中做一个小改动,并推送到 main 分支:
    git add .
    git commit -m "测试:触发文档自动化"
    git push origin main
    
  2. 在代码仓库中打开 Actions 选项卡查看工作流的运行状态。
  3. 工作流运行完成后,查看你的文档仓库中是否已创建包含文档更新的新分支和拉取请求(pull request)。

故障排除

工作流未运行

  • 请确认已在代码仓库中启用 GitHub Actions。
  • Actions 选项卡中查看错误信息。
  • 确保工作流程文件位于 .github/workflows/ 目录下,并使用 .yml 扩展名。

代理 API 返回 401 错误

  • 请确认你的 API 密钥是否以 mint_ 开头。
  • 检查 Authorization 请求头的格式是否为 Bearer mint_yourkey
  • 确认该 API 密钥对应的 Mintlify 组织是否正确。

文档更新未显示

  • 确认文档仓库已连接到你的 Mintlify 项目。
  • 确认代理对文档仓库具有写入权限。
  • 检查工作流日志中代理的错误信息。