Travis CIとDocker関係で調べることがあり以下の2つのポストを読んだ。
The Travis CI Blog: Combining The Linux Infrastructures
The Travis CI Blog: Upcoming Required Linux Infrastructure Migration
2018年12月7日から、Linuxビルド環境を使用する全プロジェクトが、仮想マシンでビルドを実行する同一Linuxインフラストラクチャーを使用するように完全にマイグレーションされたらしい。(以下の英語の引用から意訳)
07 December, 2018 - All projects that use a Linux build environment will be fully migrated to using the same Linux infrastructure, which runs builds in virtual-machines.
引用元
The Travis CI Blog: Upcoming Required Linux Infrastructure Migration
ちなみに筆者は年明けからTravis CIを使い始めた。それまではCircle CIを使用していたので、どうやら仮想マシンでのビルドしか体験していないようだ。
これまでのTravis CIのビルド環境
これまでTravis CIのビルド環境は、コンテナベースのものと仮想マシンベースのものが存在した。
コンテナベースの方がビルド時間を短縮できるということで、 travis.yml
に sudo: false
と記述してコンテナベースでの実行を設定していた方も多いと思う。(travis.yml
に sudo: false
と記述することでコンテナベースでの実行が可能だった)
参考
Travis CIでコンテナベースのインフラストラクチャとDockerでより高速なビルドを | POSTD
TravisCIでコンテナベースの環境を利用するまでにやったsudo廃止作業 - Qiita
Travis CIのLinuxインフラストラクチャの変更
これまで存在したコンテナベースのものと仮想マシンベースのビルド環境を仮想マシンベースのビルド環境に統一する。
公式にも、Container-based environment
が Deprecated Virtualization Environments
として記載されている。
Deprecated Virtualization Environments #
Historically, Travis CI has provided the following virtualization environments.Trusty Container-based environment: was available between July, 2017 and December, 2018.
Precise Container-based environment: was available between December, 2014 and September, 2017.
Legacy Linux environment: was available until December, 2015.
引用元
Build Environment Overview - Travis CI
変更に伴い生じる嬉しいこと
公式のポストを簡単にまとめると変更に伴い以下のような嬉しいことがあるそうだ。
- ビルド環境が統一化されるので、コンテナベースと仮想マシンベースで設定を分けなくて良くなり、設定におけるユーザーエクスペリエンスが向上する
- セキュリティの問題からコンテナー内で大幅に特権が削除されていたが、それが修正される
- 以前はセキュリティの問題でコンテナの場合は
sudo: false
でsudo
使えなくしなければならなかったのかなと思う(これはあくまでも予想だけど)
- 以前はセキュリティの問題でコンテナの場合は
参考
The Travis CI Blog: Combining The Linux Infrastructures
sudo: false
は消した方が良さそう
公式のポストでも以下のような記述があるので sudo: false
は消した方が良さそう
If you currently specify sudo: false in your .travis.yml, we recommend removing that configuration soon.
引用元
The Travis CI Blog: Upcoming Required Linux Infrastructure Migration
実際にこの変更を感じた出来事
以前は、 sudo: false
がデフォルトになってしまうようだったので、https://github.com/ory/dockertest をTravisCIで使用するには、以下のような設定を
travis.yml
に追記する必要があったようだ。(以前のREADMEに記載されていた。)
sudo: required
services:
- docker
しかし、仮想マシンベースに統一された現在は上記のような変更を行わなくてもよくなったようだ。
実際に上記の記述を外しても、ちゃんとCIは通る。
Travis上で https://github.com/ory/dockertest を使っている人が余計な設定をしてしまうのはよくないなと思ったので、READMEからtravis.ymlの設定を削除するPRを送ってみたらmergeしてもらえた!
参考にさせていただいたサイト
The Travis CI Blog: Combining The Linux Infrastructures
The Travis CI Blog: Upcoming Required Linux Infrastructure Migration
Travis CIでコンテナベースのインフラストラクチャとDockerでより高速なビルドを | POSTD
TravisCIでコンテナベースの環境を利用するまでにやったsudo廃止作業 - Qiita