部署 Sphinx 文档到 GitHub Pages 详细指南

部署 Sphinx 文档到 GitHub Pages 指南

本文将详细介绍如何将 Sphinx 生成的文档部署到 GitHub Pages,包括手动部署和使用 GitHub Actions 的自动部署方案。我们将以dlt645项目的 Python 版本文档为例进行说明。

1. 准备工作

1.1 项目结构

在开始之前,让我们先了解一下典型的 Sphinx 文档项目结构(以dlt645/python/docs为例):

docs/ ├── source/ │ ├── conf.py # Sphinx 配置文件 │ ├── index.rst # 文档首页 │ ├── modules.rst # 模块索引 │ └── ... # 其他文档源文件 ├── build/ # 构建输出目录 │ └── html/ # HTML 文档输出 ├── Makefile # 构建脚本 └── make.bat # Windows 构建脚本

1.2 确保 Sphinx 配置正确

conf.py中,确保以下配置项正确设置:

# conf.py# 项目信息project='dlt645'copyright='2026, 陈东宇'author='陈东宇'release='v1.4.0'# 确保 sphinx.ext.githubpages 扩展已启用extensions=[# 其他扩展...'sphinx.ext.githubpages',]# HTML 主题配置html_theme='sphinx_rtd_theme'html_theme_options={'collapse_navigation':False,'navigation_depth':-1,}

1.3 生成 HTML 文档

首先,确保能够成功生成 HTML 文档:

# 在 docs 目录下执行cdpython/docsmakehtml

生成的 HTML 文档将位于build/html/目录下。

2. 手动部署到 GitHub Pages

手动部署适合简单项目或初次部署测试。

2.1 推送 HTML 文件到 gh-pages 分支

  1. 构建文档:在项目根目录下,执行 Sphinx 构建命令,生成 HTML 文件,文件在build/html/目录下

    makehtml# 或者直接使用 sphinx-build# sphinx-build -b html docs/source docs/build/html

  2. 准备部署目录:进入构建输出目录(如docs/_build/htmlbuild/html),初始化一个 Git 仓库并设置远程地址

    cd docs/build/html git init git remote add origin https://github.com/<你的用户名>/<你的仓库名>.git

  3. 创建并推送至 gh-pages 分支:将生成的所有文件提交并强制推送到远程仓库的gh-pages分支

    # 添加所有文件 git add . # 提交 git commit -m "Deploy Sphinx documentation to GitHub Pages" # 推送到远程仓库 git push -f origin main:gh-pages

2.3 配置 GitHub Pages

部署完成后,需要在 GitHub 仓库中配置 Pages:

  1. 登录 GitHub,进入项目仓库
  2. 点击SettingsPages
  3. Source部分,选择gh-pages分支和/(root)目录
  4. 点击Save

3. 自动部署(GitHub Actions)

使用 GitHub Actions 可以实现文档的自动构建和部署,当代码变更时自动更新文档。

3.1 创建 GitHub Actions 工作流

在项目根目录下创建.github/workflows/目录,并添加部署工作流文件:

mkdir-p .github/workflowstouch.github/workflows/deploy-docs.yml

3.2 编写工作流配置

编辑deploy-docs.yml文件,添加以下内容:

name:Deploy Sphinx Documentationon:# 当主分支或开发分支有推送时触发push:branches:[main,master,develop]# 允许手动触发workflow_dispatch:jobs:build-and-deploy:runs-on:ubuntu-latestpermissions:contents:write# 需要写入内容权限pages:write# 需要操作 Pages 权限id-token:write# 需要生成 ID Tokensteps:# 步骤 1: 检出代码-name:Checkout repositoryuses:actions/checkout@v4with:fetch-depth:0# 确保获取完整的提交历史# 步骤 2: 设置 Python 环境-name:Set up Pythonuses:actions/setup-python@v4with:python-version:'3.10'cache:'pip'# 步骤 3: 安装依赖-name:Install dependenciesrun:|pip install --upgrade pip pip install -r python/requirements.txt pip install sphinx sphinx-rtd-theme sphinx-autodoc-typehints sphinx-copybutton# 步骤 4: 生成 HTML 文档-name:Build HTML documentationrun:|cd python/docs make html# 步骤 5: 部署到 GitHub Pages-name:Deploy to GitHub Pagesuses:peaceiris/actions-gh-pages@v4with:# 文档源目录publish_dir:./python/docs/build/html# 提交信息commit_message:"Deploy Sphinx docs for ${{ github.sha }}"# 个人访问令牌(如果需要)github_token:${{secrets.GITHUB_TOKEN}}# 推送的分支publish_branch:gh-pages

3.3 配置权限

确保 GitHub 仓库的 Actions 有足够的权限:

  1. 进入仓库SettingsActionsGeneral
  2. Workflow permissions部分,选择Read and write permissions
  3. 勾选Allow GitHub Actions to create and approve pull requests
  4. 点击Save

3.4 测试自动部署

提交工作流文件到主分支:

gitadd.github/workflows/deploy-docs.ymlgitcommit -m"Add GitHub Actions workflow for docs deployment"gitpush origin main

然后在 GitHub 仓库的Actions标签页中查看部署进度。

可以看到我最新提交的一次action已经成功

4. 高级配置

4.1 自定义域名

如果需要使用自定义域名,可以在gh-pages分支根目录添加CNAME文件:

echo"docs.dlt645.example.com">CNAME

然后在 DNS 服务商处添加 CNAME 记录,指向username.github.io

4.2 文档版本管理

对于多版本文档,可以使用sphinx-multiversion扩展:

pipinstallsphinx-multiversion

conf.py中添加:

extensions=[# 其他扩展...'sphinx_multiversion',]# 配置 sphinx-multiversionsmv_tag_whitelist=r'^v\d+\.\d+\.\d+$'# 只包含版本标签smv_branch_whitelist=r'^main$|^master$'# 只包含主分支smv_remote_whitelist=r'^origin$'# 只包含 origin 远程仓库smv_outputdir_format='{ref.name}'# 输出目录格式

然后使用sphinx-multiversion命令生成多版本文档:

sphinx-multiversionsourcebuild/html

4.3 文档搜索优化

为了让 GitHub Pages 正确处理 Sphinx 的搜索功能,需要确保.nojekyll文件存在,以禁用 Jekyll 的处理。

5. 常见问题与解决方案

5.1 文档样式丢失

问题:部署后文档样式丢失,显示为原始 HTML。

解决方案

  • 确保添加了.nojekyll文件
  • 检查html_baseurl配置是否正确
  • 确保静态资源路径配置正确

5.2 部署权限错误

问题:GitHub Actions 部署时出现权限错误。

解决方案

  • 确保工作流文件中设置了正确的权限
  • 检查仓库的 Actions 权限设置
  • 如果使用个人访问令牌,确保令牌有足够的权限

5.3 自动部署不触发

问题:推送代码后自动部署不触发。

解决方案

  • 检查工作流文件中的on触发条件
  • 确保推送的分支与配置的分支匹配
  • 查看 Actions 日志了解具体原因

5.4 文档更新不及时

问题:部署后文档内容未更新。

解决方案

  • 确保构建命令正确生成了新文档
  • 检查 GitHub Pages 的缓存设置
  • 尝试强制刷新浏览器或使用无痕模式访问

6. 总结

本文介绍了两种将 Sphinx 文档部署到 GitHub Pages 的方法:

  1. 手动部署:适合简单项目或初次测试,包括直接推送和使用 git worktree 两种方式。
  2. 自动部署:使用 GitHub Actions 实现文档的自动构建和部署,提高开发效率。

通过正确配置和部署,可以确保 Sphinx 文档始终保持最新,并通过 GitHub Pages 方便地分享给用户。

参考链接

  • Sphinx 官方文档
  • GitHub Pages 官方文档
  • GitHub Actions 官方文档
  • peaceiris/actions-gh-pages

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1132142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm+vue+mysql的供应商管理系统(源码+大文档+部署调试+讲解)

#计算机毕业设计 基于ssmvuemysql的供应商管理系统&#xff08;源码大文档部署调试讲解&#xff09;&#xff0c;程序讲解视频&#xff1a;https://b23.tv/9HIafzF

大模型常见的专用名词

• RPM&#xff08;Requests Per Minute&#xff09;&#xff1a;每分钟最多允许发起多少次请求&#xff08;调用次数&#xff09;。超过就会报限流。 &#xfffc; • TPM&#xff08;Tokens Per Minute&#xff09;&#xff1a;每分钟最多允许处理多少 token。token 可以理解…

pycharm一运行就是test怎么改

步骤&#xff1a;打开 File -> Settings -> Tools -> Python Integrated Tools。在 Testing 部分&#xff0c;将 Default test runner 改为 Unittests。

同步互斥机制和编程方法

同步互斥机制和编程方法 文章目录 同步互斥机制和编程方法一、前言二、同步互斥机制2.1 概念回顾2.2 竞态条件&#xff08;race condition&#xff09;2.2.1 概述2.2.2 解决方法 2.3 具体做法及其编程2.3.1 忙等互斥2.3.2 睡眠与唤醒&#xff08;软硬件结合&#xff09; 三、小…

程序员必读:2026年AI智能体趋势,收藏这篇抢占先机

Google Cloud《2026 AI智能体趋势报告》揭示五大趋势&#xff1a;人人拥有智能体释放创造力、构建企业数字流水线、重塑礼宾式客户体验、实现安全主动防御、通过人才升级驱动价值。AI智能体正从"工具赋能"转向"生态重构"&#xff0c;不仅提升效率&#xff…

Windows 系统版本转换工具,一键互转不用重装

前言今天分享一款Windows 系统版本一键转换工具&#xff0c;它无需重装系统&#xff0c;就能一键转换系统版本&#xff0c;如专业版转家庭版、家庭版转企业版&#xff0c;Win10/Win11 系统都支持&#xff0c;整个过程保留原有数据&#xff0c;操作简单。软件介绍1、 右键点击程…

大数据领域数据治理的质量提升秘籍

大数据领域数据治理的质量提升秘籍&#xff1a;从理论到实战的全链路指南 一、为什么数据质量是大数据的“生命线”&#xff1f; 在某电商公司的季度复盘会上&#xff0c;推荐算法团队负责人脸涨得通红&#xff1a;“过去3个月&#xff0c;我们的推荐转化率下降了30%——原因居…

深入理解 MCP,非常详细收藏我这一篇就够了

如何系统的学习大模型 AI &#xff1f; 由于新岗位的生产效率&#xff0c;要优于被取代岗位的生产效率&#xff0c;所以实际上整个社会的生产效率是提升的。 但是具体到个人&#xff0c;只能说是&#xff1a; “最先掌握AI的人&#xff0c;将会比较晚掌握AI的人有竞争优势”…

大模型Agent架构演进:从临时拼接到按需组合的微应用之路(程序员必收藏)

文章阐述了Agent系统架构从ad-hoc临时型Agent向标准化能力再向按需组合的just-in-time微应用/界面的主流演进路线。这种演进解决了ad-hoc模式在治理、复用、安全方面的问题&#xff0c;通过标准化协议(MCP、A2A)和JIT身份权限管理&#xff0c;实现开发效率提升、运营治理优化和…

AI产品经理与大模型学习全攻略:从入门到精通,零基础也能掌握AI思维

文章系统介绍了AI产品经理与传统产品经理的区别&#xff0c;强调AI思维的重要性。详细解析了AI产业链结构&#xff08;基础层、技术层、应用层&#xff09;和AI产品经理的四象限分类&#xff08;突破型、创新型、应用型、普及型&#xff09;。提供了从初阶到高阶的大模型AI学习…

根据算法题目时间限制推算时间复杂度限制

核心思路&#xff1a;先明确基准值首先要建立一个基础认知&#xff1a;普通计算机在 1 秒内&#xff0c;大约能执行 1 亿&#xff08;10^8&#xff09;次 基本运算&#xff08;比如加减乘除、变量赋值、条件判断等&#xff09;。这个数值是经验值&#xff0c;不同评测机可能略有…

AI大模型学习路线:从入门到高薪,程序员收藏必备!2025年AI就业薪资表曝光

文章讲述AI领域特别是大模型方向的就业前景。科技巨头如腾讯、阿里、Meta等大力布局AI&#xff0c;导致人才紧缺&#xff0c;薪资飙升。2025年AI岗位需求增长10倍&#xff0c;核心技术岗供需比低至0.39。大模型研发、端侧推理等复合型人才尤为抢手&#xff0c;建议技术党深耕核…

FPGA应用开发和仿真【3.7】

8.5 混频和相干解调混频&#xff0c;即两个信号做乘法&#xff0c;是在数字通信中很常用的信号处理方法。考虑两个单频信号Acos&#xff08;ω1t 1&#xff09;和cos&#xff08;ω0t&#xff09;&#xff0c;一般前者为待处理的信号&#xff0c;而后者为已知的参考信号&#x…

每日Java面试场景题知识点之-ELK技术栈实战应用

每日Java面试场景题知识点之-ELK技术栈实战应用 前言 在现代Java企业级项目中&#xff0c;日志分析是系统监控和故障排查的重要环节。ELK技术栈&#xff08;Elasticsearch、Logstash、Kibana&#xff09;作为目前最流行的日志分析解决方案&#xff0c;在Java项目中得到了广泛应…

【毕业设计】SpringBoot+Vue+MySQL “衣依”服装销售平台平台源码+数据库+论文+部署文档

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着互联网技术的快速发展和电子商务的普及&#xff0c;线上服装销售平台逐渐成为消费者购物的主要渠道之一。传统线下服装销售模式受限于时间和空…

每日Java面试场景题知识点之-ELK日志分析

场景题&#xff1a;微服务架构下日志分散导致故障排查困难 问题描述 在一家大型电商平台的微服务架构中&#xff0c;系统包含订单服务、用户服务、支付服务、库存服务等20多个微服务实例&#xff0c;每个服务部署在多台服务器上。某天凌晨&#xff0c;用户支付功能出现异常&…

FPGA应用开发和仿真【3.8】

8.8.3 调制解调仿真 仿真模拟的系统与AM仿真时类似&#xff0c;结构如图8-32所示。 图8-32 WBFM调制解调仿真系统结构 代码8-16是测试平台。 代码8-16 WBFM调制解调系统测试平台 图8-33所示是一段仿真波形。解调器工作建立时输出了一段不正确的波形。 图8-33 WBFM测试平台仿…

FPGA应用开发和仿真【3.6】

7.8 PID控制器 PID控制器广泛用于控制系统,控制系统中的数字控制部分也是数字信号处理系统的一种。典型的数字PID控制器如图7-63所示,它由前向欧拉法转换连续时间PID控制器而来,其P、I、D三个参数,分别为比例、积分、微分系数,而N用于配置微分单元中滤波器的极点,将有助…

从零到AIGC产品经理,2个月上岸全攻略,小白也能学会

本文分享了一套2个月成功转行AIGC产品经理的实用指南&#xff0c;涵盖八个关键步骤&#xff1a;获取行业资讯与研报、选择细分领域并搭建知识库、系统掌握AIGC基础知识、完成实战项目、撰写融合项目经验的简历、准备面试高频问题。通过文本生成和图片生成两类实战项目&#xff…

Java Web 墙绘产品展示交易平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着互联网技术的快速发展和艺术市场的不断扩大&#xff0c;墙绘艺术作为一种独特的装饰形式&#xff0c;逐渐受到大众的青睐。传统的墙绘交易方式…