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/
獲取最佳閱讀體驗並參與討論,請訪問原文加密

相關文章
相關標籤/搜索