Blog of Li

个人Blog 一年更新约一次

0%

个人Blog的搭建方案(2) 自动构建

个人博客用Hexo+Next已经很方便了,但是仍然存在不足,就是我有好几个常用的工作PC,所以需要在每个PC上安装一套node.js/pandoc等依赖,实在是有些麻烦。所以我希望像github pages+jekyll一样,只用上传markdown就能自动构建出网站。这样我的repo中也可以很干净,只需要写markdown文本就行了,本地不需要安装任何依赖。

Travis CI

Build Status

首先在Github的设置https://github.com/settings/tokens里配置一个token,用来让Travis CI能够push文件到Github Repos里。

然后在Travis CI里和Github账户绑定,在Github Pages项目上建立一个任务。

配置文件如下,其中要在Travis CI这个项目的环境变量里添加GH_TOKENGH_REF,其中前者是第一步获取的token,后者是你的Github仓库地址,例如github.com/li-positive-one/li-positive-one.github.io

把这个配置文件命名.travis.yml,放到github仓库的根目录下,Travis就会自动识别并根据配置文件进行构建。

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
# .travis.yml
language: node_js
node_js: stable
cache:
directories:
- node_modules

# 如果想在Blog中使用mathjax,就要用hexo-renderer-pandoc渲染,其中依赖pandoc。但是使用apt-get 安装pandoc,安装的是非常古老的版本,可能会不兼容,所以不如直接下载安装pandoc的可用的较新版本使用。
before_install:
- wget https://github.com/jgm/pandoc/releases/download/2.9/pandoc-2.9-1-amd64.deb
- sudo dpkg -i ./pandoc-2.9-1-amd64.deb

install:
- npm install -g hexo-cli
- npm install

script:
- git submodule update --init --recursive
- hexo g

after_script:
- cd ./public
- git init
- git config user.name "lizhengyi"
- git config user.email "[email protected]"
- git checkout -b docs
- git add .
- git commit -m "Update blog content by Travis CI"
- git push --force --quiet "https://${GH_TOKEN}@github.com/li-positive-one/blog.git" docs:docs

branches:
only:
- docs

参考资料:

【1】使用 Travis CI 实现 Hexo 博客自动部署

Netlify

Netlify Status

Netlify似乎专业做静态网站构建和自动Deploy,所以在这方面体验确实非常好,好到什么地步了呢?

只需要github仓库授权,告诉他我的构建命令是hexo g,deploy的文件在public目录下,其余的事情它自己全部解决了!不需要写任何配置文件,网站就一次pass了,包括pandoc之类的依赖似乎他都自己解决掉了。总之,生成网页非常方便,而且构建速度也比Travis CI快不少。因为Travis CI每次构建都需要安装依赖,而Netlify的依赖可能都保存下来了,我看构建的log中每次只需要hexo g就结束了。

但是Netlify都是构建在它自己的网站上的,所以有一个问题就是Netlify在中国大陆地区的访问似乎不是很稳定。所以我还是没有把鸡蛋都放在这一个篮子里。Github和Travis CI一起上岂不是更好,两开花~ 两开花~