Travis CI 自动部署 Hexo Blog
需求
老的部署方法:
- 本地写md
- push到github
- 服务器上hexo c && hexo g
想要的部署方法:
- 本地写md
- push到github
- 没了 坐等自动更新
不都是三步吗
第三步再细分的话就是
- CI拉取变化的分支
- 安装依赖
- hexo c && hexo g
- 将静态文件发送到服务器
网上的攻略写的太杂了 和我想象中的流程又有些不太一样 所以各种攻略提取一些有用的东西再综合一下..
Travis CI
持续集成工具
https://travis-ci.org/ 这个是免费给开源项目用的
https://travis-ci.com/ 这个收费的
使用github账号登录travis,然后pick上要自动部署的项目
.travis.yml
travis的配置文件,必须放在项目根目录下
1 | language: node_js |
这是利用travis自动打包的基础配置,把这个push上去其实就能在travis.org上看到自动打包的一个过程
把文件丢到服务器
需要travis免密登录服务器然后把东西丢到服务器上
以下几步最好不要在windows下执行,会翻车
创建sshkey
ssh-keygen -t rsa -C "blog"
-C
后面是描述(可以不要)
名字可以自个儿取 默认是 id_rsa
(最好不要用默认的 我改成了id_rsa_travis_blog
)
当前用户的.ssh
文件夹下会多出两个文件:
id_rsa_travis_blog
-> 私钥
id_rsa_travis_blog.pub
-> 公钥
然后把公钥发到要部署的服务器上
ssh-copy-id -i id_rsa_travis_blog.pub user@host
user和host改成指定的用户和主机名(不要用root嗷)
如果ssh端口不是22的话 加一个 -p port
进入服务器的user的.ssh文件夹
能看到authorized_keys
文件新增了一条刚刚添加的公钥信息
最后chmod 644 authorized_keys
,不然travis还是会提示输入密码
私钥加密
进入项目根目录,然后travis login
登录travis(用github账户)
travis的安装需要ruby 此处略
登录成功后执行travis encrypt-file ~/.ssh/id_rsa_travis_blog --add
项目根目录会生成一个id_rsa_travis_blog.enc
的加密文件
.travis.yml
文件也会自动插入一条内容:
1 | before_install: |
key
和iv
能在travis的环境变量里找到
然后修改before_install
1 | before_install: |
开启ssh-agent
并添加私钥
文件传输
首先为了隐藏一些隐私,需要在travis上添加环境变量
然后.travis.yml
中添加授信
1 | addons: |
最后在after_success
钩子中添加
1 | after_success: |
成了 push到远端后就能在travis上看到本次的自动部署流程了
有总共花费的时间 整个流程的日志 还有邮件提醒