使用Travis CI自動部署Hexo到GitHub

原文連接(轉載請註明出處):使用Travis CI自動部署Hexo到GitHub

前言

使用 hexo + gitPages 搭建我的博客的人都知道,每當要發表一篇博文,第一步得手動使用 hexo g 命令生成靜態網頁,而後還得經過 hexo d 命令將靜態文件推送到GitHub遠程倉庫,不說麻煩不麻煩,更重要的是有時候環境換了,沒有搭建 hexo 環境,想發篇博客的時候就沒有可能了。而如今經過 Travis CI 就能自動構建本身的博客。咱們只需將寫好的 Markdown 格式的博文push 到 hexo源文件 分支便可。node

Travis CI 介紹

Travis CI 是目前新興的開源持續集成構建項目,它與 jenkins,GO的很明顯的特別在於採用 yaml 格式,簡潔清新獨樹一幟。目前大多數的 github 項目都已經移入到 Travis CI 的構建隊列中,聽說 Travis CI 天天運行超過 4000 次完整構建。git

hexo 介紹

Hexo 是一個快速、簡潔且高效的博客框架。Hexo 使用 Markdown(或其餘渲染引擎)解析文章,在幾秒內,便可利用靚麗的主題生成靜態網頁。github

使用 Travis 自動構建

個人博客自動部署思路是,將 hexo 源碼 push 到博客 項目的另一個分支,
既一個分支放源碼,一個分支放靜態文件,使用 Travis CI 自動部署 hexo 源碼的分支,構建完成後自動推送到 靜態文件的分支上,而這一切都在一個倉庫上進行操做。

注意:若是使用的是GitPage的我的站點來搭建博客的 ,則博客靜態文件在 master分支上;若是使用的是 gitPages 的項目站點來搭建博客,則博客的靜態文件在 gh-pages 分支上。npm

在GitHub 上生成 Access Token

若是想要 讓travis CI 構建完成以後自動 push 到 master 分支,則travis須要有對這個倉庫進行操做的權限,此時咱們就須要爲Travis CI 配置Access Token(訪問令牌)。

在GitHub上生成Access Token 的步驟是,點擊頭像進入設置(Settings),r而後點擊左邊菜單欄最下面的Developer settings 選項,進入後點擊左邊的 Personal access tokens 選項,進入後點擊右上角的Generate new token 按鈕
mark
點擊後就會來到下面的界面,先給 Token 起一個名字,而後爲它設置一些權限,其中紅框內的權限是必須的,其餘能夠隨意添加。
mark
點擊下面的 create token 按鈕,就會生成一個已經賦予好權限的 token 值,接下來咱們Travis CI 網站的配置中。
markgulp

配置 Travis CI

若是以前從未使用 Travis CI 來構建項目,則咱們先須要使用GitHub帳號來登陸網站,登陸進來後,會進到以下圖界面,若是底下 沒有把 GitHub 倉庫中的項目加載進來,能夠手動點擊右上角的 Sync account 按鈕,待到同步完成後將要自動構建的項目開啓。
mark
開啓後點擊設置圖標就能夠進行一系列的設置,以下圖所示,先開啓 General 裏的兩項選項:hexo

  • Build only if .travis.yml is present:只有在.travis.yml文件中配置的分支改變了才構建
  • Build branch updates:當分支更新後開始構建

而後在 Environment Variables 一欄裏將在 GitHub 下獲取的的 Access Token 值添加進來
mark框架

添加配置文件到Hexo源碼分支下

上面提到的 .travis.yml 配置文件須要添加到hexo 源碼的根目錄下,由於Travis CI 在自動構建時須要獲取這些配置信息,以此來完成構建任務;這些配置信息主要包括源碼分支,靜態文件推送分支,倉庫地址等信息。
mark
其中主要內容以下:網站

language: node_js
node_js: stable

# S: Build Lifecycle
install:
  - npm install

#before_script:
 # - npm install -g gulp

script:
  - hexo g

after_script:
  - cd ./public
  - git init
  - git config user.name "dmego" --{GitHub帳戶名稱}
  - git config user.email "zengkai12138@outlook.com" --{Github帳戶郵箱}
  - git add .
  - git commit -m "Update docs"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
# E: Build LifeCycle

branches:
  only:
    - hexo --{Hexo源碼分支名稱}
env:
 global:
   - GH_REF: github.com/dmego/dmego.github.io.git --{倉庫地址}

配置到這一步就已經把全部配置所有完成,下面就是驗證的過程ui

構建並自動部署結果

將某篇文章中的一個表格增長一行後將修改推送到hexo源碼所在的hexo分支
,而後等Travis CI 構建並自動部署成功後。
mark
點擊博文發現表格多了一行。
markcode

總結

這樣作雖然能很好的實現自動部署的功能,可是有個問題也要注意,就是博客源碼公開問題,若是對博客源碼不介意的能夠直接使用公開倉庫,若是介意那就沒有辦法了,除非使用付費的私有倉庫,或者把項目放在Coding上去,由於上有提供免費的私有倉庫。就我我的認爲,既然是本身的博客,原本就是要給人看的,博客源碼也談不上存在什麼隱私。

相關文章
相關標籤/搜索