$30 off During Our Annual Pro Sale. View Details »

Share apk via Bitrise

Share apk via Bitrise

Yuichi Maekawa

August 23, 2018
Tweet

More Decks by Yuichi Maekawa

Other Decks in Programming

Transcript

  1. Share apk via Bitrise
    potatotips #54 @ eureka, Inc.
    AbemaTV, Inc. 前川 裕一 @kaelaela

    View Slide

  2. もっと簡単に複数apkの配布がしたい
    メールアドレスもらうの大変 ...
    プランあげなきゃ...

    View Slide

  3. すでに使ってる
    Bitrise + Slackでapkを配布しよう

    View Slide

  4. このようにSlackに通知される

    View Slide

  5. このようにSlackに通知される
    ビルドしたapkごとの配布ページリンク

    View Slide

  6. 配布ページ

    View Slide

  7. 配布(通知)までの流れ
    Pull request Start build
    Build & test
    Build apk
    Upload to Bitrise Send to Slack

    View Slide

  8. 必要なもの
    Bitrise start Build step: 並列してapkビルドするためのworkflowを追加する
    Deploy to Bitrise.io step: Bitrise上にapk配布ページを作成する
    Send a Slack Message step: Slackへ通知
    そのほか
    簡単なShell script

    View Slide

  9. Bitrise workflowをカスタムする

    View Slide

  10. Personal access tokensの発行
    ● Bitrise Start Build stepで使う
    ● 名前は任意( 今回はBITRISE_AUTH_TOKENとします)

    View Slide

  11. Personal access tokensの発行
    Account settings

    View Slide

  12. Personal access tokensの発行
    Account settings > Security

    View Slide

  13. Personal access tokensの発行
    Account settings > Security > Generate New

    View Slide

  14. 対象Projectにtokenを追加
    Workflow

    View Slide

  15. 対象Projectにtokenを追加
    Workflow > secrets

    View Slide

  16. 対象Projectにtokenを追加
    Workflow > secrets > Add new

    View Slide

  17. Bitrise start Build stepの追加

    View Slide

  18. Bitrise start Build stepの追加
    Input variablesに先ほどのtokenを追加
    $BITRISE_AUTH_TOKEN

    View Slide

  19. Bitrise start Build stepの追加
    Workflowsに並列ビルドするWorkflowの名前を設定
    例) build_apk

    View Slide

  20. Bitrise start Build stepの追加
    WORKFLOW欄に追加される

    View Slide

  21. Build_apk workflowの編集

    View Slide

  22. Gradle Runner BUILD APK step
    基本は普通にbuild
    デフォルトはassembleでfull build
    吐き出したいapkに合わせて変更

    View Slide

  23. 配布ページの作成
    Deploy to Bitrise.io step

    View Slide

  24. Deploy to Bitrise.io step
    Enable public page for the App?をtrueに
    https://app.bitrise.io/artifact/~~ に公開ページとして作成される

    View Slide

  25. Deploy to Bitrise.io step
    Format for the BITRISE_PUBLIC_INSTALL_PAGE_URL_MAP outputで
    環境変数BITRISE_PUBLIC_INSTALL_PAGE_URL_MAPに入る値を決められる
    デフォルトは
    {apk名=>URL|apk名=>URL|...}
    のような文字列になる
    ※Go langのtext templateで記述されている
    今回はscript処理しやすくするためにカンマ区切りにしました

    View Slide

  26. Script step
    URLを環境変数にする

    View Slide

  27. Shell script
    ● 先ほどのBITRISE_PUBLIC_INSTALL_PAGE_URL_MAP
    {app-develop-debug.apk,https://app.bitrise.io/artifact/~~,app-develop-release.apk...}
    ● apk名とurlを環境変数にしたい
    ● 例えば、今回はカンマ区切りなので
    のあとに
    $1 -> apk name
    $2 -> url
    みたいにすれば良さそう
    $ IFS=','
    $ set -- ${BITRISE_PUBLIC_INSTALL_PAGE_URL_MAP}

    View Slide

  28. これはだめ
    $ IFS=','
    $ set -- ${BITRISE_PUBLIC_INSTALL_PAGE_URL_MAP}
    $ export APK_NAME=$1
    $ ...

    View Slide

  29. Expose an Environment Variable and use it another step
    $ envman add --key YOUR_KEY --value "value"
    https://devcenter.bitrise.io/tips-and-tricks/expose-environment-variable/

    View Slide

  30. script sample
    #!/usr/bin/env bash
    # apk用URLを環境変数に追加
    IFS=','
    set -- ${BITRISE_PUBLIC_INSTALL_PAGE_URL_MAP}
    envman add --key APK_1_NAME --value $1
    envman add --key APK_1_URL --value $2
    envman add --key APK_2_NAME --value $3
    envman add --key APK_2_URL --value $4
    envman add --key APK_3_NAME --value $5
    envman add --key APK_3_URL --value $6
    ….

    View Slide

  31. Send a Slack message step
    環境変数にしたURLをボタンとして送信

    View Slide

  32. Send a Slack message step
    リンクボタンを追加できる

    View Slide

  33. DONE!

    View Slide

  34. 注意
    ● 並列ビルドしないとビルド時間が増える
    ● 通知を工夫しないと雑多になる
    ● ビルドしたいapkが増えるほど通知は遅くなる
    ● apk以外のファイル(mapping.txtとか)は頑張らないと配布できない
    ● 公開ページなのでセキュアではない(気になるなら)

    View Slide

  35. まとめ
    ● Bitrise start Build stepを追加
    ● Upload to Bitrise stepをカスタマイズ
    ● Shell芸でなんとかする
    ● Bitriseの環境変数は
    ● Send to Slack stepで通知する
    $ envman add --key YOUR_KEY --value "value"

    View Slide

  36. Thank you!
    (DX++)

    View Slide