无服务器0费用部署mdbook 搭建个人博客

无服务器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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计