原文鏈接(轉載請注明出處):使用Travis CI自動部署Hexo到GitHub
前言
使用 hexo + gitPages
搭建個人博客的人都知道,每當要發表一篇博文,第一步得手動使用 hexo g
命令生成靜態網頁,然后還得通過 hexo d
命令將靜態文件推送到GitHub遠程倉庫,不說麻煩不麻煩,更重要的是有時候環境換了,沒有搭建 hexo 環境,想發篇博客的時候就沒有可能了。而現在通過 Travis CI 就能自動構建自己的博客。我們只需將寫好的 Markdown
格式的博文push
到 hexo源文件 分支即可。
Travis CI 介紹
Travis CI 是目前新興的開源持續集成構建項目,它與 jenkins,GO的很明顯的特別在於采用 yaml 格式,簡潔清新獨樹一幟。目前大多數的 github 項目都已經移入到 Travis CI 的構建隊列中,據說 Travis CI 每天運行超過 4000 次完整構建。
hexo 介紹
Hexo 是一個快速、簡潔且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。
使用 Travis 自動構建
我的博客自動部署思路是,將 hexo
源碼 push
到博客 項目的另外一個分支,
既一個分支放源碼,一個分支放靜態文件,使用 Travis CI
自動部署 hexo 源碼的分支,構建完成后自動推送到 靜態文件的分支上,而這一切都在一個倉庫上進行操作。
注意:如果使用的是GitPage
的個人站點來搭建博客的 ,則博客靜態文件在 master
分支上;如果使用的是 gitPages
的項目站點來搭建博客,則博客的靜態文件在 gh-pages
分支上。
在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
按鈕
點擊后就會來到下面的界面,先給 Token 起一個名字,然后為它設置一些權限,其中紅框內的權限是必須的,其他可以隨意添加。
點擊下面的 create token
按鈕,就會生成一個已經賦予好權限的 token 值,接下來我們Travis CI 網站的配置中。
配置 Travis CI
如果之前從未使用 Travis CI 來構建項目,則我們先需要使用GitHub賬號來登錄網站,登錄進來后,會進到如下圖界面,如果底下 沒有把 GitHub 倉庫中的項目加載進來,可以手動點擊右上角的 Sync account
按鈕,待到同步完成后將要自動構建的項目開啟。
開啟后點擊設置圖標就可以進行一系列的設置,如下圖所示,先開啟 General
里的兩項選項:
Build only if .travis.yml is present
:只有在.travis.yml
文件中配置的分支改變了才構建Build branch updates
:當分支更新后開始構建
然后在 Environment Variables
一欄里將在 GitHub 下獲取的的 Access Token
值添加進來
添加配置文件到Hexo源碼分支下
上面提到的 .travis.yml
配置文件需要添加到hexo 源碼的根目錄下,因為Travis CI 在自動構建時需要獲取這些配置信息,以此來完成構建任務;這些配置信息主要包括源碼分支,靜態文件推送分支,倉庫地址等信息。
其中主要內容如下:
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 --{倉庫地址}
配置到這一步就已經把所有配置全部完成,下面就是驗證的過程
構建並自動部署結果
將某篇文章中的一個表格增加一行后將修改推送到hexo源碼所在的hexo
分支
,然后等Travis CI 構建並自動部署成功后。
點擊博文發現表格多了一行。
總結
這樣做雖然能很好的實現自動部署的功能,但是有個問題也要注意,就是博客源碼公開問題,如果對博客源碼不介意的可以直接使用公開倉庫,如果介意那就沒有辦法了,除非使用付費的私有倉庫,或者把項目放在Coding
上去,因為上有提供免費的私有倉庫。就我個人認為,既然是自己的博客,本來就是要給人看的,博客源碼也談不上存在什么隱私。