Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Actionsを使用してGoogle Play Consoleに自動アップロード

GitHub Actionsを使用してGoogle Play Consoleに自動アップロード

27f4269488672f20b6e6fbd5069caa98?s=128

changfu

May 22, 2022
Tweet

Other Decks in Technology

Transcript

  1. GitHub Actionsを使用して Google Play Consoleに自動アップロード 株式会社ZOZO ブランドソリューション開発本部 WEAR部 Androidブロック 武永 芙侑香

    Copyright © ZOZO, Inc.
  2. © ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 WEAR部 Androidブロック 武永 芙侑香 2021年8月入社 福井でエンジニアをしていましたが東京に憧れて上京。ベン

    チャー企業でライブコマースアプリを開発後、ZOZOに入社 しました。 Androidアプリ開発経験が長いです。 2
  3. © ZOZO, Inc. https://wear.jp/
 3 • ファッションコーディネートアプリ • 1,600万ダウンロード突破、コーディネート投稿総数は1,100万件以上 (2022年4月末時点)

    • ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デ ザイナー・インフルエンサーといった各界著名人も参加
  4. © ZOZO, Inc. アジェンダ 4 はじめに 導入方法 実際のコード アップロード後の運用 今後の課題

  5. © ZOZO, Inc. はじめに 5

  6. © ZOZO, Inc. GitHub Actionsでの 自動化進めてますか? 6

  7. © ZOZO, Inc. GitHub Actionsを用いて行う自動化のメリット • 人為的ミスの回避 / 手動で作業を行う必要がない •

    作業の効率化 / ストアアップロードに使っていた作業時間を他の作業にあてることができる • ブランチ運用にも対応 / トリガーブランチの設定を豊富に行える 7
  8. © ZOZO, Inc. 導入方法
 8

  9. © ZOZO, Inc. 9 r0adkll/upload-google-play • GitHub Actionsで利用できるライブラリで導入しやすい • 段階的公開や、クローズドテストにも対応している

    使用するライブラリ
  10. © ZOZO, Inc. .github/workflows直下ファイルに追加
 10

  11. © ZOZO, Inc. リポジトリから参照するsecretの追加 1. GITHUB_TOKEN* 2. ENCODED_RELEASE_KEYSTORE* 3. KEYSTORE_PASSWORD*

    4. KEY_PASSWORD* 5. SERVICE_ACCOUNT_JSON* ※上記は必須 11
  12. © ZOZO, Inc. Google Cloud Platformでサービスアカウントを作成する 12 ※以降Google Cloud PlatformのことはGCPと省略します

    ロールは『参照者』以上に設定 作成したサービスアカウントを入力
  13. © ZOZO, Inc. サービスアカウントの秘密鍵を作成する 13 作成が完了したら jsonファイルがダウンロードされるので そのjsonをシークレットに追加する ぜん 秘密鍵は再度ダウンロードできないので注意!

  14. © ZOZO, Inc. 作成したユーザーを招待する 14 GooglePlayConsoleのAPIアクセスから 連携できるアカウントが表示されるので そこから権限を付与

  15. © ZOZO, Inc. Google Play Console上で権限を付与する 15 ユーザーの権限付与後に アプリの権限も付与することができる

  16. © ZOZO, Inc. 実際のコード 16

  17. © ZOZO, Inc. 17 実際のコード トリガー設定 ビルド Keystoreをデコード App Bundle作成

    全体フロー サービスアカウント作成 Slack通知設定 デプロイ
  18. © ZOZO, Inc. name: Deploy Google Play Console on: pull_request:

    branches: - main types: [closed] 
 18 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  19. © ZOZO, Inc. jobs: build: runs-on: ubuntu-latest steps: - name:

    Checkout uses: actions/checkout@v2 - name: set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Create Empty local.properties for ci run: echo > local.properties - name: Displays the Android dependencies of the project run: ./gradlew androidDependencies 19 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  20. © ZOZO, Inc. - name: Decode Keystore run: echo ${{

    secrets.ENCODED_RELEASE_KEYSTORE }} | base64 --decode > ${{ test.keystore }} 20 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  21. © ZOZO, Inc. - name: Generate AAB run: ./gradlew :app:bundleRelease

    env: RELEASE_KEYSTORE_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} RELEASE_KEYSTORE_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} 21 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  22. © ZOZO, Inc. - name: Create service_account.json id: createServiceAccount run:

    echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json 22 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  23. © ZOZO, Inc. - name: Deploy to Play Store id:

    deploy uses: r0adkll/upload-google-play@v1.0.15 with: serviceAccountJson: service_account.json packageName: com.test.deplaoy.app releaseFile: app/build/outputs/bundle/googlePlayRelease/app-googlePlay-release.aab track: beta whatsNewDirectory: whatsnew/ 23 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  24. © ZOZO, Inc. - uses: 8398a7/action-slack@v2.5.2 if: failure() with: status:

    ${{ job.status }} text: リリースビルドが失敗しました。確認をお願いします。 mention: 'here' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} - uses: 8398a7/action-slack@v2.5.2 if: success() with: status: ${{ job.status }} text: リリースビルドが完了しました! env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} 24 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
  25. © ZOZO, Inc. アップロード後の運用 25

  26. © ZOZO, Inc. クローズドテストが優秀! 26 QA クローズドテスト (beta) 本番リリース クローズドテストを招待したユーザーで確認可能!

  27. © ZOZO, Inc. リリース前レポートで事前にエラーを発見できる 27 リリース前に致命的なバグを 発見することができる!

  28. © ZOZO, Inc. 今後の課題 28

  29. © ZOZO, Inc. 今後の課題 ✔ 自動化のツールは豊富にあるので環境や目的に合わせて使い分けることが必要 ✔ リリースノートをGoogle スプレッドシートから取得して自動化したい ✔

    Gradleの理解があるのであればGradle Play Publisherがメジャーなのでベター 29
  30. None