GitHubに置いてあるコードを Travis CI を使ってテストを行っていますが、 Travis CIでは通常Linux環境ですが、 OS X環境も使うことが出来ます。
Travis CIのOS X環境
Travis CIの設定ファイルで
os:
- linux
- osx
の様に、os
という値にlinux
またはosx
という値を与えることが出来ます。
これによって
$TRAVIS_OS_NAME
という値にこの値が入り使うOSが決まります。
Testing Your Project on Multiple Operating Systems - Travis CI
何も指定しなければlinux
ですが、上の様に書けば両方の環境で
1回ずつテストすることになります。
また、
language: objective-c
と、language
にobjective-c
を指定した場合にもosx
になります。
もしos
にlinux
を設定してlanguage
にobjective-c
を指定した場合には
$TRAVIS_OS_NAME
の値はlinux
になりますが環境自体はOS Xになります。
以前、これを使おうとした時、os
の設定が反映されず、
osx
を使うときにはlanguage
で指定するしかありませんでした。
ですが、どうやら最近はos
の値でも使える様になったみたいです。
上のTravis CIのドキュメントでも、os
の説明のページは
The feature described in this document is considered beta. Some features may not work as described.
となってるのでまだそのうち使えなくなるかもしれません。
で、このOS Xの環境ですが、 ちょっと古くてOS X 10.9.5 (Mavericks)です。
実際見てみると
$ uname -a
Darwin Traviss-Mac-431.local 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64
$ if [ "$TRAVIS_OS_NAME" == "osx" ]; then sw_vers; fi
ProductName:Mac OS X
ProductVersion:10.9.5
BuildVersion:13F34
こんな感じになってます。
追記: 2016/02/15
ちなみにMacのバージョンはsw_vers
というコマンド等を使って取ってこれます。
Linuxの場合にはTravis CIではログの最初の方の
Build system information
の所詳しく情報が載るんですが、
OS Xだとバージョンすら情報が無いので調べるに直接コマンドで見るしかなかったもので。
追記ここまで
ちょっと古いので注意が必要です。 下の記事でも古いのが原因かTravis CIの特殊な環境があるのか定かではありませんが、 手元のEl Capitanの環境にはあるライブラリが見つからなかったりしました。
追記: 2016/09/29
デフォルトではOS X 10.9になりますが、 それを変更する方法があります。
現時点で10.11 (El Capitan)まで使うことが出来ます。
追記ここまで
Travis CIのLinux環境
Linuxの方もデフォルトで見てみると
$ uname -a
Linux testing-gce-82889a3e-b1b0-436e-a14e-0347ac821f2b 3.13.0-63-generic #104~precise1-Ubuntu SMP Tue Aug 18 17:03:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ if [ "$TRAVIS_OS_NAME" == "linux" ]; then cat /etc/issue; fi
Ubuntu 12.04.5 LTS \n \l
こんな感じになっています。
デフォルトのOS環境は現在は Ubuntu 12.04.5になってます。
language
をovjective-c
とタイポしたところ14.04.3が使われた。
試しにaaa
とかしてみると
こちらもやはり14.04.3。
通常、この14.04.3(Trusty Tahr)を使いたい場合には
dist: trusty
を指定しておきます。
なのですが、何故か間違ったlanguage
指定をした場合にも
trusty化してしまうようです。(バグ?)