読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

WerckerでDockerfileのビルドチェックで消耗したくない君に

はじめに

この記事は、@kjunichiの2015年パーソナルアドベントカレンダーの23日目の記事です。

v2(Etok)では無理ゲー

Dockerのコンテナベースになってしまったので、原理的に無理

以下のように、v1(Andorian)を選択する。

  • f:id:kjw_junichi:20151223093227p:plain
  • f:id:kjw_junichi:20151223093223p:plain

※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 .

関連記事