Bitriseを導入しました

SYMAX でエンジニアをやっている関口(TinyKitten)です。
弊社では、CIツールとして基本的にGitLab CIを使用しています。
しかし、Ionicでハイブリッドアプリを開発していくにつれて、macOS環境を準備しづらい、継続的デリバリーの設定が割と煩わしいなど課題を感じてきました。
そこでハイブリッドアプリのみBitriseに移行することにしました。
結果としては、良い判断だったかと思います。
なぜそう思うのか、またBitriseの何が嬉しいか書いていこうと思います。
そもそもBitriseとは?
Bitriseとは、モバイル開発に特化したCI(継続的インテグレーション)サービスです。
何がすごいかというと、ポチポチと数回クリックするだけでCI/CD環境が整備できてしまいます。
GitLabでは、.gitlab-ci.ymlを作ってコードで設定しなくてはならないかと思います。
しかし、Bitriseではリポジトリを接続した時点でプラットフォームを検出、最低限の設定をScaffoldしてくれます。
数回のクリックとnpmスクリプトの実行だけでテスト・ビルド・デプロイが完了します。
また、Bitriseには14日間の無料試用期間があるため、じっくり試してから継続使用を検討することができます。
すべてのプロジェクトでBitriseを使用するのか?
これはまだ検討中です。ただ、ハイブリッド/ネイティブアプリを開発するときは絶対使いたいです。
弊社ではバックエンドのフレームワークにRuby on Railsを使用しています。
このプロジェクトをBitriseで使用できるかもしれませんが、Bitriseはモバイル開発に特化したCIのため今の所GitLab CIを使い続けています。
サイマックスの活用例
bitrise.ymlで設定を書くこともできますが、今の所それはしていません。
現在、1ビルド2,700秒・並行ビルド可能数1ビルド・月1,000ビルドまで可能のプランを契約していますが、今の所月1,000ビルドを超えるような開発はしていないのでまだ事足りています。
ただし、1並行ビルドしかできないので割とつまります。1ビルド長くて15分なので並行数は増やしてもいいかもしれない。一応1ビルド2,700秒は超えそうにないですね。
ワークフローの例
・テスト
MR・Pushのたびに実行します。処理がかぶってしまうため「testonly」ワークフローにまとめて、それぞれのビルド用ワークフローの先頭に実行しています。
・ビルド
これもMR・Pushのたびに実行しています。ブランチ名でビルド設定を分けています。
・デプロイ
テスト・ビルドが成功したら、デプロイします。
Bitriseのサーバーにapk、ipaを投げてくれる機能があるので、社内テスト用ステージングの成果物はBitriseのサーバに投げています。
タグ付けされていた場合はApp Store、Google Play Storeに申請またはTestFlightにアップロードします。
・QRコードの生成・通知
Bitriseの機能にQRコードの作成があるので、それと一緒にSlackにビルドまたはテスト完了の通知を投げています。
これで社内のエンジニア以外の人もはアプリをTestFlight等を介さずに自分の端末にダウンロードしてテストすることができます。
今後やりたいこと
自然言語処理とまでは言いませんが、Slackの発言をトリガーにしてビルドとかデプロイできたら嬉しいなと思っています。
サイマックス株式会社では最高のアプリを作る環境を構築するエンジニアを募集しています。 エンジニア採用はこちら

