hugo+wercker+さくらVPSに配置する (2017.03.18 追記)
hugo wercker
Published: 2015-09-06

OSXローカルで動かしつつ動作をみてたけど、やっぱり公開出来るフローとかにも興味がわいたわけです。

というわけで、以下を目標に設定しました。

  1. Bitbucketのプライベートリポジトリで、hugoの設定とかもろもろ管理
  2. werckerを使って、さくらVPSにデプロイ デプロイといってもhugoが生成したpublicディレクトリ内をそのまま転送するだけ

環境

  • {USERNAME} は、ご自身のパスに合わせてください。
    もっと言えば、ghqではない場合はそもそものパスを合わせてください。
  • {YOURHOST.COM} も、同様にご自身の管理されているドメインに合わせてください。

hugoをBitbucketで管理

# どこでもいいけどhugoでサイト作成
# 自分はghq使ってるのでこのパスにしています
$ cd ~/src/bitbucket.org/{USERNAME}
$ hugo new site hugo

# 空っぽのディレクトリがないと案外怒られそうなので何か入れておく
# staticは存在してないとwerckerさんが怒ってました
$ touch data/.gitkeep
$ touch layouts/.gitkeep
$ touch static/.gitkeep

# テーマをダウンロード
## 今回は angels-ladder を使わせて頂いています
### ※SNSシェアボタンが自分には必要なかったので勝手に修正してます
$ mkdir themes
$ cd themes
$ git clone https://github.com/tanksuzuki/angels-ladder
$ cd angels-ladder
$ rm -rf .git

# publicフォルダはBitbucketで管理しないのでignoreに設定する
$ cd ~/src/bitbucket.org/{USERNAME}/hugo
$ echo "public/*" >> .gitignore

# hugoのConfigにテーマを固定にしておく
$ vi config.toml

config.toml

+ theme = "angels-ladder"
# 何か記事作ってみる
$ cd ~/src/bitbucket.org/{USERNAME}/hugo
$ hugo new post/test.md

# とりあえずまぁ動きを見てみる
$ hugo server -D

# とりあえずこんなもん…コミットする
$ git add -A
$ git commit -m 'First commit.'
$ git push origin master

werckerでデプロイする設定を書く

あれなのでもう自分の使ってるYAMLをほぼそのまま貼り付けます
そのままリポジトリのルートにwercker.ymlでファイルを保存しておけば、Werckerさんが勝手に読んでくれます。

  • Wercker側の設定
    • SAKURA_VPS_KEY という名前でSSHペア鍵を作成しています
      その鍵の秘密鍵へアクセスする場合、設定名の末尾に _PRIVATE つけるそうです
  • さくらVPS側の設定
    • werckerというユーザを作成してあります(sudo useradd wercker)
    • 公開鍵の設定も行っています(.ssh, .ssh/authorized_keys)
$ cd ~/src/bitbucket.org/{USERNAME}/hugo
$ vi wercker.yml

wercker.yml

box: debian
build:
  steps:
    - arjen/hugo-build:
        version: "0.14"
        theme: angels-ladder
        flags: --buildDrafts=false
deploy:
  steps:
    - install-packages:
        packages: ssh-client
    - add-to-known_hosts:
        hostname: {YOURHOST.COM}
    - mktemp:
        envvar: PRIVATEKEY_PATH
    - create-file:
        name: write key
        filename: $PRIVATEKEY_PATH
        content: $SAKURA_VPS_KEY_PRIVATE
        overwrite: true
    - script:
        name: show data
        code: ls -al public
    - script:
        name: transfer data
        code: scp -i $PRIVATEKEY_PATH -P 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=no -r ./public wercker@{YOURHOST.COM}:~/hugo

作ったらリポジトリにおいておく
{YOURHOST}は適宜ご自身のサイトのドメインに変更してください。
またSCPのポートもご自身のポートで適宜変更してください。

$ git add wercker.yml
$ git commit -m 'Added wercker.yml for auto deployment.'
$ git push origin master

あとはWerckerさんのBuildとDeploy画面を見て、エラーがあれば治す。かな

修正・変更

2017.03.18 変更・追記

  • box を wercker/default から debian に変更しました。
  • ssh-client インストールを追記しました。