使用Travis CI自动构建Hexo

Travis CI是什么?

Travis CI 是在线托管的持续集成服务,绑定Github项目,抓取新的代码自动进行测试构建,甚至自动部署到测试环境。 使用这项服务,每次我们提交新的代码,都能及时发现问题并修复。

为什么要使用Travis CI?

明明hexo g -d 就很方便,为什么要使用Travis CI?
最主要的是可以随时在github上修改你的博客,甚至可以在线发表博客,解决少数时候电脑上没有Hexo环境的麻烦

自动构建原理

1.当我们写完文章push到github
2.Travis检测到我们push了文章
3.Travis将我们的代码clone至它的服务器环境,执行打包部署

开始操作

  • 在github中创建你的项目(可以是username.github.io,不是也没关系)
  • 在github的Developer settings配置让Travis有权限访问仓库的Token,生成token后暂时不要关闭
  • 进入Travis CI官网使用github账号登录,添加刚刚新建的仓库
  • 进入Travis点击你的仓库-More option -> Settings -> Environment Variables ,NAME填入GH_TOKEN, VALUE填入刚刚生成的token,点击add保存
  • 在你的本地仓库的根目录新建文件.travis.yml(和这两个文件同一级别_config.yml & package.json),填入下面的内容
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
sudo: false
language: node_js
node_js:
- stable # use nodejs 稳定版
cache: npm

branches:
only:
- hexo # build master branch only # 仅push到hexo源码分支才去执行构建

before_install:
- export TZ='Asia/Shanghai' # 更改时区
script:
- hexo clean
- hexo generate # generate static files

deploy:
provider: pages
skip_cleanup: true
github_token: $GH_TOKEN
keep_history: true
target_branch: master # 因为Travis默认推送到gh-pages,而我们这里要改推送到master
fqdn: xyzdy.cn # 自定义域名
on:
branch: hexo # 源代码分支hexo
local_dir: public
  • 将你的Hexo文件夹的文件 push到github。默认情况下,public/文件夹是不上传的,请确保.gitignore文件包含public/。没有.gitmodules文件,文件夹结构应该与此仓库大致相似。
1
2
3
git init 
git add .
git commit -m '初始化'

注意,如果你的项目是username.github.io,请将源文件push到非master分支,如果是其它名字请push到master分支,因为Github Pages服务对于用户和组织默认发布源是-master,对于项目站点默认发布源是-gh-pages

1
2
3
4
5
6
# 以项目是`username.github.io`为例
git checkout -b hexo # 新建hexo分支(用于存放源码的分支)
git branch # 查看当前分支情况
git remote add origin https://github.com/username/username.github.io.git # 与github仓库建立连接
git remote -v # 查看连接情况,如果不对,使用`git remote rm origin`移除
git push origin hexo # push到远端仓库的分支hexo

push完成就可以在Travis的仓库页面查看执行日志了,等2分钟就会自动部署到master分支了

采坑总结

我push了好多好多次,travis自动部署的文件总是为0kb的空文件,最后发现是因为主题没有上传导致(主题是直接用git clone下来的),删除主题里面的.git文件,再到主题的.gitignore文件中去掉_config.xml

参考:
使用Travis-CI部署hexo博客到腾讯cos&github-pages
手把手教你使用Travis CI自动部署你的Hexo博客到Github上

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×