12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

モバイルDevOpsAdvent Calendar 2015

Day 13

JenkinsでXcodeのバージョン切り替えを行う

Posted at

本記事は、モバイルDevOpsカレンダーの13日目です。

やりたいこと

  • Jenkinsでjobを実行する際に利用するXcodeのバージョン切り替えたい。

Xcodeのメジャーアップデートが近づくと自身の環境なども含め、βのXcodeをダウンロードして動作確認をすることが多々あるかと思います。

よくやる切り替え方

複数のXcodeをインストールした場合の、切り替え方としては以下があります。

    1. xcode-selectを使う
    1. DEVELOPER_DIR環境変数を使う

Jenkinsのような環境の場合、2)でおこなうのが一般的です。
ただし、1)にしろ、2)にしろXcodeのインストール先を指定する必要があります。

今回やったこと

インストール先を指定するのは面倒なので、インストールされているXcodeを動的にチェックし、DEVELOPER_DIR環境変数の値として指定できるようにする。

やりかた

プラグインのインストール

このプラグインを使うと、Groovyスクリプトの実行結果をパラメータとして使うことが出来ます。
他にもActive Choices Pluginなどがあります。

Jenkinsの設定

インストールした後の設定方法は以下のとおりです。

ビルドのパラメータ化から「Dynamic Choice Parameter」を選択。
選択したら、以下のとおりに値を設定します。

Name

  • DEVELOPER_DIR

ここで指定した値が環境変数になります。

Choices Script

スクリプトを記述します。
Xcodeは全てApplications配下にあるものとします。

サンプルコード
def targetPath = "/Applications/"

def xcodeList = []
"ls $targetPath".execute().text.eachLine({ list ->
 def result = list =~ /(Xcode.*)/         
 if (result) {
  xcodeList <<  "$targetPath" + result[0][1]
 }
})
xcodeList

Remote Script

  • チェック

これをチェックするとmasterではなくslave上で実行されます。
ただしslave環境が複数あった場合は、結果をまとめてくれるわけではないので注意が必要です。

Note: if the "Remote Script" check-box is checked, then the script will be executed on the slave where the build is started.
https://wiki.jenkins-ci.org/display/JENKINS/Dynamic+Parameter+Plug-in

上記、全ての設定が終わると以下の様な感じになります。

設定画面

Jenkinsの実行画面

設定が終わり、パラメータ付きビルドを選択すると以下のように表示されます。

実行画面

これでビルドをすれば、指定したXcodeで実行されます。

蛇足

このプラグインの他の利用方法とし、自動テストで実機の端末を指定したい場合にも利用することが出来ます。

例えば、Android端末であればadb devicesを利用しserialNumberを取得して、パラメータとして表示させることも出来ます。

ただ、このプラグインを単に使うだけでは、以下の様な問題があります。

  • 指定した端末でテストが実行していてもパラメータとして指定出来てしまう。
  • 複数slaveが存在し、それぞれにAndroid端末が接続されている場合、全てのserialNumberが表示されるわけではない。
  • serialNumberだけではどの端末か分からない。

上記のような問題は運用でカバーになってしまいます。
※この問題に対する対応方法については、別途書きたいと思います。

最後に

本プラグインを今回の用途や蛇足の用途で利用する場合において問題点が何点かあります。
運用で多少カバーは出来ますが、あまりそこにコストをかけたくないです。

しかし、Jenkinsのプラグインは自身で開発することもできます。
従って、自身の環境に応じてプラグインを作るというのも1つの手だと思います。
※年末年始に作ってみようかなと思ってはいます(思ってはいる)。

参考

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?