このスクリプトはJenkins上で動作させることを想定していますが、実際の導入時には複数の要因を考慮し、適切な設定を行う必要があります。以下にその詳細を説明します。### 実行可能性の検討
- 自動化ワークフローの適合性:Jenkinsはビルド、テスト、デプロイなどのタスクを自動化するためのオープンソースサーバーです。このスクリプトではキーチェーンのロック解除、iOSデバイスのUDID取得、自動テストの実行が含まれており、これらをJenkinsジョブに組み込むことでiOSアプリの継続的インテグレーションが可能です。
- コマンドラインでの実行:Jenkinsはシェルスクリプトの実行をサポートしており、このスクリプトはすべてのコマンドがシェル形式で記述されているため、Jenkinsのビルドステップとして簡単に統合できます。
統合手順
1. 必須ツールのインストール
Jenkinsホストマシンに以下のツールをインストールする必要があります:
- Xcode:スクリプト内の
xcodebuildコマンドを使用するため、Xcodeおよび開発環境をJenkinsサーバーにセットアップする必要があります。 - libimobiledevice:
idevice_idコマンドを実行するために、libimobiledeviceパッケージをインストールする必要があります。macOSではHomebrewを使ってインストールできます:
bash ``` brew install libimobiledevice
#### 2. Jenkinsジョブの作成
- Jenkinsコンソールにログインし、「新しい項目」から「フリースタイル・プロジェクト」を作成します。
- 「ビルド」セクションで「シェルの実行」を選択します(macOSの場合)。
#### 3. スクリプトの設定
「シェルの実行」のテキストフィールドにスクリプトを貼り付けますが、以下の点に注意が必要です:
- **パスワードの安全性**:パスワードを直接スクリプト内にハードコードするのはセキュリティリスクがあります。Jenkinsの資格情報管理機能を利用してパスワードを保管し、環境変数から読み込むようにします。例:
bash ```
PASSWORD=$(get_jenkins_secret "credential_id")
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
ここでget_jenkins_secretはJenkinsの認証情報を取得するカスタム関数です。
- ファイルパスの確認:
WebDriverAgent.xcodeprojへのパスが正しいことと、Jenkinsユーザーがそのファイルにアクセスできることを確認してください。
以下はサンプルスクリプトです:
bash ```
パスワード取得
PASSWORD=$(get_jenkins_secret "credential_id")
キーチェーンのロック解除
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
デバイスのUDIDを取得
UDID=$(idevice_id -l | head -n1)
テスト実行
xcodebuild -project /path/to/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" USE_PORT=8100 test
#### 4. ビルドトリガーの設定
必要に応じて、Jenkinsジョブの実行タイミングを設定できます。例えば、定期実行やコード変更時に自動起動するなど。### 注意すべき問題と解決策
- **権限エラー**:Jenkinsユーザーがキーチェーンや特定のコマンドを実行する権限を持っていない場合があります。対象ユーザーを適切なグループに追加するか、ファイルの権限を変更することで対処できます。
- **デバイス接続状況**:JenkinsサーバーがiOSデバイスを正しく認識できるようにしてください。手動で`idevice_id -l`を実行して接続状況を確認できます。
- **Xcode設定の確認**:Xcodeのコマンドラインツールが正しく設定されていることを確認してください。以下のように設定できます:
bash ```
xcode-select --switch /Applications/Xcode.app/Contents/Developer
以上の手順により、iOSの自動テストをJenkins上で継続的に実行することが可能になります。