はじめに
タイトルが最近、ちゃんと決められません、心の病気が侵攻しているようです。
BitriseというモバイルアプリのCIサービス。ご存じの方も多いかと思います。
Qiitaとかにもたくさん記事が上がっていたりしますね。今更なんだよ?って感じですが、自分が公開してるアプリの設定とかをちょっと見せつつBitriseを使ったAdHoc配信するところまでのサンプルの手順書?みたいなのを作っていければと思います。
書こうと思った理由は、ヘイシャでもCIサービスを選定するときにシャッチョさんと結構話しました。そうしてる時にたまたまBitriseというサービスを見つけました。
しかし、Bitriseの設定自体はいつも私がやっていたので、設定できる人がいません。。(この間インターン生(今年度新卒入社)にやってもらいましたが結局最終的に私が片付けてしまいました。)
こういうものって結構機能がコロコロ変わったり(増えたり)するので、このブログ記事もいつ古い情報になるかわからないです。適宜対応してもらえればいいかなとかなんとか、
長くなるものあれなので、そろそろ内容に入ります。
環境
- iOSアプリ
- Xcode 9.2
- Swift 4.0.3
- macOS High Sierra (
ゲストユーザの権限をさらなる高みへ!!) - GitHub Private repository
- Bitrise (Free plan)
- DeployGate
やっていき
リポジトリの登録
Bitriseでユーザ登録もしくはログインできたら、dashboardに + Add new app
なるボタンがあると思うのでそれで追加ですね。
アカウント選択とリポジトリ選択は、省略します。
Private repositoryにはもちろんアクセス権がいるのでSSH Keyの受けた渡しが必要になります。基本的には、 No, auto-add SSH key
を押してしまって大丈夫かと。
リポジトリの Settings
-> Deploy keys
にBitriseが生成した公開鍵が追加されます。メールでも来るかと思います。
そうすると勝手に、リポジトリがどのスタイル(iOSなのかAndroidなのかXamarinなのかとか)を確認してくれます。
しばらく待つと検知した結果が表示されるかと思います。もしここで適切な物が選ばれていないなどがあれば、マニュアルで変更可能です。
新規でCocoaPodsなどを使っていない場合、こんな感じに検知されました。もし Scheme name
が検知されないなどのエラーがでた場合は、Xcode側でSchemeのSharedにチェックを入れてもう一度同じ動作をしてください
Select ipa export method
は今回はAdHocにしました。
WebHookはやっておくに越したことはないのでやっておきます。次に大きな緑色のKick offなんてらっていうボタンがあるのでこれを押すと自動的に初回ビルドが始まります。
多分、失敗しますが別にいいです。
私の場合は、CocoaPodsのインストールでコケました。まぁ当たり前ですね。
ビルドの設定
Open Workflow Editor
が下の方にあるのでここからが本番です
画面が変わったら、タブの下に WORKFLOW
なるメニューがあるので deploy
にしました。いつも私は primary
は削除します。
今回はまだCocoaPods使っていないですし、XCTestもやってないのでここは消しておきます。それぞれ選択して右ペインの下の方で消せます。
もしCocoaPodsのバージョンを固定するためにGemfileを作ってる場合は、 Do anything with Script
のように新しくでもそこでもいいのでインストールさせてあげれば大丈夫です。
$ gem install bundler $ bundle install --path vendor/bundle $ bundle exec pod repo update $ bundle exec pod install
こんな感じ。
Certificate and profile installer
と Xcode Archive & Export for iOS
は常に最新版にするべきという表記がBitriseのリファレンスにあった気がするので古いようであれば最新版に上げておくといいかもです。
Xcode Archive & Export for iOS
の Select method for export
は今回はAdHocなので基本的には変える必要はないですが、もし目的のメソッドで書き出せないかもしれないっていうのがあるので変えておくといいかもです。
今回は、AdHoc配信に DeployGate
を使用します。
Xcode Archive & Export for iOS
の下にある +
ボタンを押して Script
を追加して、以下のようにするとDeployGateのAPIを叩けます。
#!/bin/bash $ curl \ -F "token=<API_TOKEN>" \ -F "file=@/Users/vagrant/deploy/<SCHEME_NAME>.ipa" \ -F "message=$GIT_CLONE_COMMIT_MESSAGE_BODY" \ https://deploygate.com/api/users/<USERNAME>/apps
API_TOKEN
はDeployGateの ユーザ設定 のページの1番下にあるものです。
SCHEME_NAME
はXcodeでsharedにチェックしたschemeの名前が入ります。
USERNAME
は言わずもがな、DeployGateのユーザ名
ということで、私のWorkflowsの基本形ができました。
証明書のアップロード
このままだと、ビルドしてもアーカイブエクスポートしてくれませんので、アップロードが必要です。
Code Signing
からやっていきます。
Bitriseさんはとっても優しいので、自動化コードを用意してくれています。
いくつかの質問に答えるだけで証明書とProvisioning Profileを書き出してくれます。私たちはそれをアップロードするだけで完了です。
$ bash -l -c "$(curl -sfL https://raw.githubusercontent.com/bitrise-tools/codesigndoc/master/_scripts/install_wrap.sh)"
これを実行します。
Hoge.xcodeproj
や Hoge.xcworkspace
等をドラッグアンドドロップした方がいいところなので open /path/to/project
しておくことをオススメ!
ここで、対象のものをドラッグアンドドロップでPATHを入力されますね。
次は、先ほどにもあった書き出しメソッドの選択です。今回は、AdHocなので3番を選びました。
一度もAdHocでのアーカイブ経験がなかったので、一度Xcode側でアーカイブしてエクスポートまでやり直しました。ごめんなさい。
ちゃんといけると以下みたいな感じです。
Do you want to collect another ipa export code sign files
と聞かれるので今回は他のメソッド使わないので NO
と答えましょう。
まぁこんな感じで聞かれるのでパスワード入力しましょう。
次に、アップロードするか?と聞かれるのでやってみましょう。
https://www.bitrise.io/me/profile#/security
ログインした状態でこのページにアクセスして、 Generate new
して取得しましょう
生成された、AccessTokenを貼り付けて続ける。そしたらBitriseのアプリ一覧が表示されるので今回追加されたものの番号を選びます。
上手く行けば特にエラー無しでいけるはずです。失敗した場合は、多分自動的Finderが開いているのでそれをBitrise側の Code Signing
に Provisioning Profile
及び Code signing Identity
をアップロードしましょう!
はい!終わり!簡単
ビルドしよう
Workflow Editor
の右上のバツボタンを押して、 Start/Schedule a Build
を押して、開始しましょう!!
やったね!!
ちょっと応用
Bitriseはvagrantでビルド用のマシンを作ってて結局はmacOSなので、もちろんいろんなことができますね。もちろん環境変数を設定できる!!やったね
環境変数
Workflow Editor
で Secrets
で好きな用にAPIキー等の隠したい情報を入れることもできます。
隠したいファイル
例えば、私はFirebaseを使う時に GoogleService-Info.plist
をGit管理せずにDLするようにしたりします。
Code Signing
の下の方に追加できます。
DL自体はこんな風で設定してます。実際の GoogleSerivce-Info.plist
のある場所になるようにDLしました。
トリガーの設定
これはまぁ当たり前ですが、やっておくべきかな。と。
あるブランチにPushされた時にビルドを配信するなど。
ココらへんは基本中の基本だと思うのでパスします。
最後に
ということで、Bitriseの簡単な設定方法を書き出しました。
Free Planだと600秒(10分)の制限があるのであんまりめちゃくちゃデカイプロジェクトをビルドすることはできませんが、Carthageにするとか色んな方法でビルド時間を短縮する手立てをしておきましょう!!
ちょっと疲れたのでおやすみなさい!!