1. 这个博客是个啥?
这是个用于发癫记录每日有价值的事情的博客。听起来是不是听像日记的?所以我就叫它赛博笔记本了。
2. 为什么要建立这个博客?
- 用于记录解决过的问题,不用翻收藏夹。
- 用于记录生活的中的琐事,
拯救我日益退化的记忆力。 - 未完待续
3. 怎样部署的这个博客?
博客使用Hexo博客框架和Next主题。本人技术水平不算很高,就不班门弄斧了,可以参考以下资料:
我在这里主要讲如何在Cloudflare Pages和Github Pages上部署博客。
前置条件
- 一个可以运行的Hexo博客
- Cloudflare/Github账户
- 良好的网络连接情况
在Github使用静态界面部署
- 一般来说,在Hexo框架配置文件中配置好
deploy:代码块,并确认能向Github仓库推送文件后,通过hexo d方法可以很方便的将编译出的静态文件(即/pubic文件夹中的文件)推送到仓库中。 - 此时,在仓库的
Settings > Pages > Branch中配置静态文件所在的分支和目录后保存。刷新网页将分配的域名填入Hexo框架配置文件中的url:参数中。 - 重新推送仓库,部署完成,访问步骤2中获得的域名即可访问博客。
Tips:
- Github Pages的域名是
<你的Github用户名>.github.io——在你的仓库名称和域名一样的情况下是这样的。- 当仓库名称不是
<你的Github用户名>.github.io时,你仓库所对应的域名为<你的Github用户名>.github.io/<仓库名>,以路由的形式指向仓库。- 确认好你的Github Pages域名,需要填入Hexo框架配置文件中的
url:参数中。


至于配置自定义域名啥的我就不讲了,网上一搜一大把。
在Github使用Github Action部署
Github提供了一种测试版的方式——使用Github Action对整个项目进行编译以进行部署。这种方式。。。。。。实际上并没有啥区别,毕竟最后都是把/public文件夹内的静态文件上传到Github Pages。官方的说法是最适合使用框架和自定义构建过程(Best for using frameworks and customizingyour build process.)。但我觉得唯一的好处应该是不用新开一个分支用来存储原始项目了。

然而,在Github提供的工作流文件中并没有Hexo的模板(Cloudflare也没有,不知道啥情况),但可以参考Github的给出的其他文件自己写一个。 对比Jekyll和静态文件的工作流文件,可以看到三块类似的代码块,下面对这三块代码块进行解释:

-
Checkout & Setup Pages——前者用于签出仓库,而后者用于启动Github Pages并提取有关站点的各种元数据。actions/configure-pages用于初始化Github Pages并提取有关站点的各种元数据:
![actions/configure-pages输出 actions/configure-pages输出]()
由于actions/checkout通过配置submodules参数可以签出Git子模块(Git Submodule)。所以理论上可以Fork一份Next主题的仓库进行修改,然后作为子模块添加到博客主仓库中,以简化主题的更新和提高代码复用。 -
actions/upload-pages-artifact——用于打包构建完成的文件并作为一个工件上传,拥有两个参数:- path: 包含静态文件的目录的路径。默认值为
_site/,即Jekyll工作流文件中定义的输出文件夹。 - retention-days: 工件将在几天后过期。默认值
"1",即一天后过期 - 上传的工件可以在对应的Github Action工作流运行的可视化图中找到
- path: 包含静态文件的目录的路径。默认值为
-
actions/deploy-pages——用于将build任务中上传的工件部署为GitHub Pages站点- 返回已部署的GitHub Pages的URL,
deploy任务通过环境变量url获取返回值,该环境变量将显示在存储库的部署页(通过单击存储库主页上的“环境”进行访问)和工作流运行的可视化图中。
- 返回已部署的GitHub Pages的URL,
了解了这些Action的作用后,我们只需要修改一下Jekyll工作流的构建部分,然后给actions/upload-pages-artifact指定个静态文件的路径就行了。
1 | # Sample workflow for building and deploying a Hexo site to GitHub Pages |
我使用actions/setup-node指定了nodejs版本与我本地的一致,并使用actions/cache缓存了NPM下载的依赖。这些操作参考了Hexo官方文档的Github Action部分,区别在于官方文档里也是将静态文件推送到仓库而不是直接部署。
由于项目的package.json中定义的build脚本是hexo generate并且依赖中包含"hexo": "^6.3.0",,所以不需要在环境中全局安装hexo-cli了,直接使用npm run build构建,最后在actions/upload-pages-artifact中指定path参数到/public文件夹就行。
