Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 WEAR部 Androidブロック 武永 芙侑香 2021年8月入社 福井でエンジニアをしていましたが東京に憧れて上京。ベン チャー企業でライブコマースアプリを開発後、ZOZOに入社 しました。 Androidアプリ開発経験が長いです。 2

Slide 3

Slide 3 text

© ZOZO, Inc. https://wear.jp/
 3 ● ファッションコーディネートアプリ ● 1,600万ダウンロード突破、コーディネート投稿総数は1,100万件以上 (2022年4月末時点) ● ピックアップタグから最新のトレンドをチェック ● コーディネート着用アイテムを公式サイトで購入可能 ● WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デ ザイナー・インフルエンサーといった各界著名人も参加

Slide 4

Slide 4 text

© ZOZO, Inc. アジェンダ 4 はじめに 導入方法 実際のコード アップロード後の運用 今後の課題

Slide 5

Slide 5 text

© ZOZO, Inc. はじめに 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

© ZOZO, Inc. GitHub Actionsを用いて行う自動化のメリット • 人為的ミスの回避 / 手動で作業を行う必要がない • 作業の効率化 / ストアアップロードに使っていた作業時間を他の作業にあてることができる • ブランチ運用にも対応 / トリガーブランチの設定を豊富に行える 7

Slide 8

Slide 8 text

© ZOZO, Inc. 導入方法
 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

© ZOZO, Inc. .github/workflows直下ファイルに追加
 10

Slide 11

Slide 11 text

© ZOZO, Inc. リポジトリから参照するsecretの追加 1. GITHUB_TOKEN* 2. ENCODED_RELEASE_KEYSTORE* 3. KEYSTORE_PASSWORD* 4. KEY_PASSWORD* 5. SERVICE_ACCOUNT_JSON* ※上記は必須 11

Slide 12

Slide 12 text

© ZOZO, Inc. Google Cloud Platformでサービスアカウントを作成する 12 ※以降Google Cloud PlatformのことはGCPと省略します ロールは『参照者』以上に設定 作成したサービスアカウントを入力

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

© ZOZO, Inc. 17 実際のコード トリガー設定 ビルド Keystoreをデコード App Bundle作成 全体フロー サービスアカウント作成 Slack通知設定 デプロイ

Slide 18

Slide 18 text

© ZOZO, Inc. name: Deploy Google Play Console on: pull_request: branches: - main types: [closed] 
 18 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ

Slide 19

Slide 19 text

© 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通知設定 デプロイ

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

© 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通知設定 デプロイ

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

© ZOZO, Inc. - name: Deploy to Play Store id: deploy uses: r0adkll/[email protected] 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通知設定 デプロイ

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

© ZOZO, Inc. アップロード後の運用 25

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

© ZOZO, Inc. 今後の課題 28

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

No content