为 Ansible 文档做贡献
Ansible 有大量的文档和一个小型编写团队。社区的支持帮助我们跟上新功能、修复和更改的步伐。
改进文档是您为 Ansible 项目做出首次贡献的简单方法。您不必是程序员,因为我们的大部分文档都是用 YAML(模块文档)或 reStructuredText (rST) 编写的。一些集合级别的文档是用 Markdown 的子集编写的。如果您正在使用 Ansible,您已经在您的 playbook 中使用 YAML 了。rST 和 Markdown 大部分只是文本。如果您使用 在 GitHub 上编辑 选项,您甚至不需要 Git 经验。
如果您在此文档网站上发现拼写错误、损坏的示例、缺少的主题或任何其他错误或遗漏,请告诉我们。以下是一些支持 Ansible 文档的方法
直接在 GitHub 上编辑文档
对于拼写错误和其他快速修复,您可以直接从网站编辑大多数文档。查看此页面的右上角。该 在 GitHub 上编辑 链接在文档中的所有指南页面上都可用。如果您有 GitHub 帐户,您可以通过这种方式提交一个快速简便的拉取请求。
注意
各个集合插件的源文件存在于它们各自的存储库中。请访问 Galaxy 上的集合链接,找到存储库的位置以及有关如何为该集合做出贡献的任何指南。
要使用 在 GitHub 上编辑 从 docs.ansible.com 提交文档 PR,请执行以下操作:
单击
在 GitHub 上编辑。如果您的 GitHub 帐户上还没有 ansible 仓库的分支,系统会提示您创建一个。
修复拼写错误、更新示例或进行您想到的任何其他更改。
在 GitHub 页面底部的
提出 文件 更改标题下的第一个矩形中输入提交消息。越具体越好。例如,“修复 my_module 描述中的拼写错误”。如果您愿意,可以在第二个矩形中放入更多详细信息。保留那里的+label: docsite_pr。单击绿色的“提出文件更改”按钮提交建议的更改。GitHub 将为您处理分支和提交,并打开一个标题为“比较更改”的页面。
单击
创建 拉取 请求打开 PR 模板。填写 PR 模板,包括尽可能多的与您的更改相关的详细信息。您可以根据需要更改 PR 的标题(默认情况下它与您的提交消息相同)。在
问题 类型部分,删除除文档 拉取 请求行之外的所有行。单击
创建 拉取 请求按钮提交您的更改。请耐心等待,我们的自动化脚本 Ansibot 会添加标签、ping 文档维护人员并启动 CI 测试运行。
密切关注您的 PR - 文档团队可能会要求您进行更改。
审查或解决未解决的问题
审查或解决以下未解决的文档问题
审查未决的 PR
审查以下未决的文档拉取请求
要添加有用的审查,请
测试更改(如果适用)。
考虑是否可以做得更好(包括措辞、结构、修复拼写错误等)。
提出改进建议。
使用
看起来 不错注释批准更改。
开启新的问题和/或 PR
如果您发现的问题过于复杂,无法使用 在 GitHub 上编辑 选项进行修复,并且没有公开的问题或 PR 已经记录了该问题,请在正确的底层仓库中打开问题和/或 PR - 对于大多数非插件或模块文档的页面,请使用 ansible/ansible-documentation。如果文档页面没有 在 GitHub 上编辑 选项,请检查该页面是否是集合中的模块。如果是这样,请访问 Galaxy 上的集合链接,然后选择右上角的 repo 按钮,以查找该集合和模块的源存储库。集合 README 文件应包含有关如何为该集合做出贡献或报告问题的信息。
一个好的文档 GitHub 问题或 PR 包括
一个具体的标题
问题的详细描述(即使是 PR 也是如此 - 除非我们知道它要解决什么问题,否则很难评估建议的更改)
指向其他信息的链接(相关问题/PR、外部文档、docs.ansible.com 上的页面等)
验证您的文档 PR
如果您对 Ansible 文档进行了多处更改,或者添加了多行内容,请在打开拉取请求之前执行以下操作
检查您的文本是否遵循我们的 Ansible 文档风格指南。
测试您的更改是否存在 rST 错误。
在本地构建页面,最好是整个文档网站。
注意
以下部分适用于来自 ansible/ansible-documentation 仓库的文档,不适用于来自各个集合的文档。有关如何为该集合做贡献的详细信息,请参阅集合 README 文件。集合开发人员还可以对他们的集合级文档进行 lint。有关详细信息,请参阅 验证您的集合文档。
设置本地构建文档的环境
要在本地构建文档,请确保您有一个可用的 开发环境。
要在本地机器上处理文档,您应该使用满足 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. 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 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) 每周二在 docs:ansible.im 聊天室(位于 Matrix上)举行会议。有关更多信息(包括我们的议程链接),请访问我们的论坛组。