koogawa blog

iOS、Android、foursquareに関する話題

CLI 版 Bitrise で快適ビルド生活

こんにちは。koogawa です。

f:id:koogawa:20180505110747j:plain

さて皆さま、Bitrise と言えば CI サービス bitrise.io の方を想像する人がほとんどだと思いますが、実は CLI 版が用意されているのはご存知でしょうか。

今回はこの CLI 版 Bitrise を使ってiOSアプリを Deploy Gate に配信する方法を紹介したいと思います。

目次

実行環境

  • Xcode 9.3
  • Bitrise 1.16.0
  • CocoaPods 1.5.0

すでに CocoaPods を使用したサンプルプロジェクトが作成済みである前提で話を進めます。

まずはインストール

Bitrise CLIHomebrew から簡単にインストールできます。

$ 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

f:id:koogawa:20180510170455p:plain

ちょっとわかりにくいですが、ちゃんと “Hello My Name!” が表示されていますね。

CocoaPods

次はライブラリ管理ツール CocoaPodspod 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 が生成されていると思います。

f:id:koogawa:20180510170343p:plain

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 APIcurl で叩いているのがわかると思います。ここでも before_run を使用し、事前に ipa ファイルのエクスポートを行っています。

$ bitrise run deploy

を実行してみましょう。成功すれば、DeployGate のダッシュボードにアプリが追加されているはずです。

***

今後は $ bitrise run deploy と打つだけで

  1. pod install
  2. archive および ipa ファイルのエクスポート
  3. DeployGate に配信

まで自動的にやってくれます。快適ですね!

まとめ

CLI 版 Bitrise を使ってiOSアプリを Deploy Gate に配信する方法を紹介しました。意外と簡単だったのではないでしょうか。

また、この他にも Xcode Unit Test を実行するなど様々なワークフローが作れるので、興味があればぜひ試してみてください!

*1:他に ad-hoc, appstore などが設定可能