LoginSignup
6
3

More than 5 years have passed since last update.

Travis CI にまつわる Docker 関連のメモ

Last updated at Posted at 2017-05-05

Travis CI を触っている中で扱うことになる、 Docker に関わる設定についていくつかメモ的に書きます。

.travis.yml に sudo : false と設定すると docker container ベースで起動する

これは 2015 年くらいから各所でよく言われている travis tips だと思います。

以下の公式マニュアルにあるように、2015 年以降から .travis.yml に sudo : false と設定すると docker container の上で CI が動作するようになります。これにより、CI が動作するまでのオーバーヘッドが短縮され、かわりに CI 中に sudo コマンドが使用できなくなります。

現在は、sudo オプションを明示的に指定しない場合は、デフォルトでは sudo : false 扱いになるようです。

sudo: false default for repositories enabled in 2015 or later

結構多くの現場で、過去の設定例などを参考にしてか sudo : required と指定しているケースをよく見かけますが、 sudo コマンドを発行する必要がなければ未指定にするか、 sudo : false と指定する方が無難です。
個人的なヒューリスティックな感想だと、CI の開始までの時間が、少なく見積もっても数分は短縮されるように思えます。

なお、正直 sudo : false 指定で docker container 起動となる、というのはかなり直感的ではないと個人的には感じますが、、 travis の設定にはこういう個所が複数あるように見え、個人的には諦観を以って接しています。

CI 中に docker サービスを起動する

以下の公式ドキュメント中にある docker についての解説に従い、 servicesdocker を指定すると、docker サービスが CI 上で起動されます。

sudo: required
services:
  - docker

services で指定すると、travis 内部では sudo service docker start が呼び出されるためか、sudo : false と指定していても自動的に sudo : required 扱いになります。
ですのでこの方法だと CI 開始までのオーバーヘッドが少しかかってしまうことに留意してください。

Travis CI automatically routes builds to run on Trusty sudo: required when services: docker is configured.

なお、2017年5月5日現在では、 標準の travis 環境 (trusty 14.04) にあらかじめ含まれている docker のバージョンは 1.12.3 のようです。

$ docker --version
Docker version 1.12.3, build 6b644ec

これを最新のものに更新したい場合は、 before_install などで明示的に apt-get を呼び出す必要があります。

before_install:
  - sudo apt-get update
  - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-engine

local の docker 環境を用いて travis ci の debug を行う

travis は標準で docker image を提供しているので、こちらを用いて travis の local debug を行う事ができます。

ただし、 .travis.yml をそのまま実行する、というようなオプションは提供されていないので、出来ることとしては docker image 上で .travis.yml に書いたようなコマンドが正しく動作するか、の確認までになります。(工夫次第でやりようはあるかもしれませんが)

$ docker run --name travis-debug -dit quay.io/travisci/travis-ruby /sbin/init
$ docker exec -it travis-debug bash -l
# su - travis

といったような形で local 環境の docker で travis のイメージを起動し、ログインすることが出来るようになります。

あとは、.travis.yml に記述した内容を、コマンドとして実行して正しく動くか試す、という感じです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3