思源笔记一键发布至 Hexo、Hugo、Jekyll、Vitepress、Vuepress 博客(github)并通过 github action 构建 page 并同步 gitee page

本贴最后更新于 484 天前,其中的信息可能已经时移世异

先决条件:思源笔记、一键发布工具、Hexo\Hugo\Jekyll\Vitepress\Vuepress 相关主题

  以 Hugo 的 hugo-theme-next 主题示例,其他的同理,构建文件不同

  注意事项:Hugo 使用无序和有序列表尽量不要超过 3 层

  部署和配置时长:1 小时 +

  部署流程:克隆 Hugo 主题至自己仓库-> 创建主页仓库-> 获取 github 个人访问令牌 token->github action 构建并输出至主页主页->gitee 导入 github 仓库并配置镜像仓库-> 开通 gitee page-> 配置 hugo-theme-next

  使用流程:思源笔记一键发布插件配置-> 使用一键发布插件发布文章并选择 hugo

  部署详情:

  • 克隆 Hugo 主题至自己仓库

  • 创建主页仓库

    • 自定义首页,首先需要创建一个与你 Github ID 同名的仓库

      image

      创建完成

  • 获取 github 个人访问令牌 token

    当您需要在 GitHub Action 中执行需要身份验证的操作时,例如推送到另一个仓库或访问私有仓库,您需要提供身份验证凭据。GitHub 提供了一种安全的方式来存储这些凭据,即使用 Personal Access Token(个人访问令牌)并将其添加到仓库的 Secrets 中。

    以下是如何生成 Personal Access Token 并将其添加到 GitHub 仓库的 Secrets 中的详细步骤:

    1. 生成 Personal Access Token
    - 登录到您的`GitHub`账户。 - 点击右上角的头像,然后选择`Settings`(设置)。 - 在左侧导航栏中,点击`Developer settings`(开发者设置)。 - 在下拉菜单中,选择`Personal access tokens`(个人访问令牌)。 - 点击右上角的`Generate token`(生成令牌)按钮。

    1. 配置 Personal Access Token 的权限
    当您生成`Personal Access Token`时,需要为其分配适当的权限。根据您的需求,可以为其分配不同的权限,例如访问仓库、读取用户资料等。请谨慎选择权限,最小化所需的权限以提高安全性。

    1. 生成令牌
    在配置了权限后,滚动到页面底部,然后单击`Generate token`(生成令牌)。`GitHub`将生成一个令牌,并将其显示在屏幕上。请务必将此令牌复制到安全的地方,因为在生成后,您将无法再次查看完整的令牌。
    1. 将令牌添加到 GitHub 仓库的 Secrets
    - 转到包含您的博客源文件的GitHub仓库。 - 在仓库顶部导航栏中,单击`Settings`(设置)。 - 在左侧导航栏中,选择`Secrets`(密码)。 - 单击`New repository secret`(新存储库密码)按钮。 - 在`Name`字段中,输入`PERSONAL_TOKEN`(或您选择的名称)。 - 在`Value`字段中,粘贴您在第3步中生成的`Personal Access Token`。 - 单击`Add secret`(添加密码)按钮。

    现在,您的 Personal Access Token 已经以安全的方式存储在 GitHub 仓库的 Secrets 中,并可以在 GitHub Action 的工作流程中使用。

    在上文中提到的 PERSONAL_TOKEN 将会被引用并传递给 GitHub Action 中的相关步骤,以便执行需要身份验证的操作。这个过程确保了敏感凭据的安全性,并且不会将它们直接硬编码到工作流程文件中,从而保护了您的 GitHub 仓库的安全性。

  • github action 构建并输出至主页主页

    • 配置 GitHub Action,首先需要在博客源文件的仓库中创建一个 .github/workflows 目录,并在该目录下创建一个 .yml 配置文件。我们将其命名为 deploy.yml

      以下是本人改进过的自动化部署 Hugo 博客的示例 deploy.yml 配置文件:

    • .github/workflows/deploy.yml

      name: deploy on: push: branches: - main # 或者是你的源代码分支 jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 - name: Set up Hugo uses: peaceiris/actions-hugo@v2.6.0 with: hugo-version: "latest" extended: true - name: Build and Deploy run: | hugo -F --cleanDestinationDir # 生成静态文件 mkdir -p public # 确保public文件夹存在 cp -r public/* ./ # 复制生成的静态文件到仓库根目录 - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3.9.3 with: PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }} # 你的个人访问令牌 EXTERNAL_REPOSITORY: szhiku/szhiku.github.io # 你的GitHub Pages仓库 PUBLISH_BRANCH: main # 或者是你的GitHub Pages分支 PUBLISH_DIR: ./ commit_message: ${{ github.event.head_commit.message }}
    • 之后点右上角的 commit(提交),会自动触发构建,构建详情如下图

    • 正常的话,github pages 已经可以了

      点击设置,再点击右边栏上的 Pages

      1. 设置 main 分支,root 根文件夹,并点击保存

      1. 可以看到 Actions 中已经在构建和部署页面了

      1. 构建完成后,重新回到 设置的 Pages 页,可以看到多了如下的提示,点击查看即可

  • gitee 导入 github 仓库并配置镜像仓库

    • 登录 gitee 导入 github 仓库

    • 添加 Pull 方向的镜像

      Pull 方向的镜像用于将 GitHub 的仓库镜像到 Gitee

      你可以根据自身需求选择 自动镜像 或 手动镜像。

      你可以通过以下方式配置 Pull 方向的镜像:

      1. 进入需要使用镜像功能的仓库,进入「管理」找到「仓库镜像管理」选项,点击「添加镜像」按键;

        如果你还没有绑定 GitHub 帐号,请根据弹窗提示绑定 GitHub 帐号;

        输入图片说明

      2. 添加镜像;输入图片说明

        1. 在「镜像方向」中选择 Pull 方向;

        2. 在「镜像仓库」下拉列表中选择需要镜像的仓库;

        3. 在「个人令牌」中输入你的 GitHub 私人令牌

          • 私人令牌中必须包含对 repo 的访问授权,否则添加后镜像不可用;
        4. 根据自身需求选择是否勾选「自动从 GitHub 同步仓库」;

          • 勾选后,我们将会在镜像仓库中自动生成 webhook 用于实现自动镜像;
          • 此功能需要你的个人令牌中包含对 admin:repo_hook 的访问授权,否则会添加失败;
        5. 点击「添加」保存镜像配置;

          • 如果添加失败,请根据 如何申请 GitHub 私人令牌 提供的流程重新申请私人令牌;
          • 如果重新申请私人令牌后仍然添加失败,请取消勾选「自动从 GitHub 同步仓库」后点击「添加」保存镜像,并 手动配置 webhook

      配置完成后,可以通过以下方式触发镜像操作(Gitee 从 GitHub 同步仓库):

      镜像触发的最短间隔时间为 5 分钟。

      如果只配置了 Pull 方向的镜像,建议你将最新的代码提交到 GitHub 镜像仓库;

      Gitee 会自动从 GitHub 同步仓库(分支/Branches、标签/Tags、提交记录/Commits)。

  • 开通 gitee page

    • A.新建仓库 test_pages

      输入图片说明

      点击创建完成仓库的创建

      B.添加文件 index.html (注意名称是 index.html 哦!)

      点击新建文件

      输入图片说明

      文件名输入 index.html,内容就是简单的 html

      输入图片说明

      点击提交,将文件提交到仓库

      C.选择 pages 服务

      输入图片说明

      D.选择需要部署的分支,这里选择 Master 启动服务。

      输入图片说明

      E.访问生成的网站地址,即可以查看你部署的静态页面啦!

      输入图片说明 输入图片说明

      3. 已经有 Pages 仓库如何部署到 Gitee 的 Pages

      jQuery-File-Upload 仓库为例,仓库地址:https://github.com/blueimp/jQuery-File-Upload

      它在 Github 上的 Pages 地址是:https://blueimp.github.io/jQuery-File-Upload/

      如果想把它转移到 Gitee Pages,只需要登录你的 Gitee 账户,点击右上角的 + 号,选择新建仓库

      输入图片说明

      输入图片说明

      输入图片说明

      然后点击创建,仓库会在后台自动导入,导入成功后,点击菜单栏的服务下拉 Gitee Pages

      输入图片说明

      输入图片说明

      这里我们默认的 Pages 服务分支是仓库的默认分支,但是你也已选择自己静态页面所在的分支,这里 jQuery-File-Upload 仓库的静态页面分支是 gh-pages,选择 gh-pages 并点击启动服务。

      输入图片说明 至此,静态网页已经部署成功,访问提供的地址:https://frech.gitee.io/jquery-file-upload/ 即可查看到 jQuery-File-Upload 仓库的静态官网。

      输入图片说明

  • 配置 hugo-theme-next

    • 来到这个文件夹

    • 按照备注说明依次修改配置文件 config.yaml、menus.yaml、params.yaml,修改后记得点击右上角绿色的 commt,之后会自动构建

  使用详情:

  • 思源笔记一键发布插件配置

    image

    image

    image

  • 使用一键发布插件发布文章并选择 hugo

    image

    image

  参考资料:

  教你如何自定义 Github 首页_设置github 主页-CSDN 博客

  【Hugo 网站搭建】GitHub Action 自动化部署 Hugo 博客 - 知乎

  仓库镜像管理(Gitee<->Github 双向同步) | Gitee 产品文档

  Gitee Pages | Gitee 产品文档

  ‍

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25979 引用 • 107742 回帖
1 操作
yw1551 在 2024-02-19 17:21:05 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 16 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 707 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 542 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 676 关注
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 818 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    435 引用 • 1238 回帖 • 590 关注
  • Visio
    1 引用 • 2 回帖 • 1 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 37 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 3 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 251 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 676 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 59 回帖 • 4 关注
  • Follow
    4 引用 • 12 回帖 • 2 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 271 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    496 引用 • 934 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 4 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 1 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 1 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    115 引用 • 317 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 30 关注
  • RemNote
    2 引用 • 16 回帖 • 20 关注