手把手教從零開始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自動部署Hexo(1)

使用Travis自動部署Hexo(1))

原文:手把手教從零開始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自動部署Hexo(1)node

前言

前面兩篇文章介紹了在github上使用hexo搭建博客的基本環境和hexo相關參數設置等。
基於目前,博客基本上是能夠完美運行了。
可是,有一點是不太好,就是源碼同步問題,若是在不一樣的電腦上寫文章會很是不方便。
是由於hexo使用的部署命令是把生成好的靜態文件上傳到倉庫中的,因此,在其餘電腦上同步下來的只是靜態文件而已,不是源碼。git

到這裏就會想到能不能這樣:將源碼同步到遠程倉庫後,能夠實現自動生成部署呢?
答案是確定的,能夠經過Travis CI來實現。github

那麼,本文就介紹一下Travis CI實現Hexo博客自動生成並部署。shell

說明:
文中出現的命令,Windows用戶注意,命令前面有 $ 的表示在Git Bash中執行,沒有的在CMD命令窗口執行。
Linux和MAC系統在終端下不區分。npm

配置多個SSH

  • 生成ssh密鑰
    可使用全局的ssh密鑰,不過建議使用單獨的ssh密鑰,在這裏以單獨ssh密鑰爲例。ubuntu

因爲以前生成過ssh密鑰,如今不能覆蓋以前的,只須要在執行生成命令時注意一下就行了。ruby

$ #切換到.ssh文件下
$ cd ~/.ssh
$ #生成密鑰,後面換成本身的github郵箱
$ ssh-keygen -t rsa -C "SeayXu@163.com"

輸入上面命令後回車一下,當提示Enter file in which to save the key (/c/Users/Seay/.ssh/id_rsa):時,輸入新的ssh密鑰文件路徑和文件名(不能是.ssh/id_rsa),這裏輸入id_rsa_blog,而後一路回車。
生成SSH密鑰
密鑰已經成功生成。hexo

  • 添加ssh到github
    登陸到github中,點擊進入到博客倉庫。ssh

點擊右上方的Settings進入到設置頁面,點擊左邊的Deploy keys項。
在右上點擊Add deploy key,而後在下面輸入標題,把生成的密鑰id_rsa_blog.pub裏面的內容複製到key文本框中,選中下面的Allow write access,最後點擊Add key
github添加ssh編輯器

  • 新建配置文件
    在.ssh文件夾中建立一個名爲config的配置文件。

$ cd ~/.ssh
$ touch config
  • 編輯配置信息
    用編輯器打開config文件,添加以下信息:

# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
# 這裏是空行
# github_blog
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_blog

提示:這裏的密鑰文件路徑根據本身的作相應修改。

配置Travis

  • 接入Travis CI
    打開Travis CI網站,使用github帳號登陸。

將鼠標放在右上角的用戶名上,點擊Account選項,會顯示github的項目。
找到博客項目,點擊前面帶有 X 符號的按鈕,開啓travis支持。
開啓travis支持
而後點擊設置按鈕,在項目的設置中開啓Build only if .travis.yml is present這一項.
Travis設置

  • 安裝travis
    Travis安裝須要Ruby環境,全部須要安裝Ruby,而且須要安裝rubygems插件。

# 安裝travis
gem isntall travis
  • 新建配置文件
    首先打開博客項目文件夾,在項目根目錄新建.travis.yml配置文件。

$ cd 博客項目文件夾根目錄
$ touch .travis.yml
  • 複製ssh私鑰
    在項目根目錄建立文件夾.travis

$ mkdir .travis

將開始生成的ssh密鑰文件id_rsa_bolg複製到.travis文件夾下:

$ cp ~/.ssh/id_rsa_blog .travis/
  • ssh配置文件
    這個ssh配置文件是用於在部署機器上使用的,不是本地的ssh配置文件,後面的travis配置文件會用到。

在.travis文件夾中新建文件ssh_config

$ touch .travis/ssh_config

編輯配置文件,添加以下內容:

Host github.com
    User git
    StrictHostKeyChecking no
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
  • 登陸travis

travis login --auto

而後會提示輸入github的用戶名和密碼。

  • 加密操做
    在博客項目文件夾下對ssh的私鑰進行加密

travis encrypt-file .travis/id_rsa_blog .travis/ --add

此操做會生成加密以後的祕鑰文件 id_rsa_blog.enc,刪除id_rsa_blog密鑰文件(私鑰不能隨便泄露)。
同時在終端上會輸出相似以下信息:
openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxx_iv
這是用於id_rsa_blog.enc解密的信息,保存上面 xxxxxxxxxxx的信息,後面會在.travis.yml配置文件會用到。

編輯配置文件

Travis配置文件

打開Travis配置文件.travis.yml,添加以下信息:

language: node_js
node_js:
- "4"  # nodejs的版本
branches:
  only:
  - dev  # 設置自動化部署的分支
before_install:
- export TZ='Asia/Shanghai'  # 設置時區
- npm install -g hexo
- npm install -g hexo-cli
# 將xxxxxxxxxxx替換上面生成的內容
# 這裏面的文件路徑可根據本身的狀況進行修改
# 解密id_rsa_blog.enc 輸出到.ssh/文件夾下,命名爲id_rsa
- openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxx_iv -in .travis/id_rsa_blog.enc -out ~/.ssh/id_rsa -d
# 設置id_rsa文件權限
- chmod 600 ~/.ssh/id_rsa
# 添加ssh密鑰
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
# 添加ssh配置文件
- cp .travis/ssh_config ~/.ssh/config
# 設置github帳戶信息
- git config --global user.name "SeayXu" #設置github用戶名
- git config --global user.email SeayXu@163.com #設置github用戶郵箱
# 安裝依賴組件
install:
- npm install
# 執行的命令
script:
- hexo clean && hexo g -d

編輯Hexo配置

若是以前配置過deploy信息能夠略過.

deploy:
  type: git
  repo: git@github.com:seayxu/seayxu.github.io.git # 同步的倉庫
  branch: dev # 同步的分組,與travis中的分支相同

本地操做

  • 初始化本地倉庫
    切換到項目根目錄下,刪除原來部署時產生的.git文件夾.

執行初始化操做

$ git init

關聯遠程倉庫

$ # 將github倉庫改成本身的
$ git remote add origin git@github.com:SeayXu/seayxu.github.io.git
  • 推送倉庫
    提交本地修改,推送至github倉庫。

$ # 添加文件
$ git add .
$ # 提交修改
$ git commit -m "test travis"
$ # 推送至遠程倉庫
$ git push -u origin dev

push本地的代碼至遠程倉庫以後,在https://travis-ci.org後臺查看相關狀況。
下面是成功的結果:
結果圖

經驗提示

1.Windows用戶可能會出現以下錯誤:

The command "openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxx_iv -in .travis/id_rsa_blog_travis.enc -out ~/.ssh/id_rsa -d" failed and exited with 1 during .

這個錯誤在github中有issues,能夠去看一下,我回答了部分。
個人緣由是travis在執行加密操做生成的加密信息位數不對。以後在ubuntu系統中操做就一切正常。

若是不想安裝虛擬機,還有另一種方式實現,在下一篇文章中會詳細說明。

2.全部的配置文件是yaml格式,空格必定要注意。

Hexo博客交流羣
【Hexo博客交流羣】
羣號:582271078

相關文章
相關標籤/搜索