SODA Engineering Blog
🔊

Codemagicの配信が微妙に面倒だったので、CLIツール作りました!

2024/06/06に公開

どうも、SODAでFlutterエンジニアをしているimajoです。
Flutterを使っているみなさんならCodemagicを使ってアプリケーションの配信を行っている人は多いのではないでしょうか?

今回はCodemagicをCLIからスタートできるツール 『cmagic』 を作ったので紹介です。

https://github.com/imajoriri/codemagic-builder

$ cmagic start

Codemagic配信が意外と面倒という課題

SODAでもストア申請用や、社内配布用としてCodemagicを使っています。
特に社内配布用はPMやQAに確認してもらう目的で、何回も実行する必要があります。

手順としては

  1. ブラウザを開き
  2. ブランチを選択し
  3. ワークフローを選択する
  4. 終わるのを待つ
  5. ビルドナンバーを確認して他の人に伝える

と、シンプルですが、ビルドに時間もかかりいつ終わるかを待つために脳のリソースを使ってしまいます。
Slackに通知を送ることも可能ですが、結局Slackを確認しわすれて時間が経ってしまうことも多々あります。

実装完了!その勢いで配信!通知も来る!

実装しているその流れでCodemagicをスタートすることが多いので、CLIからスタートできれば便利なのではないかと思い、このCLIツールを作りました。
特に便利な点を紹介します。

デフォルトのブランチが実装中のブランチ

一般的にはデフォルトのブランチで開発することはないはずです。(個人開発はその限りではありません。)
Featureブランチで開発し、pushし、ブラウザでCodemagicを走らせます。
cmagicを使えばpushその勢いでFeatureブランチの配信をスタートできます。

$ git push
$ cmagic start

*もちろんcmagic start --branch branch_nameでブランチ名を指定できます。

配信終わったらOSの通知が来る

配信が終わるには時間がかるので他の作業をしているとCodemagicの存在を忘れてしまいます。
cmagicを使えば、配信終了直後にOSの通知を送ってくれます。
バージョン、配信番号もわかるのでPM、QAに伝えるのに便利です!

ちなみにこの通知、デフォルトで2,3秒で消えてしまうので設定から変更することをお勧めします!!

使い方

Installing

Homebrewで公開しています。READMEにも記載はしていますが、以下の手順でインストールできます。

brew tap imajoriri/cmagic
brew install cmagic

Token

また、CodemagicのTokenが必要なため、Teams > Personal Account > Integrations > Codemagic API > Showから取得します。

取得したtokenを環境変数として使います。

# bash
echo 'export CODEMAGIC_API_TOKEN=your_api_token_here' >> ~/.bash_profile
source ~/.bash_profile

# zsh
echo 'export CODEMAGIC_API_TOKEN=your_api_token_here' >> ~/.zshrc
source ~/.zshrc

cmagic start

cmagic start

ブランチはデフォルトで現在のブランチです。
その他にアプリケーション名やワークフロー名を聞かれるので回答していくだけでスタートできます。

作ってみて ・ 使ってみて

cmagicを作ってみて思ったよりベンだなということに気づきました。
ブラウザを開くこと自体は面倒ではないですが、ブランチをgit branchで取得してきてコピーしたり、配信終わったかなってブラウザ見に行ったりすることがなくなったので生産性も上がっています。

また、実装そのままに配信を始めるという流れが、そのデザイン性がよかったなと思っています。

今後やりたいこと

配信をすることに特化したシンプルなcmagicですが、もし需要があれば

  • ビルド一覧を取得
  • ビルドをキャンセルする
  • リファクタ笑

なども考えています。
ぜひStar⭐️で教えてもらえると嬉しいです!
またバグやニーズをIssueで聞かせてください!!

https://github.com/imajoriri/codemagic-builder

SODA Engineering Blog
SODA Engineering Blog

Discussion