もやぶろ

moyashidaisukeのブログだからもやぶろ。フリーランスのエンジニアのダイスケです。QOLあげて色々楽しくチャレンジして良く生きたい。プログラム関連とかギター関連とか旅行関連とか色々。

【Flutter】CodeMagicでのiOSビルドの時に「build number 」でエラーになる時の設定方法

概要

Flutterに特化したCIサービスのCodeMagicで、iOS用にbuildした時にデフォルト設定だと2回目からエラーになります。

マニュアル見てもいまいちわかりにくいのですが、私の対応方法です。

CodeMagicとは

codemagic.io

「CI/CD tool for Flutter」ということで、Flutterに特化してる非常にエッジの効いたCI/CDのwebサービスです。

エラー

CodeMagicの初期設定はすごく簡単で、ちょっと設定したら動いちゃうのですが、iOS用のprovisioningを指定しただけだと、2回め以降は以下のエラーが発生します。(1回目は通る)

ERROR ITMS-90189: "Redundant Binary Upload. You've already uploaded a build with build number '1' for version number '1.0.0'. Make sure you increment the build string before you upload your app to App Store Connect. Learn more in Xcode Help (http://help.apple.com/xcode/mac/current/#/devba7f53ad4)."

App Store Connectで、バージョン番号(version。Bundle version string, short。今回だと1.0.0)の中で、さらにビルド番号(build number。Bundle version)で管理する仕組みになっているのですが、これは自動でインクリメントされず、こちらで明示的に指定してあげる必要があります。

で、CodeBuildのマニュアルきも記載があります。

docs.codemagic.io

3の例が示されています。

--build-name=2.0.$BUILD_NUMBER --build-number=$(($BUILD_NUMBER + 100))

--build-name=1.0.0 --build-number=$BUILD_NUMBER

--build-number=$(git rev-list HEAD --count)

このうち、3つ目のgitを使う方法は、私の環境だとなぜか50で頭打ちになってしまい、うまくいきませんでした。(git cloneする時にdepth指定してるのかな、、、)

で、結局シンプルに

--build-number=$BUILD_NUMBER

だけでうまくいきました。

f:id:moyashidaisuke:20190926220355p:plain

$BUILD_NUMBERは、

The BUILD_NUMBER read-only environment variable holds the total count of builds (including the ongoing build) for this project in Codemagic. 

なので、CodeMagicの中で管理してるプロジェクト内で、ビルドするたびにインクリメントしていく番号なのでぴったりです。

まとめ

深いこだわりがなければ、 設定(歯車)> Build > Build argumentsに

--build-number=$BUILD_NUMBER

を入れてあげればOK!