LoginSignup
4
1

More than 1 year has passed since last update.

CircleCIからAutify for Mobileへアップロードする

Last updated at Posted at 2021-10-07

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

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1