私の所属している部署ではアプリのビルドにbitriseを用いています。社内のエンジニア向けにbitriseの概要をまとめたので、それを公開しようと思います。

bitrise説明

bitrise用語一覧

ワークフロー

アプリビルドの際に実行される一連のアクション群。(ex. ソースコードのgit clone → アプリビルド → 通知)

一つ一つのアクションはステップと呼ばれます。

一つのアプリに対して複数のワークフローが設定可能です。

そのため、テストのみ行うワークフロー、テスト,ビルド,デプロイを行うワークフローなどを分けておき、トリガー(後述)によって動作するワークフローを変更することでアプリの開発状況に適したジョブを実行しやすくなります。

設定方法はwebUI上での設定とbitrise.yamlファイル(bitriseの設定ファイル)の編集の2通りがあります。設定ファイルについては設定例で紹介します。

環境変数(Env Vars)

ビルド用のマシン上で用いられる環境変数を設定できます。シェルスクリプトで用いるのと同様に${環境変数名}で参照可能です。環境変数を用いて設定値を渡すようになっているステップも多いです。

写真のようにwebUI上で設定値に環境変数を指定できます。(写真青枠のBITRISE_PORJECT_PATHとBITRISE_SCHEMEが環境変数)

ワークフローごとに設定/上書きをすることが可能です。

シークレット

特別なタイプの環境変数で、以下の特徴をもちます。

  • bitrise.yamlファイル上で閲覧、編集ができない

  • 暗号化されて保存される

  • ビルドログ等に表示される際に内容が見えない

上記特徴があるため、APIキー,パスワード等の秘密情報を格納するのに使用されます。シークレットは下写真の画面で設定します。

トリガー

自動ビルドのスタート契機、実行するワークフローを設定できます。

※ビルドの開始は、webUI上での手動実行、決まった時間に定期実行、APIを用いて実行等もできますが、この資料では自動ビルドのみについて解説します。

github, gitlabなどのgitホスティングサービスにbitriseへのwebフックを設定することで、git push, git tag等のアクションに対してワークフローを紐付けます。

以下の3アクションに対して設定することが可能です。

  • git push

  • pull request

  • git tag

git push

ブランチへのプッシュアクションをトリガーにワークフローを実行します。

設定するのはプッシュされるブランチの名前とプッシュされた際に実行されるワークフローのセットです。ブランチ名は正規表現を用いることが可能で、例えばfeature/*と指定するとfeature/1-debugfeature/1/debug等も対象となります。

pull request

プルリクエスト(マージリクエスト)が発行されることをトリガーにワークフローを実行します。

設定するのはソースブランチ(プルする側のブランチ)名とターゲットブランチ(プルする側のブランチ)名とプルリクエストが発行された際に実行されるワークフローのセットです。こちらもブランチ名に正規表現を用いることが可能です。

git tag

タグの発行をトリガーにワークフローを実行します。

設定するのはタグ名とタグが発行された際に実行されるワークフローのセットです。こちらもタグ名に正規表現を用いることができます。

 

iOSビルド設定例

事前準備

必要ファイル等

iOSアプリのビルドには以下の準備が必要です。

 ・アプリビルド用のプロビジョニングプロファイル、p12ファイルの準備

 ・アプリのソースコードを配置しているgitへアクセス可能な秘密鍵 (pem)

プロビジョニングプロファイル、p12ファイルはAutomatically manage signingを用いる場合はcodesigndocを用いて必要なファイル群をエクスポートしておいてください。(手動でやるのは大変です)

前提条件

gitホスティングサービスは以下のいづれかを用いているとします(bitriseのwebhookを設定するのが困難なため)

またサービスによって検知できるイベントが異なるのでそれも記述します。

gitホスティングサービス 検知できるイベント
GitHub Code Push, Pull Request, Tag Push
Gitlab Code Push, Merge Request, Tag Push
Bitbucket Code Push, Pull Request, Tag Push
Gogs Code Push
Visual Studio Online Code Push, Tag Push
Gogs Code Push
Deveo Code Push, Tag Push
Assembla Code Push

 

設定例

iOSの設定方法を紹介します。

ワークフローの設定

  1. 証明書等のアップロード Work flow→Code Signingからプロビジョニングプロファイル、p12ファイルをアップロードします。

  2. ワークフローの作成 これからの説明は以下の設定(bitrise.yamlファイル)を元に行います。[]内の文字列はプロジェクト毎に置き換わる値だと思ってください。
    ※ワークフローについてはほぼデフォルト設定となっています。

     

    ---
    format_version: '6'
    default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
    project_type: ios
    workflows:
      deploy:
        steps:
        - activate-ssh-key@4.0.3:
            run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
        - git-clone@4.0.14: {}
        - cache-pull@2.0.1: {}
        - certificate-and-profile-installer@1.10.1: {}
        - recreate-user-schemes@1.0.2:
            inputs:
            - project_path: "$BITRISE_PROJECT_PATH"
        - xcode-archive@2.4.19:
            inputs:
            - project_path: "$BITRISE_PROJECT_PATH"
            - scheme: "$BITRISE_SCHEME"
            - export_method: "$BITRISE_EXPORT_METHOD"
        - cache-push@2.0.5: {}
        - deploy-to-bitrise-io@1.3.19:
            inputs:
            - is_enable_public_page: 'false'
    app:
      envs:
      - opts:
          is_expand: false
        BITRISE_PROJECT_PATH: [プロジェクトファイルのパスを記述]
      - opts:
          is_expand: false
        BITRISE_SCHEME: [ビルドスキーマを指定]
      - opts:
          is_expand: false
        BITRISE_EXPORT_METHOD: [出力形式(ad-hoc)を指定]
    trigger_map:
    - tag: "*.*.*"
      workflow: deploy


    設定内容を説明します。

    ワークフロー

     ・deployという名前のワークフローが定義されている

    ・deployワークフローの動作内容は以下

    ・ssh秘密鍵(git clone用)の設定

    ・ソースコードのgit clone

    ・キャッシュのダウンロード

    ・証明書、プロビジョニングプロファイルの設定(インストール)

    ・ユーザスキーマの作成(sharedのスキーマをコミットしてなくても動くように)

    ・xcode archiveの実行

    ・キャッシュのアップロード

    ・アプリのデプロイ(bitriseの管理画面からアプリをインストールできるようにする)

    環境変数

    環境変数としてBITRISE_PROJECT_PATH, BITRISE_SCHEME, BITRISE_EXPORT_METHODが定義されている(すべてxcode archiveで使われている)

    トリガー

    *.*.*(1.0.0など)という名前のタグが作成されたときにdeployワークフローが実行されるようにトリガーが設定されている

  3. 実行テストマニュアルで作成したワークフローを実行、成功することを確認してください。失敗する場合はログを見て対策をしてください。

 

webフックの設定

コードのコミット等で自動的にワークフローが実行されるようにwebフックの設定を行います。

  1. webフックの設定(gitlabの場合)

    1. codeタブを選択して、ページ内のINCOMING WEBHOOKSのSETUP MANUALLYを選択して出てきたURLをコピーします。

    2. gitlabの管理画面でwebhookの設定を行います。

まとめ

  • bitriseのビルド設定(iOS)を行いました
  • gitlabのwebhookの設定をして自動ビルドの準備を行いました

bitriseの利点はGUIで直感的に設定ができ、アプリのビルドになれてないエンジニアでも簡単に設定を行うことができることだと思います。機会があればぜひ使ってみてください。

投稿者プロフィール

ハナコ
ハナコ