2015年04月26日

[jenkins] iOSアプリを自動でビルドしてipaを作成する

■やりたいこと
Gitのリポジトリをポーリングして、リポジトリが変更されたら自動的にipaを作りたい

■前提条件
・jenkins?なにそれ?美味しいの?ビルド勝手にやっくるやつでしょ?程度の知識しか持ってない人が構築
・jenkinsの環境自体はMACに構築されている
・ただ、MACほとんど触れたことない人が構築
・Androidアプリ開発者が構築
・XCode?Archiveしかしたことありませんけど?って人が構築
・XcodeプロジェクトでArchiveは通るようになっている


そんな感じで試行錯誤して構築するw

■プラグイン
https://wiki.jenkins-ci.org/display/JENKINS/Git+Client+Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

たぶん、これくらい。XCodeっぽいの入れる。

■システム設定
・Git
 とりあえず、インストール

・Xcode Builder
 xcodebuild executable path
  /usr/bin/xcodebuild
 agvtool executable path
  /usr/bin/agvtool
 xcrun executable path
  /usr/bin/xcrun
 Keychains - Keychain path
  ${HOME}/Library/Keychains/login.keychain

■ジョブの設定
・新規ジョブ作成
 フリースタイル・プロジェクトのビルドで作成

・ソースコード管理
 Gitにする
 Repoditory URLにGitのURL入れる
 Branches to buildにcheckoutしたいブランチ名を入れる

・ビルドトリガ
 SCMをポーリングにチェック
 スケジュールに「H/15 * * * *」と入力(15分おきに差分チェックされる)

・ビルド
 以下の順番で設定。
  ・シェルの実行
   シェルスプリクト
    export LANG=ja_JP.UTF-8
    pod repo update
    pod install

  ・Xcode
   ・General build settings
    Target
     ターゲット名を入力
    Clean before build?
     Yesにチェック
    Configuration
     release
   ・Pack application and build .ipa?
    .ipa filename pattern
     hogeProject_v${VERSION}.${BUILD_DATE}-${BUILD_NUMBER}(よしなに設定)
    Output directory
     ${WORKSPACE}/build
   ・Advanced Xcode build options
    Clean test reports?
     Yesにチェック
    Xcode Schema File
     スキーマ名を入力
    Xcode Workspace File
     ワークスペースファイルを入力(ワークスペースファイル名のみで拡張子無し)
    Build output directory
     ${WORKSPACE}/build

・ビルド後の処理
 成果物を保存
  build/*.ipa

これでipaが自動で吐き出されるようになってるはず。はず。。。

■ハマった点
・The file “Pods.debug.xcconfig” couldn’t be opened because there is no such file.
 podがインストールされてなかった。
 シェルスプリクトに書いてあるやつを記載して解決。

・ The platform of the target `Pods` (iOS 6.0) is not compatible with `hogehoge` which has a minimum requirement of iOS 6.1.
 サードパーティがiOS6.0に対応してないよってエラー。
 Podfile.lockがgitのリポジトリにコミットされてなかったのが原因。
 Podfile.lockをコミットしてもらって解決。

・xcodebuild: error: 'hogehoge.xcworkspace.xcworkspace' does not exist.
 ワークスペースに「hogehoge.xcworkspace」って記載していたのが原因。
 拡張子を外して解決。

・clang: error: linker command failed with exit code 1 (use -v to see invocation)
 OutPut derectoryが適切じゃなかったのが原因。
 「${WORKSPACE}/build」にすると解決。
 元々はbuildってだけにしてた。どこにファイル吐出されてたんだろうね・・・。

・cocoaPodsのバージョン差異でエラー
 Pods/Pods.xcodeproj/project.pbxprojの中身が変わってた。
 正しいものをコミットしてもらって解決。

・xcodebuild: error: The workspace 'hogehoge' does not contain a scheme named 'hogehoge Enterprise'.
 そんなスキーマ名なんてねぇよ、ばぁかってことですね。
 XcodeのProduct→Scheme→Manage schemesで使用するスキーマのSharedにチェックして、出来たファイルをコミットしてもらって解決。

うん。Xcodeとかほとんど触れたことがない人間がやることじゃない気もしたよ。
構築にあたって、有識者の方にだいぶ助けてもらいました。
posted by すとれん at 21:00 | Comment(0) | jenkins | このブログの読者になる | 更新情報をチェックする