hexo+travis-ci自动构建并部署到云服务器

写在前面

上篇已经讲过如何使用travis-ci完成自动构建,本篇主要将如何将构建好的内容发布到个人云服务器
那么接下来的一步就是部署到远程服务器。Travis提供after_success来实现这步骤。

但是,我们要部署到远程服务器,那么势必需要让Travis登录到远程服务,前一篇已经讲过我们私有服务可通过配置私钥的方式通过ssh进行访问,这里我们要说的是使用加密密钥的方式,因为发现公共仓库在Travis无法设置ssh链接,官方有给出加密的方式:加密keys,但是我们要先安装Travis加密所需环境.

Travis-Client 命令行工具安装

安装ruby

确保安装的是ruby-devel,笔者环境时centos7.2,一开始直接安装ruby,再安装travis的时候提示以下错误:

mkmf.rb can’t find header files for ruby at /usr/share/include/ruby.h

1
$ yum install ruby-devel

安装Travis

安装官方指导使用的是1.8.9安装也是提示错误,就将版本号改成1.8.8之后提示安装成功。

1
$ gem install travis -v 1.8.8 --no-rdoc --no-ri

登陆到Travis

1
$ travis login

如何加密私钥

将需要构建的仓储库clone到本地

我是将文件clone到~/下了,如何生成ssh私钥公钥的话自行百度吧

1
2
3
$ cd ~
$ git clone git@github.com:idrools/book.git
$ cd book

将私钥加密上传到Travis

1
2
3
4
5
6
7
8
9
10
$ cd ~
$ travis encrypt-file ~/.ssh/id_rsa --add
Detected repository as xxx/xxx, is this correct? |yes| yes
encrypting ~/.ssh/id_rsa for xxx/xxx
storing result as id_rsa.enc
storing secure env variables for decryption

Make sure to add id_rsa.enc to the git repository.
Make sure not to add ~/.ssh/id_rsa to the git repository.
Commit all changes to your .travis.yml.

编写.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
language: node_js
node_js: stable
addons:
ssh_known_hosts:
- github.com
- 192.30.253.113
- gitee.com
- 120.55.226.24
- 94.191.80.51
before-install:
- openssl aes-256-cbc -K $encrypted_a8fc4b24cb2e_key -iv $encrypted_a8fc4b24cb2e_iv
-in github_travis.enc -out ~\/.ssh/github_travis -d
install:
- npm install gitbook-cli -g
script:
- gitbook install
- gitbook build
- ls
- scp -r _book/ git@94.191.80.51:/usr/local/www/book
after_script:
- echo "Hello World"
branches:
only:
- master
notifications:
email:
- idrools007@gmail.com
- zxh877027287@gmail.com
on_success: change
on_failure: always
idrools/book:
- openssl aes-256-cbc -K $encrypted_a8fc4b24cb2e_key -iv $encrypted_a8fc4b24cb2e_iv
-in github_travis.enc -out ~\/.ssh/github_travis -d

参考资料

Hexo搭建个人博客并使用Git部署到VPS
官方安装Travis说明安装手册