[iOS] fastlaneでビルドしてEMLauncherにアップする

こんにちは。モバイルソリューション事業部のカシマです。京都オフィスでiOSアプリの開発をしています。
京都に住んで5年ですが、「こんにちは 京都弁」でggってしまうほど染まりきっていない感があります。「こん↑にち↓は↑」というようです。言われてみればそうかもという感じです。

今日はfastlaneという自動化ツールを使ってiOSプロジェクトをビルドし、弊社で使っているEMLauncherというアプリ配布サービスにアップする手順を紹介したいと思います。
以前も紹介したことがあるのですが、いろいろ変わったところがあったりするので再度紹介してみます。

簡単な紹介と手順は以下で解説されています。(ありがとうございます!)
fastlaneの簡単な紹介と使用例

僕の場合少しlaneをカスタマイズして、何となく使いやすいようにしています。

lane :build do |options|
# cocoapodsライブラリのインストール
if options[:pod]
cocoapods
end

# carthageライブラリのインストール
if options[:cart]
carthage
end

# ビルド番号をインクリメント
if options[:inc]
increment_build_number
end

directory = 'build/'
versionNum = get_version_number
buildNum = get_build_number
config = options[:config] || 'Debug'
methods = {
"Staging" => "ad-hoc",
"Release" => "ad-hoc",
}
method = options[:method] || methods[config] || 'development'
ipaName = "#{config}_#{versionNum}_(#{buildNum}).ipa"

# ビルド
gym(
scheme: scheme,
configuration: config,
clean: true,
output_directory: directory,
output_name: ipaName,
export_method: method,
silent: true,
)

# EMLauncherへアップ
if options[:em]
comment = options[:comment]
emTitle = "#{config} #{versionNum} (#{buildNum})"
emDesc = Actions.last_git_commit_formatted_with("Git Author: %an <%ae>\nGit Commit: %H\n%B").to_s
tags = options[:tags]
emlauncher(
title: emTitle,
description: emDesc,
tags: tags,
)
end
end

さらにEMLauncherへのアップ部分ですが、以前はこちらのactionを使っていたのですが、deprecatedになってしまい使えなくなった(なぜかはよく分からない・・)ので、fastlaneのsh actionがあるのでcurlで実装しました。
(ちなみにFastlaneの環境変数に関してはこちらなどに一覧があります。が、何の変数なのか雰囲気でしかわからない・・・ちゃんとした一覧あるのかな

lane :emlauncher do |options|
url = ENV['FL_EMLAUNCHER_API_URL’] # EMLauncherのURL
token = ENV['FL_EMLAUNCHER_API_TOKEN’] # EMlauncherのToken
ipa = ENV["IPA_OUTPUT_PATH”] # ipaファイルのpath
title = options[:title]
desc = options[:description]
tags = options[:tags]

sh("curl -sS #{url} \
-F api_key='#{token}' \
-F file=@'#{ipa}' \
-F title='#{title}' \
-F description='#{desc}' \
-F tags='#{tags}'", log: false)
end

これをFastfileに追加して、プロジェクトのルートディレクトリで以下のように呼び出します。

$ fastlane build config:Staging em:true

するとガーーッとビルドが走って、

スクリーンショット 2017-04-12 21.19.39.png

スクリーンショット 2017-04-12 21.22.03.png

といった感じで上がってくれました!端末のSafariからこのページを開き、Insallボタンを押すとダウンロード&インストールが開始します。

ちなみに複数のターゲットなどでやる場合は、
$ fastlane build config:Staging em:true; sleep 1; fastlane build config:Release em:true


というようにsleepを挟むといい感じになります。挟まないとなぜか失敗しました・・・(調べておきます

これまでXcodeのOrganizerからポチポチやってた作業が1コマンド待つだけでよくなってとてもいいですね!
ビルド中はマシンも唸ったりして忙しそうなので、ピザポテトでも食べて待っていましょう!(無かったらオーザックでも可

弊社では最近新しくサービスを導入したので、この記事の使い道も怪しいところですが、ひとまず共有でした!

この記事へのコメント