Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
GitHub Actionsを使用してGoogle Play Consoleに自動アップロード
changfu
May 22, 2022
Technology
0
410
GitHub Actionsを使用してGoogle Play Consoleに自動アップロード
changfu
May 22, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
Compose の LazyColumn パフォーマンス改善で取り組んだこと
tomoya0x00
0
210
誰が正解を知っているのか / Who knows the right answer
takaking22
1
210
MRTK3 - DataBinding and Theming 入門
futo23
0
130
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
0
350
ハッカー飯に New Relic を導入して実践した3つのこと
nobuakikikuchi
0
160
Internet Explorer は Microsoft Edge へ - IE の歩みとこれから -
yuhara0928
1
3.4k
ソフトウェアライセンス 2022 / Software License 2022
cybozuinsideout
PRO
1
790
Amazon ECRに無駄なコストがかかっていた
iwamot
0
150
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
140
Well-organized Transaction Script - リファクタリングの妥協的手法 -
qsona
4
390
さいきんのRaspberry Pi。 / osc22do-rpi
akkiesoft
4
4.1k
コミュニティを育てて会社を変える
shimobayashi
0
1.1k
Featured
See All Featured
Design by the Numbers
sachag
271
17k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
GraphQLとの向き合い方2022年版
quramy
16
8.2k
Automating Front-end Workflow
addyosmani
1351
200k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
KATA
mclloyd
7
8.7k
The Mythical Team-Month
searls
209
39k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
269
11k
Transcript
GitHub Actionsを使用して Google Play Consoleに自動アップロード 株式会社ZOZO ブランドソリューション開発本部 WEAR部 Androidブロック 武永 芙侑香
Copyright © ZOZO, Inc.
© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 WEAR部 Androidブロック 武永 芙侑香 2021年8月入社 福井でエンジニアをしていましたが東京に憧れて上京。ベン
チャー企業でライブコマースアプリを開発後、ZOZOに入社 しました。 Androidアプリ開発経験が長いです。 2
© ZOZO, Inc. https://wear.jp/ 3 • ファッションコーディネートアプリ • 1,600万ダウンロード突破、コーディネート投稿総数は1,100万件以上 (2022年4月末時点)
• ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デ ザイナー・インフルエンサーといった各界著名人も参加
© ZOZO, Inc. アジェンダ 4 はじめに 導入方法 実際のコード アップロード後の運用 今後の課題
© ZOZO, Inc. はじめに 5
© ZOZO, Inc. GitHub Actionsでの 自動化進めてますか? 6
© ZOZO, Inc. GitHub Actionsを用いて行う自動化のメリット • 人為的ミスの回避 / 手動で作業を行う必要がない •
作業の効率化 / ストアアップロードに使っていた作業時間を他の作業にあてることができる • ブランチ運用にも対応 / トリガーブランチの設定を豊富に行える 7
© ZOZO, Inc. 導入方法 8
© ZOZO, Inc. 9 r0adkll/upload-google-play • GitHub Actionsで利用できるライブラリで導入しやすい • 段階的公開や、クローズドテストにも対応している
使用するライブラリ
© ZOZO, Inc. .github/workflows直下ファイルに追加 10
© ZOZO, Inc. リポジトリから参照するsecretの追加 1. GITHUB_TOKEN* 2. ENCODED_RELEASE_KEYSTORE* 3. KEYSTORE_PASSWORD*
4. KEY_PASSWORD* 5. SERVICE_ACCOUNT_JSON* ※上記は必須 11
© ZOZO, Inc. Google Cloud Platformでサービスアカウントを作成する 12 ※以降Google Cloud PlatformのことはGCPと省略します
ロールは『参照者』以上に設定 作成したサービスアカウントを入力
© ZOZO, Inc. サービスアカウントの秘密鍵を作成する 13 作成が完了したら jsonファイルがダウンロードされるので そのjsonをシークレットに追加する ぜん 秘密鍵は再度ダウンロードできないので注意!
© ZOZO, Inc. 作成したユーザーを招待する 14 GooglePlayConsoleのAPIアクセスから 連携できるアカウントが表示されるので そこから権限を付与
© ZOZO, Inc. Google Play Console上で権限を付与する 15 ユーザーの権限付与後に アプリの権限も付与することができる
© ZOZO, Inc. 実際のコード 16
© ZOZO, Inc. 17 実際のコード トリガー設定 ビルド Keystoreをデコード App Bundle作成
全体フロー サービスアカウント作成 Slack通知設定 デプロイ
© ZOZO, Inc. name: Deploy Google Play Console on: pull_request:
branches: - main types: [closed] 18 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
© 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通知設定 デプロイ
© ZOZO, Inc. - name: Decode Keystore run: echo ${{
secrets.ENCODED_RELEASE_KEYSTORE }} | base64 --decode > ${{ test.keystore }} 20 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
© 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通知設定 デプロイ
© ZOZO, Inc. - name: Create service_account.json id: createServiceAccount run:
echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json 22 トリガー設定 ビルド Keystoreをデコード App Bundle作成 サービスアカウント作成 Slack通知設定 デプロイ
© 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通知設定 デプロイ
© 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通知設定 デプロイ
© ZOZO, Inc. アップロード後の運用 25
© ZOZO, Inc. クローズドテストが優秀! 26 QA クローズドテスト (beta) 本番リリース クローズドテストを招待したユーザーで確認可能!
© ZOZO, Inc. リリース前レポートで事前にエラーを発見できる 27 リリース前に致命的なバグを 発見することができる!
© ZOZO, Inc. 今後の課題 28
© ZOZO, Inc. 今後の課題 ✔ 自動化のツールは豊富にあるので環境や目的に合わせて使い分けることが必要 ✔ リリースノートをGoogle スプレッドシートから取得して自動化したい ✔
Gradleの理解があるのであればGradle Play Publisherがメジャーなのでベター 29
None