十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Argo CD 文档站点构建与测试指南:基于 MkDocs 的文档开发工作流

Argo CD 文档站点构建与测试指南:基于 MkDocs 的文档开发工作流 Argo CD 文档站点构建与测试指南基于 MkDocs 的文档开发工作流【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cdArgo CD 的官方文档站点由 Read the Docs 托管的argo-cd.readthedocs.io采用mkdocs与mkdocs-material主题构建仓库根目录下的docs/目录即文档源码所在。本篇指南面向希望为 Argo CD 贡献文档、或在本地预览/验证文档改动的开发者完整梳理从依赖安装、本地实时预览、构建校验到站点配置与 CI 部署的整套工作流读者学完后可直接在本地跑起文档站点并确保改动可安全合入 PR。文档站点的技术栈与依赖Argo CD 文档站点不是静态手写的 HTML而是由 MkDocs 生态驱动的一套可导航、可搜索、可版本化的文档工程。其核心依赖全部锁定在 docs/requirements.txt 中关键版本如下依赖包版本作用mkdocs1.6.1站点构建主引擎mkdocs-material7.1.8站点主题Material Design 风格mkdocs-github-admonitions-plugin0.1.1支持 GitHub 风格的 [!TIP]警示块markdown_include0.8.1在 Markdown 中按行/按文件嵌入其他文档内容pymdown-extensions11.0.2提供superfences等高级 Markdown 扩展pygments2.21.0代码高亮引擎jinja2/markdown3.1.6 / 3.10.3模板渲染与 Markdown 解析依赖值得注意的是requirements.txt中有一行注释专门解释了为什么锁定mkdocs-material7.1.8这个较老版本新版本中已禁用 Strict 模式而 Argo CD 文档构建依赖strict: true配置来把警告当作错误因此显式回退到旧版本以保证构建的严谨性。这一点在后续构建校验一节中会再次体现。快速启动本地实时预览文档文档开发最常用的命令是make serve-docs该命令会启动一个本地文档服务器运行后浏览器访问http://0.0.0.0:8000/即可查看构建出的站点。MkDocs 自带热重载能力修改文档内容后站点会自动重建并刷新页面无需手动重启非常适合边改边看。从仓库根目录的 Makefile 可以看到serve-docs的真实实现——它并非直接在宿主机运行mkdocs serve而是拉起一个 Docker 容器执行.PHONY: serve-docs serve-docs: $(DOCKER) run -u $(CONTAINER_UID):$(CONTAINER_GID) -e HOME/tmp/home $(PODMAN_ARGS) \ ${MKDOCS_RUN_ARGS} --rm -it -p 8000:8000 -v ${CURRENT_DIR}:/docs:Z -w /docs \ --entrypoint ${MKDOCS_DOCKER_IMAGE} sh -c \ pip install --user -r docs/requirements.txt; /tmp/home/.local/bin/mkdocs serve -a $$(ip route get 1 | awk \{print $$7}\):8000关键点解读容器镜像默认是python:3.12-alpine见 Makefile与 CI 中.readthedocs.yaml指定的 Python 3.12 保持一致容器内先执行pip install --user -r docs/requirements.txt安装依赖再启动mkdocs serve通过-p 8000:8000将容器 8000 端口映射到宿主机-v ${CURRENT_DIR}:/docs:Z把整个仓库挂载进容器因此宿主机上的文档改动会实时同步到容器内并触发重建$(MKDOCS_DOCKER_IMAGE)与$(MKDOCS_RUN_ARGS)是两个可在命令行覆盖的变量默认值见 Makefile有特殊镜像或运行参数需求时可以make serve-docs MKDOCS_DOCKER_IMAGEmy-image形式覆写。如果你不想经过宿主机网络探测也可以直接访问容器内地址但绝大多数情况下http://0.0.0.0:8000/即本机地址直接使用即可。提交 PR 前的构建校验在提交 Pull Request 之前务必先执行一次完整的站点构建以验证文档改动不会导致构建错误make build-docsbuild-docs的实现同样基于 Docker 容器见 Makefile容器内先安装依赖随后运行mkdocs build将整个站点编译为静态文件。构建成功即代表页面渲染、导航结构、Markdown 语法均无问题。这里必须强调 Argo CD 文档工程的严格模式设计根目录 mkdocs.yml 中配置了strict: true。在 MkDocs 的 strict 模式下任何警告都会被当作错误处理——例如文档中引用了不存在的内部链接、nav 中配置了缺失的文件都会直接导致构建失败而非仅仅打印警告。这从构建层面强制保证了文档链接与文件结构的完整性因此本地make build-docs通过基本等同于 CI 中文档构建环节会通过。不使用 Docker 的本地构建与预览如果你的机器上没有 Docker或不想拉取python:3.12-alpine镜像原文档给出了完整的纯本地流程共三步第 1 步安装依赖。在仓库根目录执行pip install -r docs/requirements.txt建议在虚拟环境python -m venv中执行避免污染系统 Python 环境。依赖列表即前文 docs/requirements.txt 中锁定的版本。第 2 步本地构建站点make build-docs-local该 target 的实现很简单等价于直接运行mkdocs build见 Makefile产物输出到site/目录。第 3 步本地启动文档站点make serve-docs-local等价于mkdocs serve见 Makefile同样默认监听http://0.0.0.0:8000/并支持热重载。提示build-docs(-local)与serve-docs(-local)两组 target 在 Makefile 的帮助信息中分别被描述为build docs与expose the documents for viewing in a browser见 Makefile语义一目了然一组负责一次性构建验证一组负责长期预览调试。站点全局配置解析mkdocs.yml要深入理解文档站点mkdocs.yml 是绕不开的配置文件它定义了站点的全部行为站点元信息site_name: Argo CD - Declarative GitOps CD for Kubernetessite_url通过环境变量READTHEDOCS_CANONICAL_URL注入在本地构建时为空部署到 Read the Docs 后由平台注入正式地址导航结构nav站点按 Overview → understand_the_basics → core_concepts → getting_started 开场随后分为 Operator Manual操作手册、User Guide用户指南、Developer Guide开发者指南三大板块以及 FAQ、Support、Roadmap 等独立页面。其中本文档所在的开发者指南板块被挂载在developer-guide/docs-site.md节点见 mkdocs.yml主题themename: material并指定custom_dir: overrides以覆盖主题模板仓库中 overrides/partials/language/en-custom.html 即通过 Jinja 宏自定义了 Table of Contents 的本地化文案同时配置了明暗双色主题palette跟随系统prefers-color-scheme自动切换插件plugins启用search站点全文搜索与gh-admonitionsGitHub 风格警示块前者是 MkDocs 内置搜索后者负责渲染原文档中 [!TIP]这类语法Markdown 扩展启用markdown_include.include文件嵌入、admonition警示块、toc目录锚点、codehilite代码高亮与pymdownx.superfences增强代码块这些扩展共同支撑了 Argo CD 文档中大量使用的表格、折叠块与嵌套代码示例版本选择与提示脚本extra_css引入 docs/assets/versions.cssextra_javascript引入 docs/assets/versions.js。后者实现了两个关键能力一是按latest / stable / release-vX.Y排序的版本下拉菜单二是版本警告横幅——当用户浏览latest未发布版本或历史版本页面时会在顶部提示你正在查看未发布/旧版本文档并给出跳转到stable版本的链接见 docs/assets/versions.js 中的VERSION_REGEX与版本警告逻辑。文档站点的分析与埋点配置原文档特别强调了一件事站点接入了Google Analytics埋点且在本地测试时别忘了关闭你的广告拦截器否则统计脚本被屏蔽、无法验证埋点是否生效。埋点的具体配置位于 mkdocs.yml 的extra.analytics段extra: analytics: property: G-5Z1VTPDL73 provider: googleprovider: google指示 MkDocs Material 主题启用 Google Analytics 4GA4集成property为对应的测量 IDG-开头。开发者本地预览时如果浏览器装了广告拦截插件GA4 脚本会被拦截此时需要临时禁用拦截器才能确认页面访问事件正常上报、埋点配置正确。文档的自动化生成与维护Argo CD 的文档站点中有一部分内容并非手写而是由代码生成器产出的理解这一点有助于判断该改源码还是该改文档Notification 文档make notification-docs会执行go run ./hack/gen-docs与go run ./hack/gen-catalog docs见 Makefile根据通知模板与触发器的实际定义自动生成对应文档页CLI 命令文档make clidocsgen执行go run tools/cmd-docs/main.go见 Makefile根据cmd/下各命令的 Cobra 定义自动生成命令行参考页即用户指南中的 Command Reference 部分上述生成目标与gogen、protogen等一起被聚合进codegen-local/codegen-local-fast两个总目标见 Makefile属于完整的代码生成流水线。也就是说文档改动通常分两类一是直接编辑docs/下的 Markdown内容型改动二是修改源码定义后运行对应生成器刷新文档生成型改动。提交 PR 前如果涉及后者请务必先跑生成命令否则make build-docs或许能通过但 CI 中的文档一致性检查可能失败。站点部署与 CI 环境文档站点最终部署在 Read the Docs 平台其构建配置由仓库根目录的 .readthedocs.yaml 声明version: 2 formats: all mkdocs: fail_on_warning: false configuration: mkdocs.yml python: install: - requirements: docs/requirements.txt build: os: ubuntu-22.04 tools: python: 3.12要点解读构建系统固定为 Ubuntu 22.04 Python 3.12这正是 Makefile 中注释所强调的MKDOCS_DOCKER_IMAGE指向 python 3.12 以匹配.readthedocs.yaml的原因——本地 Docker 预览与线上 CI 保持完全一致的 Python 版本最大限度消除环境差异formats: all表示除网页外同时构建 PDF、ePub 等导出格式fail_on_warning: false与mkdocs.yml中的strict: true相互配合站点内部构建保持严格模式但 Read the Docs 平台层面的告警不会阻断发布python.install直接从docs/requirements.txt安装依赖与本地pip install -r docs/requirements.txt完全同源。常见问题与调试建议最后结合上文内容给出几条实操经验端口被占用serve-docs/serve-docs-local固定监听 8000 端口若与其他服务冲突Docker 场景可覆写MKDOCS_RUN_ARGS调整端口映射本地场景可直接手动执行mkdocs serve -a 0.0.0.0:PORT容器权限问题serve-docs使用了-u $(CONTAINER_UID):$(CONTAINER_GID)与-v ${CURRENT_DIR}:/docs:ZSELinux 标签若在非 Linux 环境或遇到挂载目录无写权限检查CONTAINER_UID/CONTAINER_GID是否正确设置构建报警告被当作错误多半是新增的 Markdown 中引用了不存在的内部链接或 nav 里登记的路径与实际文件不符按strict模式给出的告警逐条修正即可埋点不生效优先检查浏览器广告拦截插件是否屏蔽了 GA4 脚本原文档的 TIP 提醒其次确认mkdocs.yml中extra.analytics段未被覆盖或删除改动不被渲染确认你的文档文件位于docs/目录下且已登记进 mkdocs.yml 的nav或属于nav中目录的覆盖范围否则 MkDocs 默认不会将其纳入站点导航。至此你已经掌握了 Argo CD 文档站点的完整开发闭环make serve-docs实时预览 →make build-docs严格校验 → 生成器刷新自动文档 → PR 提交后由 Read the Docs 依据 .readthedocs.yaml 发布上线。这套工作流同样适用于绝大多数基于 MkDocs Material 的开源文档工程可迁移复用。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表