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

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

前言

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

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

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

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

配置多個SSH

  • 生成ssh密鑰
    可以使用全局的ssh密鑰,不過建議使用單獨的ssh密鑰,在這裏以單獨ssh密鑰爲例。
    由於之前生成過ssh密鑰,現在不能覆蓋之前的,只需要在執行生成命令時注意一下就好了。

    $ #切換到.ssh文件下
    $ cd ~/.ssh
    $ #生成密鑰,後面換成自己的github郵箱
    $ ssh-keygen -t rsa -C "[email protected]"

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

  • 添加ssh到github
    登錄到github中,點擊進入到博客倉庫。
    點擊右上方的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 [email protected] #設置github用戶郵箱
# 安裝依賴組件
install:
- npm install
# 執行的命令
script:
- hexo clean && hexo g -d

編輯Hexo配置

如果之前配置過deploy信息可以略過.

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

本地操作

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

    $ git init

    關聯遠程倉庫

    $ # 將github倉庫改爲自己的
    $ git remote add origin [email protected]: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格式,空格一定要注意。

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

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章