使用travis-ci自动部署hexo博客
travis-ci是一个持续集成工具,目前已经支持大部分主流语言了,如:node.js、objective-c、android、php、c、java、python、ruby、go等等。travis ci与github集成非常紧密,官方的集成测试托管只支持github项目,而且它对于公有的github仓库免费。在这篇文章中,我将介绍如何通过travis-ci自动化部署hexo博客。
开启travis-ci
首先去travis-ci官网,点击右上角Sign in with GitHub
通过github授权登录。然后去到个人信息页面,开启需要使用travis的项目关:
加密私钥
首先我们要安装travis-ci的命令行工具
1 | gem install travis |
然后通过命令行登录travis-ci:
1 | # https://github.com/travis-ci/travis.rb#login |
登录需要输入github用户名和密码。如果不想通过用户名登录的话,也可以通过github-token登录(反正我是通过这种方式登录的,通过输入用户名密码登录总是报Validation Failed
的错误):
1 | travis login --github-token 'token' |
github-token可以去https://github.com/settings/tokens查看,如果Personal access tokens
列表里面有的话可以选中一个点击Edit
,然后点击Regenerate token
重新生成就可以看到token了。没有的话点击Generate new token
生成一个token。
可以检查一下是否登录成功:
1 | travis whoami |
接着我们需要对ssh私钥id_rsa
进行加密:
1 | # github支持对每个项目设置Deploy keys,并且赋予读取权限 |
其中--add
参数,travis的客户端会自动检测当前目录中的git信息,并且把生成的解密key添加到.travis.yml
中去。在进行此步操作前,目录下要先存在.travis.yml
文件,否则会报错。
关于encrypt-file
详细用法可以查看travis api文档encrypting-files
执行完上面的命令之后,会在当前目录生成一个id_rsa.enc
的加密文件,我们可以在当前项目新建一个.travis
的目录,然后把该文件放到此目录一起添加至git仓库。
由于git在第一次连接的时候会询问Are you sure you want to continue connecting (yes/no)?
,因此我们需要配置一下ssh让它不询问。在项目的.travis
目录下面新建ssh_config
文件,下面是我的配置,可以根据你的需要修改:
1 | Host github.com |
到此构建准备工作完毕。
构建配置
上面的操作就是为了让travis-ci对仓库拥有push权限,但是又不能把我们的私钥暴露出去。
下面就是我的.travis.yml
文件的配置信息:
1 | language: node_js |
其中的$encrypted_0a6446eb3ae3_key
便是你travis encrypt-file
的时候生成的。如果你在执行encrypt-file
的时候存在.travis.yml
文件,它将会自动把openssl ...
这段添加进去。
有关.travis.yml
文件的更多配置可以看这里:customizing-the-build
结语
把你的项目修改提交一下,你将在travi-ci看到一条build信息。
如果你也想在github的README.md显示构建成功与否的标示,你可以这样:
1 | [build-info](https://travis-ci.org/userName/repoName.svg) |
原文作者: bukas
原文链接: https://www.noonme.com/post/2016/03/travisci-hexo-deploy/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议