使用Travis CI自動部署Hexo到GitHub


原文鏈接(轉載請注明出處):使用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 按鈕
mark
點擊后就會來到下面的界面,先給 Token 起一個名字,然后為它設置一些權限,其中紅框內的權限是必須的,其他可以隨意添加。
mark
點擊下面的 create token 按鈕,就會生成一個已經賦予好權限的 token 值,接下來我們Travis CI 網站的配置中。
mark

配置 Travis CI

如果之前從未使用 Travis CI 來構建項目,則我們先需要使用GitHub賬號來登錄網站,登錄進來后,會進到如下圖界面,如果底下 沒有把 GitHub 倉庫中的項目加載進來,可以手動點擊右上角的 Sync account 按鈕,待到同步完成后將要自動構建的項目開啟。
mark
開啟后點擊設置圖標就可以進行一系列的設置,如下圖所示,先開啟 General 里的兩項選項:

  • 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 --{倉庫地址}

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

構建並自動部署結果

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

總結

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM