Posted at

Travis CIのビルド環境はコンテナベースと仮想マシンベースのものがあったが、現在は仮想マシンベースに統一された -`sudo: false` はもういらないよ-

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.ymlsudo: false と記述してコンテナベースでの実行を設定していた方も多いと思う。(travis.ymlsudo: false と記述することでコンテナベースでの実行が可能だった)

参考

Travis CIでコンテナベースのインフラストラクチャとDockerでより高速なビルドを | POSTD

TravisCIでコンテナベースの環境を利用するまでにやったsudo廃止作業 - Qiita


Travis CIのLinuxインフラストラクチャの変更

これまで存在したコンテナベースのものと仮想マシンベースのビルド環境を仮想マシンベースのビルド環境に統一する。

公式にも、Container-based environmentDeprecated 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: falsesudo 使えなくしなければならなかったのかなと思う(これはあくまでも予想だけど)



参考

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

https://github.com/ory/dockertest