Hexo趕上Travis-CI:多是最通俗易懂的自動發佈博客圖文教程

相信不少同窗都有本身的博客,若是沒有,能夠參看《Hexo建站:部署到github》,利用Hexo和github pages服務搭建一個美觀便捷的博客,Hexo能夠將你編寫的md文檔解析渲染成html網頁,最後經過git推送到github便可造成一個網站。html

Hexo發佈博客流程

  1. 搭建hexo環境(一系列軟件安裝,配置)
  2. hexo new post 「文章名稱」
  3. 編寫md文檔
  4. hexo clean
  5. hexo generate
  6. hexo deploy

以上第一步通常只在第一次搭建的時候須要進行,後續只要執行2~6步便可。可是存在一些狀況,假如你須要在不一樣的電腦上發佈博客呢?假如你重裝了系統呢?是否是須要從新來一次?要知道最繁瑣的步驟就是第一步,這裏面能夠分出不少步來作,看過上面那篇博客或者本身正在使用hexo+gh手動發佈博客的同窗都知道多痛苦。node

今天筆者就來介紹下利用travis-ci這個持續集成平臺簡化發佈流程,簡化後流程:git

  1. 編寫md文檔
  2. git push

利用travis大大提升了效率!是否是很誘人?github

Travis-CI簡介

Travis CI 是開源持續集成構建項目,用來構建託管在GitHub上的代碼。它提供了多種編程語言的支持,包括JavaScript,Java,Scala,Ruby,PHP,Haskell和Erlang在內的多種語言。shell

當咱們每次進行git push等動做時,Travis CI 會自動檢測咱們的提交,而後根據配置文件.travis.yml幫咱們自動生成、部署靜態網頁。npm

事先預備

推送hexo博客源碼到github

  1. cd進入本身的本地hexo博客文件夾,就是你要發佈博客時進入的那個文件夾。
  2. 將本身本地全部hexo博客源碼文件push到github。
    推送教程:《如何提交代碼到Github》

注意:不是hexo deploy更新博客repo!而是直接把本地博客託管到github。編程

筆者直接把本地hexo博客源碼託管到了xiong-it.github.iohexo分支,博客網站則在默認的master分支上。不想採起分支管理的話,你也能夠把本地hexo博客託管到獨立倉庫,可是在配置travis同步時會有所不一樣。本文采起分支管理方式。vim

配置github token

那既然須要使用travis自動化更新你的博客,travis天然須要讀寫你的github上的repo。github提供了token機制來供外部訪問你的倉庫。緩存

進入github.com/settings/to…,生成一個供travis讀寫你的github用的token,至於token的權限,筆者直接全選了,可是不建議這樣作,風險比較大,token注意保密,待會會用到。
bash

此處輸入圖片的描述
此處輸入圖片的描述

配置Travis-CI

使用github帳號登錄travis,若是沒有github帳號的同窗,能夠參考《如何提交代碼到Github》註冊一個本身的github帳號。

在travis進入倉庫同步管理

進入travis-ci.org/profile打開剛纔託管的hexo博客源碼倉庫同步開關,不必定是博客網站repo。因爲筆者直接把本地hexo博客源碼託管到了xiong-it.github.iohexo分支,因此也就是打開網站repo。若是你不是採起的分支管理,而是將hexo博客源碼託管道獨立repo,打開對應的github repo開關便可。
如圖:

此處輸入圖片的描述
此處輸入圖片的描述

travis設置

點擊上圖中紅色圓圈,進入設置頁,設置自動化編譯時機,自動化編譯過程當中須要用到的變量。

此處輸入圖片的描述
此處輸入圖片的描述

此處輸入圖片的描述
此處輸入圖片的描述

以上設置的含義是:

  • 只在.travis.yml文件存在時編譯,必選!
  • 當倉庫/分支發生更新時編譯,也就是push後進行編譯的意思,通常會須要選擇,方便自動化構建。
  • 加了GH_TOEKN等變量,value值爲剛纔預備工做中準備的token字符串

編寫.travis.yml文件

.travis.ymltravis平臺進行自動化構建的配置文件,travis會根據配置文件生成一個shell自動化腳本。

進入hexo博客源碼本地repo

cd hexo
touch .travis.yml
vim .travis.yml複製代碼

.travis.yml示例以下:

# 指定語言環境
language: node_js
# 指定須要sudo權限
sudo: required
# 指定node_js版本
node_js: 
 - 7.9.0
# 指定緩存模塊,可選。緩存可加快編譯速度。
cache:
 directories:
 - node_modules

# 指定博客源碼分支,因人而異。hexo博客源碼託管在獨立repo則不用設置此項
branches:
 only:
 - hexo 

before_install:
 - npm install -g hexo-cli

# Start: Build Lifecycle
install:
 - npm install
 - npm install hexo-deployer-git --save

# 執行清緩存,生成網頁操做
script:
 - hexo clean
 - hexo generate

# 設置git提交名,郵箱;替換真實token到_config.yml文件,最後depoy部署
after_script:
 - git config user.name "yourName"
 - git config user.email "yourEmail"
  # 替換同目錄下的_config.yml文件中gh_token字符串爲travis後臺剛纔配置的變量,注意此處sed命令用了雙引號。單引號無效!
 - sed -i "s/gh_token/${GH_TOKEN}/g" ./_config.yml
 - hexo deploy
# End: Build LifeCycle複製代碼

修改下_config.yml文件的deploy節點:

# 修改前
deploy:
 - type: git
 repo: git@github.com:xiong-it/xiong-it.github.io.git
 branch: master複製代碼
# 修改後
deploy:
- type: git
  # 下方的gh_token會被.travis.yml中sed命令替換
 repo: https://gh_token@github.com/xiong-it/xiong-it.github.io.git
 branch: master複製代碼

yml示例傳送門

最後將兩個yml文件push更新到hexo博客源碼branch或者獨立repo,就會在travis後臺成功看到第一次構建了。

歡迎訪問個人我的hexo博客:xiong-it.github.io

大功告成

之後每次更新博客,只須要編寫md文件,放入hexo/source/_post/文件夾下,git add,commit,push後,push操做也能夠直接使用剛纔申請的token,而無需在不一樣電腦上配置ssh共密鑰。

git push https://<your_token>@github.com/xiong-it/xiong-it.github.io.git hexo:hexo複製代碼

travis就會讀取hexo博客源碼分支下的.travis.yml文件,自動幫咱們生成並部署網站了。

相關文章
相關標籤/搜索