手摸手教学之白嫖博客并自动部署
手摸手教学之白嫖博客并自动部署(Hexo+GitHub Pages+GitHub Actions)
前言
先赞后看,已成习惯,大家好,我是奉旨撸码的胖大海。
年轻的时候弄了个博客,每年都只会被访问一次……在阿里云给我下续费通牒的时候。
很冤,但抱着”每个前端人都应该有自己的博客“的信念,咬着牙续费了几次。
今年3月份,续费通知如约而至,我再一次来到了历史的岔路口。
此刻,6*12块钱和心中的信仰,站在命运天平的两端,左右摇曳……
如你所见,事情的结局是:TMD我全都要,小孩子才做选择题!
独乐乐不如众乐乐,一篇”手摸手教学之白嫖博客并持续集成“献给各位。
效果前瞻
技术栈
- Hexo
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 - GitHub Pages
GitHub Pages是 GitHub的网站托管服务。通过简单的配置就可以把你的仓库变成一个静态资源服务器, 直接从您的GitHub存储库托管 - GitHub Actions
GitHub Actions 是 GitHub 的持续集成服务。持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub Actions允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。
感兴趣的小伙伴,移步阮一峰大佬的GitHub Actions 入门教程。
Hexo项目搭建
白嫖第一步:创建项目并实现本地预览。
1. 全局安装hexo-cli
1 |
|
2. 初始化项目
1 |
|
目录结构应该是这样式的
1
2
3
4
5
6
7
8
9├── _config.landscape.yml
├── _config.yml
├── db.json
├── node_modules
├── package-lock.json
├── package.json
├── scaffolds
├── source
└── themes
3. 安装依赖
1 |
|
4. 运行
1 |
|
5. 应用主题
有点丑,咱们给换个主题。在知乎看了好多答案,选来选取,还是(张凯强的技术分享)最有眼缘。
5.1. 安装主题hexo-theme-fluid
npm install --save hexo-theme-fluid
5.2. 修改配置
// _config.yml
language: zh-CN
theme: fluid
5.3. 重启服务并刷新页面
舒服了……当然你也可以自己选。hexo官网348款主题总有一款适合你。
6. 构建
1 |
|
执行成功后,项目中会多出一个public目录,如果不托管到Git Pages的话,把它上传到你的静态资源服务器即可。
GitHub Actions自动部署
白嫖第二步:提交代码到GithHub并实现自动部署
1. 在Github新建仓库并提交代码
1 |
|
2. 生成秘钥
参照官方文档生成秘钥, Select scopes仅选择workflow那一项即可。
ps: 创建成功记得复制秘钥
3. 设置秘钥
把上一步复制的秘钥粘贴进去,并起个名字,后面脚本会用到。我这里用的ACCESS_TOKEN
4. 新建actions脚本
在根目录下依次创建.github/workflows/deploy.yml,内容如下
1 |
|
它的作用就是当main分支有代码提交时,自动构建并发布到blog分支。
这里需要修改PERSONAL_TOKEN、PUBLISH_REPOSITORY和BRANCH为自己的
Ps: 这是我在Actions库里搜hexo抄来的,大家也可以自行选择。
5. 效果展示
现在提交任意代码后,脚本会被触发,且在Actions能看到脚本执行情况。
等待执行完毕,切换到blog分支(上面.yml倒数第二行有配置),可以看到构建后的代码被提交到了这里。
以后咱们每次在main push代码,GitHub Actions都会自动的帮我们构建并发布到远程分支
GitHub Pages托管网站
白嫖第三步:网站托管并设置域名,实现通过域名访问博客
1. 设置
这个设置就是把你的仓库变成一个静态资源服务器
2. 域名解析
没有域名的请直接第四步
这是我在阿里云域名的解析配置
3. 设置自定义域名
保存后,就可以通过https://www.zhaohaipeng.com/访问了
4. 不自定义域名
如果不自定义域名,咱们可以直接通过https://qq9694526.github.io/blog/访问,但打开后会有很多404。
Hexo官网中有相关说明
如果您的网站存放在子目录中,例如
http://example.com/blog
,则请将您的url
设为http://example.com/blog
并把root
设为/blog/
。咱们需要修改构建配置,在_config.yml中新增根路径配置
1 |
|
可以本地npm run build验证下结果。看到public/index.html中(拉到最下面)js路径有以下变化,说明配置已生效。
1 |
|
现在提交代码、触发Actions成功后,https://qq9694526.github.io/blog/就可以正常访问了
常见问题
1. 自动化部署后自定义域名丢失
在source新增CNAME文件
2. 文档描述不具体、不理解配置项的作用?
可以通过查看主题源码中的.ejs文件,分析配置的作用和获取文档中未说明的配置项
参考链接
- Hexo主题hexo-theme-fluid
- GitHub Actions 入门教程
- 图片资源pixabay
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!