为 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
单击
Edit on GitHub
。如果您还没有在您的 GitHub 帐户上创建 ansible 库的分支,您将被提示创建一个。
修复拼写错误、更新示例,或进行您想到的任何其他更改。
在 GitHub 页面底部
Propose file change
标题下的第一个矩形中输入提交消息。越具体越好。例如,“修复 my_module 说明中的拼写错误”。如果您愿意,可以在第二个矩形中添加更多细节。保留+label: docsite_pr
。通过单击绿色的“提出文件更改”按钮提交建议的更改。GitHub 将为您处理分支和提交,并打开一个标题为“比较更改”的页面。
单击
Create pull request
打开 PR 模板。填写 PR 模板,包括与您的更改相关的尽可能多的详细信息。如果您愿意,您可以更改您的 PR 的标题(默认情况下它与您的提交消息相同)。在
Issue Type
部分,删除除Docs Pull Request
行之外的所有行。通过单击
Create pull request
按钮提交您的更改。耐心等待 Ansibot,我们的自动化脚本,添加标签,ping 文档维护人员,并启动 CI 测试运行。
密切关注您的 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 文档进行了多次更改,或者向其添加了不止一行,请在打开拉取请求之前
检查您的文本是否遵循我们的 Ansible 文档样式指南。
测试您的更改以查找 rST 错误。
在本地构建页面,最好是构建整个文档网站。
注意
以下部分适用于来自 ansible/ansible-documentation
存储库的文档,不适用于来自单个集合的文档。有关如何为该集合做出贡献的详细信息,请参阅集合自述文件。集合开发者也可以整理其集合级文档。有关详细信息,请参阅 验证您的集合文档。
设置本地构建文档的环境
要在本地构建文档,请确保您有一个有效的 开发环境。
要在本地机器上处理文档,您应该使用满足 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 上) 会面。有关更多信息(包括指向我们议程的链接),请访问我们的 论坛组。