为 Ansible 文档贡献力量

Ansible 拥有大量的文档,但写作团队却很小。社区支持帮助我们跟上新功能、修复和更改的步伐。

改进文档是您对 Ansible 项目做出首次贡献的简便途径。您不必是程序员,因为我们的大部分文档都是用 YAML(模块文档)或 reStructuredText(rST)编写的。一些集合级文档是用 Markdown 的一个子集编写的。如果您正在使用 Ansible,那么您已经在您的剧本中使用 YAML 了。rST 和 Markdown 基本上只是文本。您甚至不需要 Git 经验,如果您使用的是 Edit on GitHub 选项。

如果您在这个文档网站上发现任何拼写错误、示例错误、主题缺失或其他任何错误或遗漏,请告诉我们。以下是一些支持 Ansible 文档的方法。

直接在 GitHub 上编辑文档

对于拼写错误和其他快速修复,您可以直接从网站上编辑大部分文档。查看此页面的右上角。该 Edit on GitHub 链接在文档中的所有指南页面上都有。如果您有 GitHub 帐户,您可以通过这种方式提交快速简便的拉取请求。

注意

单个集合插件的源文件存在于它们各自的存储库中。按照 Galaxy 上集合的链接找到存储库的位置以及有关如何为该集合做出贡献的任何指南。

使用 Edit on GitHub 从 docs.ansible.com 提交文档 PR

  1. 单击 Edit on GitHub

  2. 如果您还没有在您的 GitHub 帐户上创建 ansible 库的分支,您将被提示创建一个。

  3. 修复拼写错误、更新示例,或进行您想到的任何其他更改。

  4. 在 GitHub 页面底部 Propose file change 标题下的第一个矩形中输入提交消息。越具体越好。例如,“修复 my_module 说明中的拼写错误”。如果您愿意,可以在第二个矩形中添加更多细节。保留 +label: docsite_pr

  5. 通过单击绿色的“提出文件更改”按钮提交建议的更改。GitHub 将为您处理分支和提交,并打开一个标题为“比较更改”的页面。

  6. 单击 Create pull request 打开 PR 模板。

  7. 填写 PR 模板,包括与您的更改相关的尽可能多的详细信息。如果您愿意,您可以更改您的 PR 的标题(默认情况下它与您的提交消息相同)。在 Issue Type 部分,删除除 Docs Pull Request 行之外的所有行。

  8. 通过单击 Create pull request 按钮提交您的更改。

  9. 耐心等待 Ansibot,我们的自动化脚本,添加标签,ping 文档维护人员,并启动 CI 测试运行。

  10. 密切关注您的 PR - 文档团队可能会要求您进行更改。

审查或解决未解决的问题

审查或解决以下文档中的未解决的问题

审查未解决的 PR

审查以下文档的未解决的拉取请求

要添加有用的审查,请

  • 如果适用,测试更改。

  • 思考是否可以做得更好(包括措辞、结构、修复拼写错误等等)。

  • 建议改进。

  • 使用 looks good to me 评论批准更改。

打开新的问题和/或 PR

如果您注意到问题过于复杂,无法使用 Edit on GitHub 选项解决,并且没有未解决的问题或 PR 记录了该问题,请在正确的基础存储库中打开问题和/或 PR - ansible/ansible-documentation 用于大多数不是插件或模块文档的页面。如果文档页面没有 Edit on GitHub 选项,请检查页面是否是集合中的模块。如果是,请按照 Galaxy 上集合的链接,选择右上角的 repo 按钮,以找到该集合和模块的源存储库。集合自述文件应该包含有关如何为该集合做出贡献或报告问题的详细信息。

一个优秀的文档 GitHub 问题或 PR 包括

  • 一个具体的标题

  • 对问题的详细描述(即使对于 PR 也是如此 - 很难评估建议的更改,除非我们知道它要解决什么问题)

  • 指向其他信息的链接(相关问题/PR、外部文档、docs.ansible.com 上的页面等等)

验证您的文档 PR

如果您对 Ansible 文档进行了多次更改,或者向其添加了不止一行,请在打开拉取请求之前

  1. 检查您的文本是否遵循我们的 Ansible 文档样式指南

  2. 测试您的更改以查找 rST 错误。

  3. 在本地构建页面,最好是构建整个文档网站。

注意

以下部分适用于来自 ansible/ansible-documentation 存储库的文档,不适用于来自单个集合的文档。有关如何为该集合做出贡献的详细信息,请参阅集合自述文件。集合开发者也可以整理其集合级文档。有关详细信息,请参阅 验证您的集合文档

设置本地构建文档的环境

要在本地构建文档,请确保您有一个有效的 开发环境

要在本地机器上处理文档,您应该使用满足 ansible-core 最低要求的 Python 版本。有关 Python 最低版本的信息,请参阅 支持矩阵

  1. 设置一个虚拟环境来安装依赖项。

    python3 -m venv ./venv
    source ./venv/bin/activate
    
  2. 克隆 Ansible Core 文档构建所需的组件。

    python3 docs/bin/clone-core.py
    
  3. 安装未固定或经过测试的文档依赖项。

    pip install -r tests/requirements.in -c tests/requirements.txt # Installs tested dependency versions.
    pip install -r tests/requirements.in # Installs the unpinned dependency versions.
    pip install -r tests/requirements-relaxed.in # Installs the unpinned dependency versions including untested antsibull-docs.
    

注意

在检出 ansible/ansible-documentation 后,请确保 docs/docsite/rst 目录的权限足够严格。它应该只允许所有者帐户写入。如果您的默认 umask 不是 022,您可以使用 chmod go-w docs/docsite/rst 在新分支中正确设置权限。或者,您可以将您的 umask 设置为 022,使系统上所有新创建的文件(包括由 git clone 创建的文件)具有正确的权限。

在本地测试文档

要测试单个文件是否存在 rST 错误

rstcheck changed_file.rst

在本地构建文档

构建文档是检查错误和审查更改的最佳方法。一旦 rstcheck 运行没有错误,导航到 ansible-documentation/docs/docsite 然后构建要查看的页面。

注意

如果在 macOS 上使用 Python 3.8 或更高版本构建,则必须使用 Sphinx >= 2.2.2。有关详细信息,请参见 #6803

定期克隆 Ansible Core

位于 ansible/ansible-documentation 存储库中的文档建立在 ansible/ansible 存储库的基础之上。在您设置本地构建环境时,您将克隆 Ansible Core 的相关部分。

为确保您使用来自 Ansible Core 的最新源代码,您应该在构建文档之前定期运行以下脚本

python3 docs/bin/clone-core.py

构建单个 rST 页面

要使用 make 实用程序构建单个 rST 文件

make htmlsingle rst=path/to/your_file.rst

例如

make htmlsingle rst=community/documentation_contributions.rst

此过程编译所有链接,但提供最少的日志输出。如果您正在编写一个新页面或需要更详细的日志输出,请参考有关 使用 sphinx-build 构建 rST 文件 的说明。

注意

make htmlsinglerst/ 添加到您在 rst= 中提供的路径的开头,因此您无法使用自动完成键入文件名。以下是在您出现错误时将看到的错误消息。

  • 如果您从 docs/docsite/rst/ 目录运行 make htmlsinglemake: *** No rule to make target `htmlsingle'.  Stop.

  • 如果您从 docs/docsite/ 目录运行 make htmlsingle,并使用 rST 文档的完整路径:sphinx-build: error: cannot find files ['rst/rst/community/documentation_contributions.rst']

构建所有 rST 页面

要使用几乎没有模块文档构建所有 rST 文件

make coredocs

这实际上是在构建 ansible-core 文档,而不是 Ansible 社区包文档,后者包含许多集合的文档。

构建模块文档和 rST 页面

要构建 Ansible 社区包的所有模块文档以及所有 rST 文件

make webdocs

使用 sphinx-build 构建 rST 文件

高级用户可以直接使用 sphinx 实用程序构建一个或多个 rST 文件。sphinx-build 在您只构建单个页面时会返回误导性的 undefined label 警告,因为它不会创建内部链接。但是,sphinx-build 会返回更全面的语法反馈,包括有关缩进错误和 x-string without end-string 警告的警告。这可能很有用,尤其是当您从头开始创建一个新页面时。要使用 sphinx-build 构建页面

sphinx-build [options] sourcedir outdir [filenames...]

您可以指定文件名,或者使用 -a 指定所有文件,或者省略两者以仅编译新文件或更改的文件。

例如

sphinx-build -b html -c rst/ rst/dev_guide/ _build/html/dev_guide/ rst/dev_guide/developing_modules_documenting.rst

运行最终测试

当您提交文档拉取请求时,将运行自动化测试。这些相同的测试可以在本地运行。为此,请导航到存储库的顶层目录并运行

make clean -C docs/docsite
python tests/checkers.py docs-build
python tests/checkers.py rstcheck

建议在存储库的干净副本上运行测试,这是 make clean 命令的目的。

加入文档工作组

文档工作组 (DaWGs) 每周二在 docs:ansible.im 聊天室 (在 Matrix 上) 会面。有关更多信息(包括指向我们议程的链接),请访问我们的 论坛组