无服务器0费用部署mdbook 搭建个人博客
mdbook简单易用,但是模板和扩展较少,已经逐步升级到hugo上
思路
利用 github的Actions,实现自动编译
使用github的pages,部署静态网站
使用域名dns的解析
优点
不需要另外弄服务器,几乎可以说是完全免维护 ,这条就覆盖了所有缺点了
缺点 几乎没有
Actions 执行速度 有点慢
一开始弄错了脚本差不多需要8分钟才能更新
后续重新处理了一下 把Actions速度压缩到8-10秒左右,另外,,github pages的自动更新大概需要45-48秒,速度已经很可观了
国内访问速度慢
可以dns分区域解析 国内备案后套cdn来解决
国内编辑速度也有点慢
解决方法 本地编辑挂代理推送
使用gitee目前免费的镜像同步功能,自动推送到github ,gitee默认大概30分钟左右同步提交一次
也可以 用其他的支持deops的git自动提交给github 当然,直接挂梯子简单又靠谱
开始搞
打开 github 创建一个库
内容部分
至少需要一个文件 /src/SUMMARY.md
内容要符合mdbook的标准。
1
2
3
| # Table of contents
- [首页](README.md)
|
另外 简单弄一个首页文件
/src/README.md
内容随意
再创建自动化文件
github默认使用这个文件夹下的文件来执行
.github/workflows/mdbook.yml
内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| name: mdbook
on:
push:
branches:
- main
jobs:
mdbook_build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: 安装 mdbook
run: |
mkdir mdbook
curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
echo `pwd`/mdbook >> $GITHUB_PATH
- name: 编译 mdbook
run: |
mdbook build
- name: 文件处理
run: |
git worktree add gh-pages
#mkdir gh-pages
cd gh-pages
echo "删除 ref 以避免保留历史记录"
rm -rf *
mv ../book/* .
echo "处理独立域名的绑定 CNAME文件"
echo "dev.leiyanhui.com" >> CNAME
- name: 部署
run: |
git config user.name "joyanhui"
git config user.email "joyanhui@qq.com"
git init
#git checkout -b main
git add -A
git commit -m "自动生成 $GITHUB_SHA to gh-pages"
echo "推送 "
git push origin gh-pages -f -q
|
然后打开 https://github.com/你的用户/仓库名/actions
查看 这个ci运行情况
前面需要编译一些东西,所以速度很慢 耐心等待
上面 会自动创建一个分支 branch: gh-pages 里面是html文件
然后 pages 定位到这个分支 就可以了
进阶
使用私有库保护源码
github的私有库开通pages 是收费的
点击这里查看私有库免费pages方法
国内访问和管理加速
点击自动部署在github上的 mdbook 或者 hexo等 国内访问加速的方法
其他问题
一些错误
1
| Error: The deploy step encountered an error: The process '/usr/bin/git' failed with exit code 128
|
如果绑定独立域名的话
还需要 在/book/ 里面创建一个CNAME文件,内容 就是域名,不然每次会自动删除
在前面的 mv ../book/* .
之前添加一行
1
| echo "dev.leiyanhui.com" >> ../book/CNAME
|
参考:https://github.com/rust-lang/mdBook/wiki/Automated-Deployment:-GitHub-Actions