Hexo的版本控制與持續集成

想必不少人會把Hexo生成出來的靜態網站放到GitHub Pages來進行託管。通常發佈Hexo博客的流程是,首先在本地搭建Hexo的環境,編寫新文章,而後利用hexo deploy來發布到Git。那麼對於本地的Hexo的原始文件怎麼管理呢?若是換電腦了怎麼辦?若是沒有對原始文件進行備份,忽然有一天你的本地環境掛了致使源文件丟失,那不就呵呵了。也許你會想到用Dropbox或者其餘方案來對源文件進行備份,可是每次更新完博客,須要備份好源文件,而後執行hexo deploy進行發佈,是否是很麻煩?換了電腦以後又要從新搭建本地環境,是否是很蛋疼?git

那麼接下來咱們就來講說如何優雅愉快地對咱們的Hexo進行版本管理和發佈。github

既然咱們已經用了GitHub來託管咱們生成出來的靜態網站,那麼爲何不也把Hexo博客的源文件也host在GitHub上呢。那麼問題來了,若是咱們把Hexo博客的源文件託管在GitHub上,咱們的發佈流程就會變爲:hexo

  1. 執行git push把更新的源文件push到託管源文件的GitHub Repo (咱們稱之爲Source Repo)
  2. 執行hexo deploy來更新託管靜態網站的GitHub Pages (咱們稱之爲Content Repo)

這樣看來,每次更新博客要經歷兩個步驟,並非那麼straightforward。那麼有沒有辦法作到既能使用GitHub進行版本控制,又能作到一鍵發佈呢?app

答案是確定的。這裏用到了持續集成也就是咱們一直所說的CI來完成一鍵發佈:當有新的change push到Source Repo時,自動執行CI腳本,生成最新的靜態網站發佈到Content Repo,一鼓作氣。那麼我使用什麼CI工具來作呢?咱們可使用像Travis CI這樣的Hosted CI Service,也可使用Jenkins或者TeamCity來搭建CI server。若是本身來搭建CI Server,費時費力,又要花錢來買Server來host CI service,確定不是一個很好的選擇。那麼咱們選哪一個Hosted CI Service呢?其實今年在公司的一個項目中咱們就選擇了AppVeyor。當初在作investigation的時候,第一個想到的就是用Travis CI,然而我司大多數的開發環境都是Windows,並且當時的項目有Python, PowerShell, Java等,那時PowerShell還只支持Windows,因此須要選擇一個支持Windows的CI Service。因而,Scott Hanselman安利的AppVeyor就成爲了一個備選。訪問AppVeyor官網,映入眼簾的大標題就是#1 Continuous Delivery service for Windows。剛開始的時候心裏一陣嘲笑,Top 10的CI Service就你支持Windows,你不是第一那誰是第一?結果在以後的項目使用中,發現AppVeyor比Travis CI好用太多。這裏就不具體展開了,繼續進入正題。工具

使用AppVeyor來創建CI很是方便,主要是如下步驟:網站

  1. 註冊並登錄AppVeyor加密

    訪問AppVeyor登錄頁面,使用你的GitHub帳號登錄便可。 登錄AppVeyor版本控制

  2. 添加Projectcode

    AppVeyor Projects頁面,添加相應的GitHub Source Repo。 添加Projectorm

  3. 添加appveyor.yml到Source Repo

    接下來,你須要把appveyor.yml添加到Source Repo的根目錄下。具體的appveyor.yml以下,也能夠參考我博客的appveyor.yml

    你惟一須要作的就是替換[Your GitHub Access Token],關於生成Access Token,能夠參考這篇文章。在GitHub生成好Access Token以後,你須要到AppVeyor加密頁面把Access Token加密以後再替換[Your GitHub Access Token] 加密Access Token

  4. 設置Appveyor

    添加好appveyor.yml以後,再到Appveyor portal設置如下四個變量。STATIC_SITE_REPO就是Content Repo的地址,TARGET_BRANCH就是你Content Repo的branch,通常默認就是master,GIT_USER_EMAIL和GIT_USER_NAME就是你GitHub帳號的信息。 設置

好了,一切大功告成!試一下git push你的change到Source Repo,幾分鐘內,你的博客就自動更新了!

背後的過程以下:

  1. Git push to Source Repo
  2. --> AppVeyor CI
  3. --> Update GitHub Pages Content Repo
  4. --> Generate your Hexo blog site

最後確定會有人問,爲何不用Jekyll或者WordPress啊?爲何選Hexo呢?在下一篇博客中我將詳細道來,敬請期待!

相關文章
相關標籤/搜索