about
CircleCIからAutify for Mobileへアップロードする方法について書きます。
ここではFlutter環境でiOSの.appファイルをアップロードしていますが、
iOSネイティブでも参考になるかと思います。
how to
今回はconfig.ymlに書きました。
fastlaneで書いても良いと思います。
(´-`).。oO (そうするとまたshコマンドで表現するところで躓きそう)
準備
CircleCIの環境変数に以下を追加しておきます。
-
AUTIFY_ACCESS_TOKEN
Autifyの設定画面→パーソナルアクセストークン
から生成できます。 -
AUTIFY_PROJECT_ID
Autifyの設定画面を開いたときにURLに表示されています。
profile?current={PROJECT_ID}
zipアーカイブ
appファイルをzipでアーカイブしてアップロードする必要があるので、zipコマンドを実行します。
Runner.appが生成されるディレクトリを見つけるのがひと手間でした。
fastlaneでgymやbuild_appを実行した後に記載します。
- run:
name: archive app file
command: zip -r Runner Runner.app
working_directory: {Runner.appの生成されたパス}
これで~/flutter_app/build/ios/iphoneos/Runner.zip
が生成されます。
ポイント
普通にビルドするとarmv7 arm64
なのでx86_64
でビルドする必要があります。
その方法は以下の記事が参考になるかと思います。
特に気をつける点としては、Runner.app
のパスです。
-
通常
flutter build
では~/flutter_app/build/ios/iphoneos/
に生成される -
x86_64
でビルドしたRunner.app
⇡の記事の理由により~/Library/Developer/Xcode/DerivedData以下
に生成される
Autify APIでアップロード
2021.10.07現在はcurlでアップロードするのが良さそうです。
Swaggerを確認すると以下の通り
POST: /api/v1/projects/{project_id}/builds
https://mobile-app.autify.com/api/docs/
そこにパラメータを追加すると以下のようになります。
- run:
name: autify upload
command: >-
curl -X POST "https://mobile-app.autify.com/api/v1/projects/${AUTIFY_PROJECT_ID}/builds" \
-H "accept: application/json" \
-H "Authorization: Bearer ${AUTIFY_ACCESS_TOKEN}" \
-H "Content-Type: multipart/form-data" \
-F "file=@Runner.zip;type=application/zip"
working_directory: {Runner.appの生成されたパス}
response
成功するとステータスコード201で以下のようにIDが返ってきます
{
"id": "yLA6m0oM"
}
トラブルシューティング
-
ymlのインデント
Android StudioやVSCodeでオートインデントしましょう -
Authorization Header
SwaggerのTry it outで生成されるcurlだとBearer
が入らないので躓きました
=> 現在は修正されているようです! -
zipファイル
ワーキングディレクトリを指定しないと、階層構造が再現されてしまい、Runner.app
が見つからないと言われることがありました
一度ローカルでzipを生成しブラウザのアップローダから試してみると良いと思います
参考
Autify API 連携
https://autify-for-mobile.zendesk.com/hc/ja/articles/4403483275417
How to run curl request in yml
https://stackoverflow.com/questions/68268869/how-to-run-curl-request-in-yml
Special thanks: @sasasin
Bitriseの場合
autify-uploadステップを使えばOKです!
https://www.bitrise.io/integrations/steps/autify-upload