OSXローカルで動かしつつ動作をみてたけど、やっぱり公開出来るフローとかにも興味がわいたわけです。
というわけで、以下を目標に設定しました。
- Bitbucketのプライベートリポジトリで、hugoの設定とかもろもろ管理
- 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 つけるそうです
- SAKURA_VPS_KEY という名前でSSHペア鍵を作成しています
- さくら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
インストールを追記しました。