はじめに
この記事は、@kjunichiの2015年パーソナルアドベントカレンダーの23日目の記事です。
v2(Etok)では無理ゲー
Dockerのコンテナベースになってしまったので、原理的に無理
以下のように、v1(Andorian)を選択する。
※Dockerを特権権限付きで起動しておけば、Dockerの中にDockerを動かせる。
わかったこと
- v1(Andorian)のwercker-labs/dockerのdockerは古すぎる
- dockerをアップデートする必要がある
- apt-getはboxのubuntuがサポート期限切れ
- dockerをバイナリでインストールする
- &をつけてdockerをdaemonモードで起動すると、werckerでビルドエラー
- /sbin/start-stop-daemonを使えば、dockerのdaemonをバックグラウンドで起動できる。
- dockerのdaemonのたちあがりが20分近くかかるので、sleepとechoで定期的に標準出力する
- docker buildの処理時間を稼ぐ為にwerckerのタイムアウトを30分に延長する no-response-timeout: 30
具体的には以下のようにwercker.ymlを記述した。
box: wercker-labs/docker no-response-timeout: 30 build: steps: - script: name: docker version code: | wget https://master.dockerproject.org/linux/amd64/docker chmod +x docker.1 ./docker.1 -v - script: name: docker build code: | sudo service docker stop sudo /sbin/start-stop-daemon -b -x /pipeline/build/docker.1 -S -- daemon sleep 300;echo ".";sleep 300;echo ".";sleep 300;echo "." sudo ./docker.1 build -t trusterd_ci_1 .