前言
趁我现在还有想法,简单记录这次博客迁移到 Shirone 主题的过程
先前为了用ai尝试使用长任务的时候,就将博客从原先的mizuki 8.3升级到了9.0;其实也是因为我懒,如果想更新主题拉取上游仓库,就要解决一堆git冲突
但当我升级完后,正准备写一篇更改过程记录时,mizuki的主题仓库添加了项目弃用通知
看了眼新项目,在基于原项目做了性能优化的同时,有着更多的 Markdown 增强、新功能页面和更细化的功能文档。先前在 mizuki 上内容分离中不支持的的配置文件,新项目中也可以跟着文章数据等一起放到独立仓库了
这无疑是减少了主题升级的维护成本,在不修改主题的情况下,可以每次升级都不用处理乱七八糟的冲突,直接拉取上游仓库合并即可
未来的文章中,会使用更多新增的样式来使文章可读性尽可能增加
安装
由于新内容分离功能在维护上更好的机制,我推荐可能有主题升级需求的博主在使用此主题时开启并使用内容分离,相比之前并不会增加管理成本
克隆主题仓库等代码
将主题仓库克隆下来并推送到自己的账户中
git clone https://github.com/LyraVoid/Shirone.git Shirone-bloggit remote set-url origin git@github.com:你的用户名/Shirone-blog.gitgit remote add upstream https://github.com/LyraVoid/Shirone.git在主题仓库外创建另一个文件夹放置内容仓库,记得在github上提前创建一个私有仓库
git clone https://github.com/LyraVoid/Shirone-Content.git my-blog-contentcd my-blog-contentgit remote set-url origin git@github.com:你的用户名/my-blog-content.git之后根据博客需要修改内容模板仓库中的内容即可
如果需要本地预览修改,参考此文档
注意
需要注意的是,至本文编写完成时,内容模板仓库中有关固定链接部分的配置文件和文档中的中文内容似乎意外损坏了,全部显示为 ? 字符,经测试不影响使用
配置跨仓自动发布并部署博客
对于此功能,文档中同样有着详细步骤和触发流程图例
本文仅记录使用腾讯云的部署流程
- 生成 GitHub 个人访问令牌 登录github -> 设置 -> 开发者设置
个人访问令牌 -> 精细化的令牌 -> 右上角生成新令牌
填写令牌名称 -> 仓库访问设置仅选定的仓库,勾选主题与内容仓库-> 添加权限”读写”并设置读写
生成令牌并复制保存
- 接入腾讯云EdgeOne 进入腾讯云EdgeOne控制台 -> Markers -> 创建项目 -> 导入git仓库 -> 选择主题仓库
部署完成后 -> 修改编译命令为pnpm content
创建环境变量CONTENT_REPO_URL:
https://x-access-token:你的访问令牌@github.com/你的用户名/仓库名.git项目设置 -> 部署钩子 -> 新建(设置分支为main)
- 在私有内容仓库中配置 在github中进入内容仓库
点击 Settings -> Secrets and variables -> Actions
在Repository secrets中新建变量 EDGEONE_DEPLOY_HOOK
在变量中填入粘贴复制的 EdgeOne 部署钩子 URL
- 修改触发工作流 进入私有仓库 github/workflows/ 目录下
删除文件trigger-build.yml.example后的.example即可
注意
需要注意的是,至本文编写完成时,内容模板仓库中有关触发工作流文件存在问题,运行会直接报错 需要对其进行简单的修改
name: Trigger Theme Build
# 启用说明:# 本文件默认带有 .example 后缀,以防止在上游模板仓库中产生无意义的构建消耗。# 在你自己的独立内容仓库中启用自动化构建:# 1. 将本文件重命名为 .github/workflows/trigger-build.yml(去掉 .example 后缀);# 2. 在内容仓库 Settings -> Secrets and variables -> Actions 中按需配置密钥:# - 方式一(推荐):配置 DISPATCH_TOKEN(对主题代码仓授予 Contents: Read and write 权限的 PAT)# - 方式二:配置托管平台部署钩子(如 CLOUDFLARE_DEPLOY_HOOK、EDGEONE_DEPLOY_HOOK、VERCEL_DEPLOY_HOOK 等)
on: push: branches: - main paths: - "content/**" - "config/**" - "data/**" - "assets/**" - "public/**" - "shirone.content.json" workflow_dispatch: {}
# 并发控制:当短时间内多次高频推送内容时,自动取消正在进行的旧派发作业,仅保留最新一次触发,避免重复派发concurrency: group: trigger-build cancel-in-progress: true
jobs: validate: # 调用代码仓的可复用内容校验工作流,确保内容在合并与触发前通过格式与类型安全检查 uses: LyraVoid/Shirone/.github/workflows/content-validate.yml@main with: theme_repository: LyraVoid/Shirone theme_ref: main
dispatch: needs: validate runs-on: ubuntu-latest timeout-minutes: 5
env: DISPATCH_TOKEN: ${{ secrets.DISPATCH_TOKEN }} CLOUDFLARE_DEPLOY_HOOK: ${{ secrets.CLOUDFLARE_DEPLOY_HOOK }} VERCEL_DEPLOY_HOOK: ${{ secrets.VERCEL_DEPLOY_HOOK }} EDGEONE_DEPLOY_HOOK: ${{ secrets.EDGEONE_DEPLOY_HOOK }} NETLIFY_DEPLOY_HOOK: ${{ secrets.NETLIFY_DEPLOY_HOOK }}
steps: - name: Dispatch build event to theme repository if: ${{ env.DISPATCH_TOKEN != '' }} uses: peter-evans/repository-dispatch@v4 with: token: ${{ secrets.DISPATCH_TOKEN }} repository: LyraVoid/Shirone event-type: content-updated client-payload: '{"sha": "${{ github.sha }}"}'
- name: Trigger Cloudflare Pages deploy hook if: ${{ env.CLOUDFLARE_DEPLOY_HOOK != '' }} run: | curl -s -S -X POST "${{ secrets.CLOUDFLARE_DEPLOY_HOOK }}"
- name: Trigger Vercel deploy hook if: ${{ env.VERCEL_DEPLOY_HOOK != '' }} run: | curl -s -S -X POST "${{ secrets.VERCEL_DEPLOY_HOOK }}"
- name: Trigger EdgeOne deploy hook if: ${{ env.EDGEONE_DEPLOY_HOOK != '' }} run: | curl -s -S -X POST "${{ secrets.EDGEONE_DEPLOY_HOOK }}"
- name: Trigger Netlify deploy hook if: ${{ env.NETLIFY_DEPLOY_HOOK != '' }} run: | curl -s -S -X POST "${{ secrets.NETLIFY_DEPLOY_HOOK }}"如果要启用番剧功能,由于外部同步只发生在显式的 pnpm anime
例如,如果启用bilibili数据源,需要将EdgeOne中的部署命令修改为pnpm content
分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 6 天
部分内容可能已过时
评论