LoginSignup
2
4

More than 5 years have passed since last update.

JenkinsでSwiftのビルドを実施する

Last updated at Posted at 2017-06-12

CIを使ってテストを自動化しようとしたところ有償プランでないとSwiftの利用が出来なかったため
MacOS上でJenkinsを動かしてSwiftをビルド出来る環境を構築しました。
構築時にハマり所がいくつかあったので、それ含めて構築手順を共有します。

環境

  • MacOS 10.11.6
  • Xcode 7.2.1
  • Jenkins 2.46.2

備考

  • CocoaPodを使ってライブラリを読み込んでいる
  • BridgeHeaderを使ってObjective-Cライブラリを読み込んでいる

Jenkinsのインストール

  1. Jenkins公式サイトからmacOS用のインストーラーをダウンロード。
    https://jenkins.io/content/thank-you-downloading-os-x-installer#stable

  2. Jenkinsをインストール
    ウィザードに従ってJenkinsをインストールする
    デフォルトのままであれば/Users/Shared/Jenkinsにインストールされます。

  3. プラグインのインストール
    Jenkinsのインストール時に必要なプラグインを聞かれるのでGitとXcodeのインストールを行います。

    プラグイン バージョン
    git 3.3.0
    git-client 2.4.5
    git-parameter 0.8.0
    xcode-plugin 1.4.11

ポート開放

  1. ルーターの設定

    GitプラグインはUDPの33,848ポートを使用してモジュールを取得するようです。
    ポートが開放されていないとエラーとなるのでルーターの設定を変更します。

    AirMacベースステーションの場合
    AirMacユーティリティを起動しネットワーク > ポート設定からUDPの33,848番ポートを開放する。

Gitプラグインのセットアップ

  1. 「Jenkinsの管理 > Git Plugin」を設定

    Gitで利用している設定を記載する

    項目
    user.name gitアカウントのユーザ名
    user.email gitアカウントのe-mail
  2. JOBの「設定 > ソースコード管理」を設定する

    項目
    リポジトリURL GithubのリポジトリURL
    認証情報 プライベートリポジトリにアクセスするための秘密鍵を設定
    ブランチ指定子 ビルド対象とするブランチ名

秘密鍵を使ってアクセスする場合は/Users/Shared/Jenkins/.sshに秘密鍵を置かないと
Jenkinsから鍵を参照することが出来ません。

Xcodeプラグインのセットアップ

  1. JOBの「ビルド > Xcode > Advanced Xcode build options」を設定する

    項目
    Xcode Schema File Sample
    Xcode Workspace File ${WORKSPACE}/Sample
    Xcode Project Directory ${WORKSPACE}
    Xcode Project File Sample.xcodeproj

    * デフォルトでは、${WORKSPACE}=/Users/Shared/Jenkins/Home/【JOB名】
    * ワークスペースファイルがSample.xcworkspaceの場合。拡張子は不要なので記載しないこと。

Xcodeの設定

  1. Gitからモジュールを取得する
    Jenkinsからコマンドを実行するとJenkinsユーザで実行されるので、パーミッションエラーとなる場合は設定を確認する。
    デフォルトの設定ではUser/Shared/Jenkins/Home/【JOB名】にレポジトリ内のファイルが展開される。

  2. プロジェクトやライブラリの共有設定をONにする
    User/Shared/Jenkins/Home/【JOB名】以下のプロジェクトファイルをXcodeで開き、Manage Shemesを選択する。
    表示されたウィンドウでプロジェクト利用しているライブラリのSharedチェックボックスにチェックを入れる

Xcodeから共有設定をONにしようとすると、Xcodeは開発者ユーザで起動していて、プロジェクトファイルの権限はJenkinsユーザなので書き込みが出来ません。そのため、chowndで一時的にプロジェクトファイルの権限を開発者ユーザに変更して実施しています。

ビルドを実行

Jenkinsからビルドを実行してエラーが出ないことを確認する

エラーとなる場合

Schemesの指定でエラーとなる

xcodebuildのlistオプションから正しいスキーマ名探し、Xcodeプラグインに設定する

    js-5k:iOS koheikadonosaka$ /usr/bin/xcodebuild -list
    2017-05-31 11:39:52.413 xcodebuild[38642:8676433] Failed to locate a valid instance of CoreSimulatorService in the bootstrap.  Adding it now.
    Information about project "Sample":
        Targets:
            Sample
            SampleTests
            SampleUITests

        Build Configurations:
            Debug
            Release

        If no build configuration is specified and -scheme is not passed then "Release" is used.

        Schemes:
            Sample

コード署名が見つからない

ビルド実行時にCode Sign error: No matching codesigning identity found: No codesigning identitiesが発生する。
キーチェーンアクセスの「ログイン」から「システム」に該当するIDを持つコード署名をコピーする。

  • iPhone Developer用のコード署名
  • iPhone Distribution用のコード署名

Swiftビルド時にBridgeHeaderを使って読み込んでいるライブラリのxxxが参照出来ない

Xcodeプラグインの設定をチェックする。

  • Xcode PluginのTargetを設定しない(空白であること)。
  • Xcode PluginのWorkspaceを指定する。拡張子の.xcworkspaceは省く。
  • Xcode PluginのShemeを指定する。

参考

http://code-dojo.blogspot.jp/2012/09/fix-ios-code-signing-issue-when-using.html
http://qiita.com/mokemokechicken/items/5ea39c87512a515071f5

2
4
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
2
4