人生シーケンスブレイク

シーケンスブレイク(Sequence breaking、シークエンスブレイクとも)とは、テレビゲームにおいて開発が想定している攻略ルートを逸脱し、ショートカットする行為のことである。

Xcodeを複数バージョン使い分けたいし、xcodebuildも バージョンを使い分けたい。

動機

複数プロジェクトのCIの為に、Xcodeを複数バージョン使い分けたいし、ビルドコマンドも使い分けたかった。

解決策

複数バージョンのXcode管理

検索した限りでは、手動でDL, リネームしてインストールなどの方法があったが、↓のものが一番良かった。

github.com

rbenvやnvmのようなもので、XcodeCLI上で複数バージョンインストール、切り替えしてくれる。
インストールには Apple Developer Program account が必要で、一度ブラウザでログインして規約等に同意しておく必要がある。

# インストール可能なバージョンリスト
$ xcversion list

# 任意のバージョンのインストール
$ xcversion install 9.2

# 任意のバージョンに切り替え
$ xcversion select 9.2

# 現在のバージョン
$ xcversion selected
Xcode 9.2
Build version 9C40b

環境変数 DEVELOPER_DIR で、xcodebuild コマンドの実行バージョン切り替え

# 9.2でxcodebuildのバージョンを確認
$ xcversion selected
Xcode 9.2
Mac version 9C40b

$ xcodebuild -version
Xcode 9.2
Build version 9C40b

# 9.4.1に切り替えてxcodebuildのバージョンを確認
$ xcversion select 9.4.1
Xcode 9.4.1
Build version 9F2000

$ xcodebuild -version
Xcode 9.4.1
Build version 9F2000

上記のように、 xcversion select でバージョンを切り替えると xcodebuild コマンドの実行バージョンも切り替わるのだが、時々パスワード入力を求められてしまうことがある。 これではCIで利用する際に使えないので、環境変数 DEVELOPER_DIR を使いバージョンを指定しつつ xcodebuild を実行する。

DEVELOPER_DIR には利用したいXcodeのバージョンのPATHを指定する。

$ xcodebuild -version
Xcode 9.4.1
Build version 9F2000

$ DEVELOPER_DIR=/Applications/Xcode-9.2.app/ xcodebuild -version
Xcode 9.2
Build version 9C40b

これでCIなどからも任意のバージョンのXcodeを呼び出せるようになった。