0%

基于TravisCI实现hexo博客持续继承

Travis CI是在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器,在网页上点几下就好,用起来更方便。它对开源项目是免费的,并且与Github实现了无缝衔接。

一、Travis CI

  1. 持续集成CI(Continuous Integration),一种自动编译和发布代码的技术。
  2. Travis CI是在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器,在网页上点几下就好,用起来更方便。它对开源项目是免费的,并且与Github实现了无缝衔接。

二、原理

local-github-travis

三、开始实现(https://www.travis-ci.com/)

github上有两个仓库,其中public的库就是当前博客的静态文件库,private是博客源文件,即md文件。

  1. 登录博客所在的Github账号,生成access tokens,在https://github.com/settings/tokens->Personal access tokens
    access

  2. 通过Github授权登录Travis CI官网

版本 主页 特色
免费版 https://travis-ci.org/ 为开源项目提供免费服务
收费版 https://travis-ci.com/ 可以部署 GitHub 私有仓库
  1. 将Github生成的access token添加至Travis CI

    • 操作步骤为More options>Setting>Environment Variables
    • Name随便(下面.travis.yml文件会用到),Value是Github生成的access token,其余默认即可,最后点击Add按钮
  2. 回到本地博客目录,添加.travis.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 指定语言环境
language: node_js

# 指定需要sudo权限
sudo: required

# 指定node_js版本
node_js:
- v11.10.0

# 指定缓存模块,可选。缓存可加快编译速度。
cache:
directories:
- node_modules

#git:
# submodules: true

# 指定博客的仓库地址
env:
global:
- GH_REF: https://github.com/liusirdotme/liusirdotme.github.io.git
- GH: yourtoken

# 指定博客分支,因人而异。hexo博客源码托管在独立repo则不用设置此项
#branches:
# only:
# - blog-resource

before_install:
- git clone https://github.com/theme-next/hexo-theme-next.git themes/next
- npm install -g cnpm --registry=https://registry.npm.taobao.org
- cnpm install -g hexo-cli

# Start: Build Lifecycle
install:
- cnpm install
- cnpm install hexo-algolia
- cnpm install hexo-deployer-git --save
- cnpm install hexo-generator-archive
- cnpm install hexo-generator-category
- cnpm install hexo-generator-index
- cnpm install hexo-generator-searchdb
- cnpm install hexo-generator-sitemap
- cnpm install hexo-generator-tag
- cnpm install hexo-renderer-marked
- cnpm install hexo-renderer-stylus
- cnpm install hexo-helper-live2d
- cnpm install hexo-renderer-ejs
- cnpm install hexo-symbols-count-time
- cnpm install hexo-tag-cloud
- cnpm install hexo-wordcount

# 执行清缓存,生成网页操作
script:
- hexo clean
- hexo generate

# 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
- git config --global user.name "yourname"
- git config --global user.email "youremail"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号,单引号无效!
- sed -i "s/gh_token/${GH}/g" ./_config.yml #GH为access_token(跟TravisCI后台保持一致),GH_REF为博客仓库,两者需跟上面保持一致
- hexo deploy
# End: Build LifeCycle
  1. 修改本地md文件,推送到github,查看页面是否同步更改。也可在TravisCI后台看到,Running部分。

使用以上方法,每次都要clone的主题,这样导致本地主题的配置无法使用。

可以在脚本执行那儿把本地的配置复制一份过去,换成scheme: Pisces,不过这样导致的结果是generate时运行超时,即超过10min没有输出任务就自动退出了。当然也可以通过写一个脚本,让任务持续输出,感觉好麻烦,还是在本地generate。

四、参考

  1. 参考一
  2. 参考二
  3. 参考三