CODE HOUSE


Hello, I'm a freelance software engineer.


[Hugo] werckerを使って記事の公開を自動化する2[高速化]

Hugo記事公開を高速化する

前回の記事では、標準でよういされているdockerのboxイメージを利用して、werckerを使って記事を公開していた。しかし、記事の公開までに5〜7分ぐらいの時間がかかっていた。これは非常にもどかしい。 今回の記事では、独自のdockerイメージを使うことで高速化を行ってみる。

前回のwercker.yml

wercker.yml

wercker.yml
 1box: python:2.7-slim
 2build:
 3  steps:
 4    - install-packages:
 5        packages: git
 6    - pip-install:
 7        requirements_file: ""
 8        packages_list: "pygments-style-solarized"
 9    - script:
10        name: initialize git submodules
11        code: git submodule update --init
12    - arjen/hugo-build:
13        theme: hugo-uno
14        flags: --buildDrafts=false -v
15deploy:
16  steps:
17    - install-packages:
18        packages: git ssh-client
19    - leipert/git-push:
20        gh_oauth: $GIT_TOKEN
21        repo: mm-git/mm-git.github.io
22        branch: master
23        basedir: public

なぜ遅いか?

  • Hugoの記事をビルドするたびに、gitsshpygments-style-solarizedをインストールしているため。
    • それでも上記は、apt-get updateが無いだけだいぶマシである。
    • Python 2.7までインストールしていたら、もっとかかっていただろう。

高速化

独自のdocker boxを作成する。

gitsshpygments-style-solarizedがインストール済みのdocker boxを作成してみる。werckerで利用するには、docker boxがdocker hubに登録されている必要がある。docker boxの作り方は下記の記事を参照。

docker hubにboxを登録する

独自docker boxを使ったwercker.yml

wercker.yml
 1box: mmgit/hugo-box
 2build:
 3  steps:
 4    - script:
 5        name: initialize git submodules
 6        code: git submodule update --init
 7    - arjen/hugo-build:
 8        theme: hugo-uno
 9        flags: --buildDrafts=false -v
10deploy:
11  steps:
12    - leipert/git-push:
13        gh_oauth: $GIT_TOKEN
14        repo: mm-git/mm-git.github.io
15        branch: master
16        basedir: public
  • 必要なものがインストールされたboxを使うことで、体感的には1〜2分で記事が配信されるようになった。
  • wercker.ymlもhugoのビルドとデプロイのみの記述になり、非常にスッキリした。