Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub Actionsを使用してGoogle Play Consoleに自動アップロード
Search
changfu
May 22, 2022
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub Actionsを使用してGoogle Play Consoleに自動アップロード
changfu
May 22, 2022
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
55k
KAEN Company Deck
kaen
PRO
0
260
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
2
1.7k
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
1
1.2k
書籍『生成AIの安全性入門』の入門
wataoka
0
160
Digitization部 紹介資料
sansan33
PRO
2
7.8k
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
210
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
260
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
140
Continuous Delivery! It is not what you think it is
tdpauw
0
180
[RSJ26] Flow as Flow: Modeling Robot Velocity Fields as Probability Velocity Fields
keio_smilab
PRO
0
180
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
RailsConf 2023
tenderlove
30
1.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
Code Review Best Practice
trishagee
74
20k
The SEO identity crisis: Don't let AI make you average
varn
0
550
HDC tutorial
michielstock
2
840
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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/
[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通知設定 デプロイ
© 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通知設定 デプロイ
© ZOZO, Inc. アップロード後の運用 25
© ZOZO, Inc. クローズドテストが優秀! 26 QA クローズドテスト (beta) 本番リリース クローズドテストを招待したユーザーで確認可能!
© ZOZO, Inc. リリース前レポートで事前にエラーを発見できる 27 リリース前に致命的なバグを 発見することができる!
© ZOZO, Inc. 今後の課題 28
© ZOZO, Inc. 今後の課題 ✔ 自動化のツールは豊富にあるので環境や目的に合わせて使い分けることが必要 ✔ リリースノートをGoogle スプレッドシートから取得して自動化したい ✔
Gradleの理解があるのであればGradle Play Publisherがメジャーなのでベター 29
None