Hexo 博客 travis-ci 自动部署到VPS

前言

本博客是用的hexo,deploy 是配置的 rsync,由于公司用的 windows 上没有 rsync, 因此想到 push 后经过 travis-ci 来自动 deploy,接下来就开工了...git

travis-ci

使用 github 账号登陆 https://travis-ci.org/, 将博客项目(yangg/blog)开启,而后在项目下新建 .travis.yml 配置文件,当 push 时 travis 自动读取这个配置文件来完成 hexo 的 generate 和 deploy,可是 deploy 须要服务器的 ssh 写权限,因此就须要将 ssh key 上传到项目中,可是由于 github 的项目是公开的,这样就没有安全可言了,好在 travis 有提供加密功能,只要将 ssh key 加密放到项目中,travis 运行时再解密生成 key,这样安全的问题就解决了。
<!-- more -->github

为 travis 生成 ssh key

ssh-keygen -f travis                    # 生成 travis, travis.pub
travis.pub >> ~/.ssh/authorized_keys    # 将公钥添加到服务器

加密私钥

travis 加密命令是要经过 gem 安装的,请确保 ruby 已经安装。
gem 由于众所周知的缘由,在国内不太好访问,建议在 vps 上博客的项目目录里(没有就 clone一个,由于下面的 --add 会修改 .travis.yml )安装执行下面的命令windows

gem install travis
travis login                        # github 账号和密码,token 我没登陆上
travis encrypt-file travis  --add   # 加密 travis 私钥,--add 将解密命令添加到 .travis.yml

将 vps 上生成的 travis.enc 和 修改过的 .travis.yml 文件复制到本地的项目目录里。
--add 修改的内容安全

before_install:
- openssl aes-256-cbc -K $encrypted_6094e4f462c1_key -iv $encrypted_6094e4f462c1_iv -in .travis/travis.enc -out ~/.ssh/id_rsa -d

这样加密的问题就搞定了。ruby

ssh known_hosts

由于 travis-ci 默认只添加了 github.com, gist.github.comssh.github.com 为 known_hosts,rsync 执行时会提示是否添加,可是 travis-ci 里不能输入确认,因此须要将自动服务器的域名和商品添加到 known_hostsbash

addons:
  ssh_known_hosts: uedsky.com:1223

而后再配置 .travis.yml 的其它配置就能够了

完整的.travis.yml 配置服务器

参考

原文地址:https://uedsky.com/2016-06/travis-deploy/
获取最佳阅读体验并参与讨论,请访问原文加密

相关文章
相关标签/搜索