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呢?在下一篇博客中我将详细道来,敬请期待!

相关文章
相关标签/搜索