このブログを Hugo + wercker + GitHub pages で管理するようにした のが結構昔だったので、box が未だにクラシックな wercker/default
だった。最新版に合わせとこっかなと軽い気持ちで application を登録しなおしたら盛大に嵌ったのでメモ。
嵌ったこと
大きくは 2 つ。
- git push をトリガーにした pipeline で branch の指定ができない?
- 前までは ignore branch 的な設定があった気がする
- トリガーより後ろの pipeline については branch の指定は可能
- theme として git submodule を使っている場合はきちんと初期化してあげないといけない?
- 前までは
wercker.yml
に初期化処理書いてなくても build できてたんだけどな。。。逆になんでだったんだろう
- 前までは
後者は git submodule update --init --recursive
とかを wercker.yml
に書いてあげればいいとして、前者はどうするのがベターなんだろうという感じ。前までは master branch に push したら gh-pages branch に public
以下だけを push(deploy)していて、ignore branch 的な設定で gh-pages branch への push には反応しないようにしていた。
ignore branch 的な設定ができないと、gh-pages branch への push(deploy)にも反応して、無駄に build が実行されてしまう。で、public
以下には wercker.yml
が存在しないので、その build がこけてしまうという。つらい。
解決策
無理やり感は否めないが、
- build の手前に適当な pipeline を入れる
- build 時に
public
以下にwercker.yml
をコピーする - トリガーより後ろの pipeline は master branch のときのみ実行する
ようにして、gh-pages branch に反応した場合は build の手前で workflow が終了するようにした。wercker 上では以下のような感じ。
そもそも workflow が走ってること自体がもやっとするのは変わらないけど、こけなくはなった。
最終的な wercker.yml
は以下。もっとスマートな解決策をご存知の方いらっしゃいましたら、ご教示ください 🙏
box: golang
pre:
steps:
- script:
name: output message
code: |
echo 'start to build & deploy'
build:
steps:
- script:
name: initialize git submodules
code: |
git submodule update --init --recursive
- arjen/hugo-build:
version: "0.18"
flags: -v --buildDrafts=true
- script:
name: copy wercker.yml
code: |
cp wercker.yml public
deploy:
steps:
- lukevivier/gh-pages:
token: $GIT_TOKEN
domain: m0t0k1ch1st0ry.com
basedir: public