LoginSignup
22
12

More than 5 years have passed since last update.

sighで取得したProvisioning Profileをgymで使う

Posted at

環境

  • fastlane 1.17.1
  • Xcode 8.2.1
  • mac OS 10.12.3
  • 組織の署名ID管理の仕方の都合で match は使っていない

前提

署名などは変更せず、Provisioning Profileのみ、新しいものを自動的に取得して使いたいものとします。
また、Provisioning Profile更新前はすでにビルドが通っているものとします。

問題

sigh を使ったりしているとカジュアルに Provisioning Profile が更新されたりします。

いちいちXcodeの設定画面を開いてダウンロードしなくても済むのは助かるのですが、
Provisioning Profileの名前にタイムスタンプが入ってしまうので、CIで sigh を使うと予期しないタイミングでProvisioning Profileの名前が変更されてビルドがコケてしまいます。

// こんな名前のPPができあがる
net.kikuchy.hogeapp AdHock 14578645

sighで取得したProvisioning Profileを使う

レーンは以下のように作ってあります。

lane :beta do
    cert
    sigh(force: false, adhoc: true)
    gym(scheme: "HogeApp", export_method: "ad-hoc")
    deploygate(user: "kikuchy")
end

sigh をfastlaneのActionとして実行すると、有効なProvisioning Profileをダウンロード & インストールしてくれます。
そして gym を使うといい感じにビルドをしてくれます。
が、sigh が取得してきたProvisioning Profileを使ってくれるわけではありません。

sigh実行後にcontextに残るもの

fastlaneのActionの中には、 lane_context としていくつかの情報を以降のActionに渡してくれるものがあります。

sighもいくつかのcontextを残してくれるので、それを使うことにします。

今回使うのは以下の2つです。

変数名 内容
SIGH_PROFILE_PATH sighがダウンロードしたProvisioning Profileのファイルパス
SIGH_UUID, SIGH_UDID sighがダウンロードしたProvisioning ProfileのUUID

project.pbxの設定項目を引数から指定する

xcodebuild の説明 によると、引数から設定項目の上書きができるようです。

xcodebuild ...(中略)... [buildsetting=value] ...

gym は xcargs というオプションに xcodebuild で使う追加の引数を渡せる ようなので、 sigh がcontextに残した情報を使って必要な引数を組み立てます。

上書きする必要がある項目は以下のとおりです。

設定項目 内容
PROVISIONING_PROFILE 使用したいProvisioning ProfileのUUID
PROVISIONING_PROFILE_SPECIFIER 使用したいProvisioning Profileの名前

引数を作る

lane_context はFastfile内でも引ける ので早速使います。

またFastfile内では FastlaneCore も使用可能なので、 FastlaneCore::ProvisioningProfile を使ってProvisioning Profileの名前を取り出せば良さそうです。

    sigh(force: false, adhoc: true)

    # 取得したProvisioningProfileを使用する
    xcodebuild_args = {
      PROVISIONING_PROFILE: lane_context[SharedValues::SIGH_UDID],
      PROVISIONING_PROFILE_SPECIFIER: FastlaneCore::ProvisioningProfile.parse(lane_context[SharedValues::SIGH_PROFILE_PATH])["Name"],
    }
    xcodebuild_args = xcodebuild_args.map do |k,v|
      "#{k.to_s.shellescape}=#{v.shellescape}"
    end.join ' '

    gym(scheme: "HogeApp", export_method: "ad-hoc", xcargs: xcodebuild_args)

無事に sigh がダウンロードしたProvisioning Profileを使ってビルドできるようになりました! \\ ٩( 'ω' )و //

参考

22
12
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
22
12