使用 Wercker 自动化部署静态博客

人想偷懒的方法就是采用自动化,对于 Hugo 还有 Octopress、Jekyll 等静态网页生成工具来说,用来做博客的一般步骤就是:

  1. 本地写新日志
  2. 本地运行静态网页生成工具来生成静态网站
  3. 将静态网站提交到网站托管服务器或 GitHub 上

然而每写一篇日志都要重复这些步骤全是让人很心烦,正好在 Hugo 的官方教程中翻到了「Automated deployments with Wercker」,随即眼睛一亮,开始了我的折腾之旅。

什么是 Wercker

这个 Wercker 是什么呢?其实我也不清楚,研究半天也只看出些许名堂,其简单来说就是定义一系列流程在你每次提交代码到 GitHub 时运行,其分为构建(Build)与部署(Deploy)两个部分,每个部分都有很多别人贡献的子动作(Step)可以直接拿来使用。其实若不是 Hugo 官方给出的教程不适合我,我基本都不用了解到这一步。

准备工作

首先你得现在你本地搭好环境,确定已经完成以下内容:

  1. 安好了 Hugo,并已经新建好了站点。
  2. 设置好了版本管理,这里我们用的是 git,并将代码上传到 GitHub。
  3. 准备好网站的容器,这里我们用的是免费的 GitHub Pages 服务,并准备好一个 Access Token。

连环境都没有的就别在这里扯淡了,赶快先去老老实实地搭环境

配置 Wercker

这里我就根据我自己的配置经历来介绍采用 GitHub Pages 的方案。

注册什么的废话不多说,注册完之后,根据提示绑定 GitHub 账号,然后新建应用,使用你之前准备好的 GitHub 项目,然后一通 blablabla,建立完成。

正题终于开始了,这个时候回到本机项目目录,并建立一个名叫 wercker.yml 的文件,并写入以下内容。

box: debian
build:
  steps:
    - arjen/hugo-build:
        version: "0.15"
deploy:
  steps:
    - install-packages:
        packages: git ssh-client
    - leipert/git-push:
         gh_oauth: $GH_TOKEN
         gh_pages: true
         basedir: public

可能有人看了官方的教程发现和我这个有略微差别,因为官方提供的那个代码中用的 lukevivier/gh-pages@0.2.1 在部署上有些问题,对于 username.github.io 的项目来说,应当采用 master 分支来存放生成的静态页面,而那个 step 则仍会保存到 gh-pages 分支;我后来改用的 leipert/git-push 则是别人在 lukevivier 的老版本上演绎的一个全新的工具其具体的功能不在这里详述。

修改完成后,先不要着急提交,回到 wercker 我们的应用来设置我们的部署,建立一个「自定义部署」。

接下来该干什么就自己猜吧。

Eric

兴趣驱动型代码狗

Beijing, China