僕のMacには4つのXcodeが入っています。
最新のXcodeでビルドするとエラーになる、古いプロジェクト等、いろいろありますので、
Xcodeは常に最新にするものが1つと、その他の古いバージョンをインストールしています。
Jenkinsでの自動ビルドへ移してから、
プロジェクトごとにバージョンの指定をすれば、Jenkinsでも古いXcodeが使えるようです。
と、いう訳で早速やってみます。
Xcodeのインストール
まずは、ビルドサーバ、もしくはローカルにXcodeの古いバージョンをインストールします。Downloads for Apple Developers
こちらから、古いバージョンのdmgファイルをダウンロードして、マウントします。
中に入っているXcode.appを/Applicationsへ移動。
適当に名前を既存のXcodeと被らないように変更します。
Jenkinsの設定
Jenkinsでビルドする前に、xcode-selectコマンドで、利用するXcodeを選択出来ます。まずはターミナルで試し打ち、
$ xcode-select -version xcode-select version 2311. xcodebuild -version Xcode 4.6.1 Build version 4H512 $ sudo xcode-select --switch /Applications/Xcode4.5.2.app/Contents/Developer/ $ xcodebuild -version Xcode 4.5.2 Build version 4G2008a
さて、ここでxcode-selectの--switchオプションを使うには、sudo権限が必要になります。
これは、Jenkins上で実行しても同じなので、Jenkinsユーザにxcode-selectを実行するときに限りsudo権限をつけるようにします。
sudo権限の追加
ここで、/etc/sudoersを編集して、jenkinsにxcode-selectのみパスワード無しsudo実行出来るように設定する。まずは、root権限になり、/etc/sudoersを編集する。間違ってもsudo chmodなどしてはいけない。
$ sudo su - # visudo
これで、/etc/sudoersが編集出来るようになる。
ここに、権限を追加する。
# User privilege specification root ALL=(ALL) ALL %admin ALL=(ALL) ALL jenkins ALL=NOPASSWORD /usr/bin/xcode-select
これでjenkinsというユーザからxcode-selectのみパスワード無しで実行可能になった。
Jenkinsへの設定
基本は常に最新のXcodeでビルドしつつも、特定のプロジェクトだけ古いバージョンを使うように設定する。ビルドの1番目にシェルの実行を追加し、
# Xcodeのバージョンを4.5.2へ変更 sudo xcode-select --switch "/Applications/Xcode4.5.2.app/Contents/Developer/"を追加、これで4.5.2へ変更出来る。
さらに、ビルドの最後にもシェルを追加し、元に戻すコードを追加。
(これはビルド失敗した時に微妙なので、出来れば他の方法がいいが、現状は面倒臭い・・・)
まずは、これで、特定プロジェクトのみ古いXcodeを使えるようになったのでよしとする!
0 件のコメント:
コメントを投稿