こんにちは。koogawa です。
さて皆さま、Bitrise と言えば CI サービス bitrise.io の方を想像する人がほとんどだと思いますが、実は CLI 版が用意されているのはご存知でしょうか。
今回はこの CLI 版 Bitrise を使ってiOSアプリを Deploy Gate に配信する方法を紹介したいと思います。
目次
実行環境
- Xcode 9.3
- Bitrise 1.16.0
- CocoaPods 1.5.0
すでに CocoaPods を使用したサンプルプロジェクトが作成済みである前提で話を進めます。
まずはインストール
Bitrise CLI は Homebrew から簡単にインストールできます。
$ brew update && brew install bitrise
インストール後、bitrise
コマンドが使用できることを確認してください。
$ bitrise -v 1.16.0
セットアップ
Bitrise でのビルドに必要なすべてのプラグインやツール群をダウンロードするために bitrise setup
をおこないます。
$ bitrise setup ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗ ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝ ██████╔╝██║ ██║ ██████╔╝██║███████╗█████╗ ██╔══██╗██║ ██║ ██╔══██╗██║╚════██║██╔══╝ ██████╔╝██║ ██║ ██║ ██║██║███████║███████╗ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝╚══════╝ version: 1.16.0 Setup Full setup: false Clean setup: false Detected OS: darwin Checking Bitrise Core tools...
ロゴがカッコイイですね!
bitrise.yml 作成
セットアップが完了したら、今度は Bitrise の設定ファイルである bitrise.yml を作成していきます。
まずは "Hello My Name" とだけ表示する yml を書いてみます。次のように入力したら Xcode プロジェクトのルートに配置してください。
format_version: 1.3.1 default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git app: envs: - MY_NAME: My Name workflows: test: steps: - script@1.1.3: inputs: - content: echo "Hello ${MY_NAME}!"
最初の2行で設定ファイルのフォーマットバージョン指定、使用するライブラリの指定を行っています。
app:
では環境変数のセットをしています。この例では MY_NAME
という環境変数に "My Name” という値をセットしています。ここでセットした環境変数は以下で説明するワークフロー内で ${MY_NAME}
のように使用することができます。
workflows:
でワークフローを追加していきます。ワークフローはひとつひとつのステップをひとつにまとめたものです。この例では test
というワークフローの中で echo "Hello ${MY_NAME}!”
というスクリプトを実行するようにしています。
それではワークフロー test
を実行してみましょう。
$ bitrise run test
ちょっとわかりにくいですが、ちゃんと “Hello My Name!” が表示されていますね。
CocoaPods
次はライブラリ管理ツール CocoaPods で pod install
を実行してみましょう。
workflows: pod_install: steps: - script@1.1.3: title: 'pod install' inputs: - content: pod install --repo-update
pod_install
というワークフローを作り、ステップの中で pod install --repo-update
を実行しているだけですね。
$ bitrise run pod_install
を実行すると、いつものように pod install
が動き出すと思います。正常にライブラリのインストールが行われているか確認してください。
アーカイブ
次に Xcode プロジェクトをアーカイブして .ipa ファイルを生成してみましょう。
workflows: archive: before_run: - pod_install steps: - xcode-archive@2.4.3: inputs: - output_tool: xcodebuild - export_method: development - output_dir: . - project_path: “./Sample.xcworkspace" - scheme: Sample
archive
というワークフローを作り、Bitrise ライブラリで提供されているアーカイブ用の xcode-archive@2.4.3:
というステップを実行しています。今回は Sample
という Xcode プロジェクトを xcodebuild ツールでアーカイブし、開発用*1としてエクスポートしてみました。
before_run
は名前の通り、各ステップがスタートする前に実行されます。このタイミングで先ほど作成した pod_install
を呼んでいるのがポイントになります。こうすることによって、アーカイブ前にライブラリのインストールが完了していることを保証できるわけですね。
$ bitrise run archive
を実行してみましょう。成功すれば同じディレクトリに Sample.ipa が生成されていると思います。
DeployGate
最後にアプリ配布プラットフォームである DeployGate に、先ほど作成した ipa ファイルを配布してみます。
workflows: deploy: before_run: - archive steps: - script@1.1.3: title: 'upload to deploygate' inputs: - content: |- curl \ -F “token=XXXXXXXX" \ -F "file=@Sample.ipa" \ -F "message=commit: $(git rev-parse HEAD)" \ -F "disable_notifiy=true" \ https://deploygate.com/api/users/hoge/apps
deploy
というワークフローを作り、ステップの中で deploygate API を curl で叩いているのがわかると思います。ここでも before_run
を使用し、事前に ipa ファイルのエクスポートを行っています。
$ bitrise run deploy
を実行してみましょう。成功すれば、DeployGate のダッシュボードにアプリが追加されているはずです。
***
今後は $ bitrise run deploy
と打つだけで
- pod install
- archive および ipa ファイルのエクスポート
- DeployGate に配信
まで自動的にやってくれます。快適ですね!
まとめ
CLI 版 Bitrise を使ってiOSアプリを Deploy Gate に配信する方法を紹介しました。意外と簡単だったのではないでしょうか。
また、この他にも Xcode Unit Test を実行するなど様々なワークフローが作れるので、興味があればぜひ試してみてください!
*1:他に ad-hoc, appstore などが設定可能