如何在mkdocs-material文档主题下设置多版本文档系统?

news2024/10/23 5:33:13

引言

前一段时间,参与了PaddleOCR开源项目的文档站点搭建工作,基于mkdocs工具,采用mkdocs-material主题,基于Github Pages来搭建整个文档站点。目前该站点已经搭建完毕, 支持多语言、文档搜索等诸多功能。

最近得知,PaddleOCR文档站点需要支持多版本文档功能。这个需求是可以实现的,因为当时调研各个文档工具时,mkdocs-material是支持部署多版本的文档需求的。

经过查看mkdocs-material使用文档以及查看网上其他小伙伴教程,总算将该部分实现了。在查找相关资料过程中,我发现没有一个较为完整清晰的文章来具体说明如何部署使用多版本文档站点的。因此,就有了本篇文章。

最终效果

  • 文档站点默认为main分支下对应的文档内容

  • 如果release代码时,会自动根据tag名称为当前文档生成tag对应的文档站点版本。类似如下(来源link):

    在这里插入图片描述

部署步骤

Step1: 配置mkdocs.yml文件

具体源码可参见PaddleOCR中mkdocs.yml中写法 → link

extra:
  version:
    provider: mike
Step2: 编写对应的workflow配置文件

该部分分为了2个workflow,一个是日常更新main分支,自动发布到对应文档版本下;另外一个是release tag时,自动发版到对应tag的文档站点。
在这里插入图片描述

build_publish_develop_docs.yml
name: Build/Publish Develop Docs
on:
  push:
    branches:
      - master
      - main
permissions:
  contents: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Configure Git Credentials
        run: |
          git config user.name github-actions[bot]
          git config user.email 41898282+github-actions[bot]@users.noreply.github.com
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
      - uses: actions/cache@v4
        with:
          key: mkdocs-material-${{ env.cache_id }}
          path: .cache
          restore-keys: |
            mkdocs-material-
      - run: pip install mike mkdocs-material jieba mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-static-i18n
      - run: |
          git fetch origin gh-pages --depth=1
          mike deploy --push --update-aliases main latest
          mike set-default --push latest
  • 注意上述配置文件中的pip install mike。整个多版本的文档站点功能支持得益于mike这个库。这个是必不可少的。
  • git fetch origin gh-pages --depth=1这一步是为了先同步原有gh-pages分支代码。如果不存在gh--pages分支,需要先注释掉这行代码,等自动创建该分支后,再取消该行注释即可。
  • mike deploy --push --update-aliases main latest: mike命令包含了原有的mkdocs的命令,因此这里可以只写mike deploy即可
build_publish_release_docs.yml
name: Build/Publish Release Docs
on:
  push:
    tags:
      - v*

permissions:
  contents: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Configure Git Credentials
        run: |
          git config user.name github-actions[bot]
          git config user.email github-actions[bot]@users.noreply.github.com
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
      - uses: actions/cache@v4
        with:
          key: mkdocs-material-${{ env.cache_id }}
          path: .cache
          restore-keys: |
            mkdocs-material-
      - run: pip install mike mkdocs-material jieba mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-static-i18n
      - run: |
          git fetch origin gh-pages --depth=1
          mike deploy --push "${{ github.ref_name }}" latest
          mike set-default --push latest
  • 该配置文件与上一个区别在于:更改了触发条件。改为了打tag时,tag名称是以v开头时自动触发。这一点体现在代码:
    push:
      tags:
        - v*
    
  • 发布对应的tag号的文档站点功能,体现在倒数第二行中mike deploy --push "${{ github.ref_name }}" latest下。其中${{ github.ref_name }}会获得tag名称
Step3: 提交到仓库,自动生成文档站点即可

具体相关源码,请参考PaddleOCR项目,有不明白的问题可以在评论区指出。

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

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

相关文章

【C++ 算法进阶】算法提升二

算法提升二 最大分配工资问题 (贪心)题目分析代码详解 数组有序问题 (贪心)题目分析代码详解 消息流问题 (数据结构设计)题目分析代码详解 可乐问题 (Coding能力)题目分析代码详解 司…

YOLOv9下载安装运行

1、进入GitHub的YOLOv9官网 https://github.com/WongKinYiu/yolov92、clone或下载项目 https://github.com/WongKinYiu/yolov9.githttps://codeload.github.com/WongKinYiu/yolov9/zip/refs/heads/main2.1、进入控制台下载项目 git clone https://github.com/WongKinYiu/yol…

在线培训知识库+帮助中心:教育行业智慧学习的创新桥梁

在数字化转型的浪潮中,教育行业正经历着前所未有的变革。为了应对日益增长的学习需求,提升教育质量,构建一个集在线培训知识库与帮助中心于一体的智慧学习环境,已成为教育行业转型升级的重要方向。这一创新模式不仅优化了学习资源…

无人机飞手执照培训费用较高原因分析

无人机飞手执照培训费用较高的原因可以归结为多个方面,以下是对这些原因的具体分析: 一、课程内容的全面性和专业性 无人机飞手执照培训涵盖了从无人机基础知识到高级飞行技巧、从组装调试到故障维修的多个方面。这种全面性和专业性要求培训机构提供高…

猎板PCB测试大讲堂:让你测试的明明白白

在电子研发领域,PCB(印刷电路板)的检测是确保产品质量的关键环节。主要的检测方式包括飞针测试和测试架测试。以下是这两种技术的详细介绍,旨在为电子研发工程师提供技术资料。 PCB飞针测试(Flying Probe Test&#x…

麦克风哪个品牌音质最好,无线领夹麦克风十大品牌推荐

随着科技的进步,无线领夹麦克风的技术也在不断革新。从传统的模拟信号传输到如今的数字信号传输,再到智能降噪、自适应增益控制等先进技术的应用,无线领夹麦克风的录音品质得到了显著提升。然而,市场上仍有一些产品采用过时的技术…

vue2使用pdfjs-dist实现pdf预览(iframe形式,不修改pdfjs原来的ui和控件)

前情提要 在一开始要使用pdf预览的时候,第一次选的是vue-pdf,但是vue-pdf支持的功能太少,缺少了项目中需要的一项-复制粘贴功能 之后我一顿搜搜搜,最终貌似只有pdfjs能用 但是网上支持text-layer的貌似都是用的2.09那个版本。 使…

嵌入式AI博客目录

文章目录 环境搭建ubuntu下载安装c版opencv4.7.0和4.5.0 & 安装opencv4.5.0报错及解决方法ubuntu系统vscode配置c版opencv & 编译运行c播放视频代码(包含:vscode使用copencv,创建CmakeList.txt,创建编译项目)u…

【干货】2024期中考试成绩公布方式

本学期的期中考试即将拉开帷幕,而考试后的成绩发布往往是老师觉得最复杂耗时的工作。老师完全可以抛弃这种费力耗时的“笨方法”,只需要易查分,即可一分钟完成成绩发布的工作。教师发布省心,家长查询安心。 易查分是一个在线的查询…

智能健康推荐:SpringBoot技术应用

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户管理 基于智能推荐的卫生健康系统的系统管理员可以管理用户管理,可以对用户管理信息添加修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户管理信息管理界面 5.1.2 科室类型管理 系统管理员可以查看对…

让你的MacOS剪切板变得更加强大,如何解决复制内容覆盖的问题

MacOS的日常使用过程中,肯定少不了复制粘贴,不论是文本内容还是文件,复制粘贴是避不开的操作,如果需要复制粘贴的内容不多,那么普通的复制粘贴就可以完成了,但是当有同样的内容需要输入不同的地方的时候&am…

SAM应用:医学图像和视频中的任何内容分割中的基准测试与部署

医学图像和视频中的任何内容分割:基准测试与部署 目录 摘要:一、引言1.1 SAM2 在医学图像和视频中的应用 二.结果2.1 数据集和评估协议2.2 二维图像分割的评估结果 三 讨论四 局限性和未来的工作五、方法5.1数据来源和预处理5.2 微调协议5.3 评估指标 总…

flask项目创建、flask使用、python使用flask、pycharm创建flask项目

创建项目前python和pycharm要装好 打开pycharm创建项目: 虚拟空间下载flask: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask 下载好后:下载扩展 pip install Flask-SQLAlchemy -i https://mirrors.aliyun.com/pypi/simple/ 目录结构&…

结合空口分析BLE AUDIO之PAC

PAC,published audio capability用于声明audio服务能力,是BLE AUDIO核心服务之一,下面以手机和耳机为例,结合空口分析PAC到底有哪些交互内容: 1:读取Source/Sink PAC 首先手机会读取左耳的Source PAC和Si…

创客项目秀 | 基于XIAO ESP32S3 Sense 的最小 DIY 相机

作者:Md. Khairul Alam 故事背景 我一直对间谍小工具和微型电子产品非常着迷。我一直想创造一个可以装在口袋里的微型相机,能够悄无声息地捕捉精彩瞬间。随着技术的进步和像 Xiao ESP32S3 Sense 这样功能强大的微控制器的出现,我终于有机会实…

自然语言处理:第五十三章 Ollama

代码: ollama/ollama: Get up and running with Llama 3.1, Mistral, Gemma 2, and other large language models. (github.com) 官网: Ollama 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易…

Linux YUM设置仓库优先级

1.安装yum-plugin-priorities优先级插件 yum install yum-plugin-priorities -y 2.设置仓库优先级 vim /etc/yum.repos.d/local.repo [local] namecentos7.5 baseurlfile:///mnt enable1 gpgcheck0 priority1 注释: priority1 #数字越小代表优先级越高&#xff…

测试用例评审流程优化

测试用例评审是QA日常工作流程中的关键一环,是QA同学完善测试用例、交流测试经验的好机会。 负责组内测试用例建设以来,作者对于评审流程做了一些优化工作。本文作者将整个优化过程中的心得体会做了一个总结,希望能给大家带来帮助。 01 原始流…

rom定制系列------小米6x_MIUI14_安卓13刷机包修改写入以及功能定制 界面预览

在接待一些定制化系统中。有很多工作室或者一些特殊行业的友友需要在已有固件基础上简略修改其中的功能。方便使用。例如usb调试默认开启。usb安装设置以及usb安装与内置删减一些app的定制服务。今天给友友预览其中小米6X此款机型定制相关的一些界面与功能演示。 定制机型以及…

多线程基本知识

目录 程序,进程,线程 程序 含义 我的理解: 举例 进程 含义 我的理解: 举例 线程 含义 我的理解: 举例 多线程的并发 并发的含义 并发和并行的区别 并发含义 区别 线程的创建 继承 Thread 类创建多线…