Read the Docs 项目构建过程自定义指南

Read the Docs 项目构建过程自定义指南

readthedocs.org The source code that powers readthedocs.org readthedocs.org 项目地址: https://gitcode.com/gh_mirrors/re/readthedocs.org

概述

Read the Docs 是一个流行的文档托管平台,它提供了标准化的文档构建流程。然而,不同项目可能有特殊需求,因此平台提供了灵活的构建过程自定义功能。本文将详细介绍如何在 Read the Docs 项目中自定义构建过程。

构建过程自定义的两种方式

1. 扩展或覆盖标准构建流程

这种方式适合希望保留 MkDocs 或 Sphinx 默认构建命令,但需要添加额外步骤或修改部分命令的项目。

2. 完全自定义构建流程

这种方式适合需要完全控制构建过程的项目,可以使用任何能生成 HTML 的工具。

可自定义的构建阶段

Read the Docs 的构建过程分为多个阶段,每个阶段都提供了钩子让用户插入自定义命令:

| 构建阶段 | 可自定义的钩子 | |---------|---------------| | 代码检出 | post_checkout | | 系统依赖 | pre_system_dependencies, post_system_dependencies | | 创建环境 | pre_create_environment, create_environment, post_create_environment | | 安装依赖 | pre_install, install, post_install | | 构建文档 | pre_build, build, post_build | | 上传结果 | 当前不可自定义 |

注意:checkoutsystem_dependenciesupload 这些预定义作业不能被覆盖或跳过。

配置示例

以下是一个典型的 .readthedocs.yaml 配置文件示例,展示了如何自定义构建过程:

version: 2
formats: [htmlzip, pdf]
sphinx:
  configuration: docs/conf.py
python:
  install:
    - requirements: docs/requirements.txt
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.10"
  jobs:
    pre_install:
      - bash ./scripts/pre_install.sh
    build:
      htmlzip:
        - echo "覆盖 htmlzip 格式的默认构建命令"
        - mkdir -p $READTHEDOCS_OUTPUT/htmlzip/
        - echo "Hello, world!" > $READTHEDOCS_OUTPUT/htmlzip/index.zip
    post_build:
      - curl -X POST \
        -F "project=${READTHEDOCS_PROJECT}" \
        -F "version=${READTHEDOCS_VERSION}" https://example.com/webhooks/readthedocs/

重要特性与限制

  1. 工作目录:命令执行时的工作目录是项目仓库的根目录
  2. 环境变量:每条命令都会展开环境变量
  3. 命令隔离:每条命令都在新的 shell 进程中执行,环境变量修改不会保留
  4. 错误处理:任何命令返回非零退出码都会导致构建立即失败
  5. 必要配置:使用 build.jobs 时必须指定 build.osbuild.tools
  6. 默认行为
    • 如果定义了 Sphinx 或 MkDocs 配置,相关阶段会使用默认命令
    • 如果未定义,相关阶段默认不执行任何操作

输出文件位置

当覆盖构建步骤时,你需要自行生成 HTML 和其他格式的文档。Read the Docs 会托管 $READTHEDOCS_OUTPUT/<format>/ 目录中的内容。

支持的格式及其对应目录:

  • $READTHEDOCS_OUTPUT/html/ (必需)
  • $READTHEDOCS_OUTPUT/htmlzip/
  • $READTHEDOCS_OUTPUT/pdf/
  • $READTHEDOCS_OUTPUT/epub/

注意:在添加内容前,请确保创建了相应的输出目录。

搜索功能支持

Read the Docs 会自动索引所有 HTML 文件的内容,并遵循配置中的搜索选项。搜索结果可以通过仪表板或搜索 API 访问。

替代语法

除了 build.jobs,还可以使用 build.commands 完全覆盖构建过程:

version: 2
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.10"
  commands:
    - pip install pelican
    - pelican --settings docs/pelicanconf.py --output $READTHEDOCS_OUTPUT/html/ docs/

但我们推荐使用 build.jobs,因为它提供了更结构化的方式,支持为不同格式定义不同命令,还能通过 build.apt_packages 安装系统依赖。

实用示例

1. 完整 Git 克隆

version: 2
build:
  os: "ubuntu-20.04"
  tools:
    python: "3.10"
  jobs:
    post_checkout:
      - git fetch --unshallow || true
      - git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' || true
      - git fetch --all --tags || true

2. 基于条件取消构建

version: 2
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.12"
  jobs:
    post_checkout:
      - |
        if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- docs/ .readthedocs.yaml;
        then
          exit 183;
        fi

3. 使用 Doxygen 生成文档

version: 2
build:
  os: "ubuntu-20.04"
  tools:
    python: "3.10"
  jobs:
    pre_build:
      - doxygen

4. 安装 Node.js 依赖

version: 2
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.9"
    nodejs: "16"
  jobs:
    post_install:
      - npm ci
      - npm install -g jsdoc

5. 使用 Poetry 安装依赖

version: 2
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.10"
  jobs:
    post_install:
      - pip install poetry
      - VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install --with docs
sphinx:
  configuration: docs/conf.py

6. 检查损坏的链接

version: 2
build:
  os: "ubuntu-20.04"
  tools:
    python: "3.10"
  jobs:
    pre_build:
      - python -m sphinx -b linkcheck -D linkcheck_timeout=1 docs/ $READTHEDOCS_OUTPUT/linkcheck

总结

Read the Docs 提供了强大的构建过程自定义功能,可以满足各种复杂项目的需求。通过合理使用构建钩子和自定义命令,你可以实现从简单的构建流程调整到完全自定义的文档生成过程。本文提供的示例可以作为起点,根据你的具体需求进行调整。

readthedocs.org The source code that powers readthedocs.org readthedocs.org 项目地址: https://gitcode.com/gh_mirrors/re/readthedocs.org

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤萌妮Margaret

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值