jenkinsなどのビルド用サーバーを用意して、xcodeによるビルドを行う場合、時には利用をするxcodeのバージョンを明示的に指定する必要があります。
jenkinsの場合,xcode-pluginとかを利用することでなんとかできる気もしますが、xcode-pluginは設定項目の数が多くむしろ煩雑になる感じがしているので、シェルスクリプトで最低限管理をしています。
その状況下で、xcodeのバージョンを指定する方法ですが、xcode-select
コマンドを利用することも考えられますが実はデメリットや留意事項として
- xcode-select でxcodeのバージョンを切り替えるにはsudoが必要
- システム全体に影響を及ぼすので、複数のジョブを走らせている場合、他のジョブに影響が出る可能性がある。
というわけでどうすればいいのかを調べていたら、xcode-select(1)にDEVELOPER_DIR
環境変数を指定しろって書いてありました。
という訳で、次のディレクトリ構造を作りました。
├── MyApplicationProject
│ ├── src
│ ├── MyApplicationProject.xcodeproj
│ ├── MyApplicationProject.xcworkspace
│ ├── tests
│ ├── Library
│ ├── Podfile
│ ├── Podfile.lock
│ └── Pods
├── README.md
└── XCVERSION
XCVERSION
には利用をするxcodeのバージョンを記入しておきます。そして、ビルドのスクリプトで
export DEVELOPER_DIR=/Applications/Xcode$(cat ${WORKSPACE}/XCVERSION).app/Contents/Developer
としてあげることで、ビルド時に利用をするxcodeのバージョンを切り替えることができました。
まとめ
xcodeのバージョンを切り替えるときは、環境変数DEVELOPER_ENV
の変更を検討する。