SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

freee、マジ価値開発の現場から

ブランチ運用の見直しと自動化で、モバイルアプリ開発における問題を解決!

freee、マジ価値開発の現場から 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

3.QAチームのチェックでOKになったので、アプリをリリースしたい

 QAチームからOKが出たら、あとはエンジニア側でリリース作業に入ります。

 具体的なリリース作業は

  1. リリース用のアプリをビルドする
  2. ビルドしたバイナリをストアにアップロードする
  3. リリースノートなど、リリースに必要な情報を入力する
  4. アプリをリリースする(iOSの場合は審査提出)

となります。

 以前は、この作業のうちリリース用のアプリをビルドする手順を、社内にあるマシン内のJenkins上で行っていました。ただ、社内ネットワーク内にあるために外部サービスとのWebhookでの連携が難しいことや、各アプリのiOS版のSwiftバージョンを上げていく際に、マシン内に複数バージョンのXcodeを置いて切り替える必要があり、そのあたりの運用が非常に手間だったのをきっかけに、Bitriseに移行しました。

 Bitrise移行後、リリース時は以下の流れになっています。

  1. Slack上でbotに「リリースするぞ」と言う
  2. botがGitHub API経由でバージョン別のブランチにタグを作成する
  3. タグ作成をフックにして、Bitrise上でリリース用のビルドが走る
  4. リリース用のビルドが完了すると、Bitriseから各ストアにバイナリがアップロードされる
  5. 手動でリリース内容を設定し、申請 or リリース版を公開する

 こちらの流れの中で使ってるbotも、先ほどと同じbotを使っています。

 やりとりはこんな感じです。

Slack上からリリースを実行
Slack上からリリースを実行

 リリース内容だけ手動ですが、これは現状ユーザーに分かりやすいリリース内容の自動生成が難しいため、今のところ自動化していません。

4.現在QAチームに見てもらっているが、前のバージョンに不具合があって、その修正を先に出したい

 こちらはちょっとイレギュラーなケースになります。例えば大きな機能のリリースが続くようなケースだと、

  1. バージョン1.0.0をリリースした
  2. 次のバージョン1.1.0をリリースしたいのでQA中
  3. その間に、1.0.0で不具合が見つかったので、1.1.0より先にbugfix版の1.0.1を出したい

といった状況になるケースは少なくないと思います。

 以前の運用では正直このようなケースの対応は難しく、結局「次のバージョンにbugfixの修正も入れて、早くリリースまで持っていく」といった運用になっていました。

 現在の運用だとリリースフローの中で、リリースしたタイミングでgitにタグを作成することが自動的に組み込まれているため、1.0.0がどのコミットからバイナリを作られているのかが正確に分かります。つまり、そのタグから1.0.1というブランチを作成することで、bugfixだけをそのブランチにcommitして修正版を出すといったことが可能になりました。

QA中に、前のバージョンのbugfix用ブランチを切る
QA中に、前のバージョンのbugfix用ブランチを切る

 この場合、1.1.0は既にmasterから切り離されているので、1.0.1に追加したhotfixと同じ修正を1.1.0に入れないとデグレードになってしまいます。そこだけ注意が必要です。

さいごに

 今回は、モバイルチームがリリース周りの運用で抱えていた問題と、それをどう解決したのか、事例を紹介しました。

 運用周りの改善は、なかなか面倒になって後回しになりがちです。しかし、改善することによって本業の開発に集中できるようになります。今回紹介したようなケースで困っている方の参考になれば幸いです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
freee、マジ価値開発の現場から連載記事一覧

もっと読む

この記事の著者

船越 悠貴(freee K.K.)(フナコシ ユウキ)

 2016年6月にfreee入社。主にAndroidアプリの開発や、運用周りの自動化をメインにお仕事してます。最近Flutterにも手を出し始めました。鳥に囲まれて暮らしたい。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11005 2018/10/22 13:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング