GitHub Actions CI/CD
问题
从本地机器手动构建和部署文档容易出错,且存在环境不一致(例如 Node.js 版本不同)和安全风险。此外,这还会造成瓶颈,因为部署取决于单个人员的可用性和本地设置。
为什么重要
持续部署 (CD) 可确保您的文档始终与软件同步。当技术更新被合并时,它应该在几分钟内(而不是几天)到达用户手中。自动化保证了每次构建都在干净、可重复的环境中进行,从而保持了高质量和高可靠性的标准。
方法
利用 GitHub Actions 在每次推送或拉取请求 (Pull Request) 时运行 docmd 构建流水线。生成的静态资产随后可以自动部署到 GitHub Pages、Cloudflare Pages 等托管提供商,或使用 Docker 部署到容器化环境中。
实施
1. 标准 GitHub Pages 工作流
创建 .github/workflows/docs.yml 以自动化构建和部署过程。
name: 部署文档
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- run: npm install
# 将站点构建到 'site/' 目录中
- run: npx @docmd/core build
- name: 上传产物
uses: actions/upload-pages-artifact@v3
with:
path: site/
- name: 部署到 GitHub Pages
uses: actions/deploy-pages@v4
2. 容器化部署 (Docker)
如果您自行托管文档,请使用 部署命令 生成生产级 Dockerfile 和服务器配置。
# 在本地生成 Docker 和 Nginx 配置
npx @docmd/core deploy --docker --nginx
随后,您可以更新 GitHub Action,以便在发布新版本时构建此 Docker 镜像并将其推送到注册表(如 Docker Hub 或 GitHub Container Registry)。
3. 拉取请求预览
通过为每个拉取请求生成临时的预览环境来增强您的工作流。这允许审查人员在更改合并到主分支之前查看渲染后的文档。有关更多详细信息,请参阅 预览更改指南。
权衡
自动化的 CI/CD 需要初始设置时间并需要管理机密(如 API 令牌)。然而,从长远来看,“无需干预”的部署过程带来的好处——包括减少人为错误和缩短更新周期——远超初始投入。对于大型站点,请确保您的工作流仅在文档目录中的文件发生更改时才触发,以节省 CI 额度。