为 Ansible 文档做贡献
Ansible 拥有大量的文档和一个小型编写团队。社区的支持有助于我们跟上新功能、修复程序和变更的步伐。
改进文档是为您对 Ansible 项目做出首次贡献的一种简便方法。您不必是程序员,因为我们的大部分文档都是用 YAML(模块文档)或 reStructuredText (rST) 编写的。一些集合层面的文档是用 Markdown 的一个子集编写的。如果您正在使用 Ansible,您已经在 Playbook 中使用过 YAML 了。rST 和 Markdown 大多只是纯文本。如果您使用 Edit on GitHub(在 GitHub 上编辑)选项,甚至不需要 Git 经验。
如果您在本文档网站上发现错别字、损坏的示例、缺失的主题,或任何其他错误或遗漏,请告知我们。以下是一些支持 Ansible 文档的方法:
直接在 GitHub 上编辑文档
对于错别字和其他快速修复,您可以直接在网站上编辑大部分文档。查看本页面右上角。该 Edit on GitHub 链接适用于文档中的所有指南页面。如果您有 GitHub 账户,可以通过这种方式轻松提交拉取请求 (Pull Request)。
注意
各个集合插件的源文件位于它们各自的存储库中。通过 Galaxy 上的链接找到集合的位置,以及关于如何为该集合做出贡献的任何指南。
要使用 Edit on GitHub 从 docs.ansible.com 提交文档 PR:
点击
Edit on GitHub。如果您的 GitHub 账户中还没有 ansible 仓库的分支 (fork),系统会提示您创建一个。
修正错别字、更新示例或进行您想做的任何其他更改。
在 GitHub 页面底部的
Propose file change(建议文件更改)标题下的第一个矩形中输入提交信息。越具体越好。例如:“修复 my_module 描述中的错别字”。如果愿意,您可以在第二个矩形中添加更多详细信息。保留那里的+label: docsite_pr。点击绿色的“Propose file change”按钮提交建议的更改。GitHub 会为您处理分支和提交,并打开一个标题为“Comparing Changes”的页面。
点击
Create pull request以打开 PR 模板。填写 PR 模板,尽可能包含与您的更改相关的详细信息。如果愿意,您可以更改 PR 的标题(默认与您的提交信息相同)。在
Issue Type部分,删除除Docs Pull Request行以外的所有行。通过点击
Create pull request按钮提交您的更改。请耐心等待 Ansibot(我们的自动化脚本)添加标签、通知文档维护者并启动 CI 测试运行。
密切关注您的 PR——文档团队可能会要求您进行更改。
审阅或解决待处理的问题
审阅或解决以下项目的待处理文档问题:
审阅待处理的 PR
审阅以下项目的待处理文档拉取请求:
要添加有益的审阅,请:
如果适用,测试该更改。
思考是否可以做得更好(包括措辞、结构、修复错别字等)。
提出改进建议。
使用
looks good to me(我看没问题)评论批准该更改。
开启新问题和/或 PR
如果您发现的问题太复杂,无法通过 Edit on GitHub 选项解决,且没有现有的待处理问题或 PR 记录该问题,请在正确的底层仓库中开启问题和/或 PR。对于大多数非插件或模块文档的页面,请使用 ansible/ansible-documentation。如果文档页面没有 Edit on GitHub 选项,请检查该页面是否为集合内的模块。如果是,请点击 Galaxy 上的集合链接,并选择右上角的 repo 按钮,以找到该集合和模块的源存储库。集合的 README 文件应包含有关如何为该集合做出贡献或报告问题的信息。
优秀的文档 GitHub 问题或 PR 应包含:
明确的标题
对问题的详细描述(即使是 PR 也需要——除非我们知道它要解决什么问题,否则很难评估建议的更改)
其他信息的链接(相关问题/PR、外部文档、docs.ansible.com 上的页面等)
验证您的文档 PR
如果您对 Ansible 文档进行了多次更改,或添加了超过一行内容,请在开启拉取请求之前:
检查您的文本是否符合我们的 Ansible 文档风格指南。
测试您的更改是否存在 rST 错误。
在本地构建该页面,最好是构建整个文档站点。
注意
以下章节适用于源自 ansible/ansible-documentation 仓库的文档,不适用于来自单个集合的文档。有关如何为集合做出贡献的详细信息,请参阅集合的 README 文件。集合开发者也可以检查其集合级别的文档。请参阅 验证您的集合文档 获取详细信息。
设置本地构建文档的环境
要在本地构建文档,请确保您拥有一个可用的 开发环境。
要在本地机器上处理文档,您应该使用符合 ansible-core 最低要求的 Python 版本。有关最低 Python 版本的更多信息,请参阅 支持矩阵。
设置一个虚拟环境以安装依赖项。
python3 -m venv ./venv source ./venv/bin/activate
克隆构建文档所需的 Ansible Core 部分。
python3 docs/bin/clone-core.py安装未锁定或经过测试的文档依赖项。
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.
注意
检出 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,然后构建您想要审查的页面。
注意
如果在安装 Python 3.8 或更高版本的 macOS 上进行构建,则必须使用 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 htmlsingle 会在您在 rst= 中提供的路径开头添加 rst/,因此您无法使用自动补全输入文件名。如果操作不当,您将看到以下错误消息:
如果您从
docs/docsite/rst/目录运行make htmlsingle:make: *** 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) 每周二在 Matrix 上的 docs:ansible.im 聊天室开会。欲了解更多信息(包括我们的议程链接),请访问我们的 论坛群组。