Skip to content
Β 
Β 

Latest commit

Β 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Play Console CLI

Play Console CLI

Ship Android apps from your terminal

Latest Release Downloads CI Go License

No browser. No clicking. Just ship.

gpc bundles upload --file app.aab --track production

Install Β· Quick Start Β· Commands Β· CI/CD


✨ Why Developers Love GPC

😀 The Old Way πŸš€ The GPC Way
Open browser, navigate menus, wait... gpc bundles upload --track internal
Copy-paste release notes manually gpc listings sync --dir ./metadata/
Check reviews one by one gpc reviews list --min-rating 1 | jq
Complex CI/CD setup Single binary + env vars
"Is it uploaded yet?" Instant feedback

Inspired by App Store Connect CLI β€” the same philosophy, now for Android.


πŸ“¦ Installation

# Homebrew (recommended)
brew tap AndroidPoet/tap && brew install playconsole-cli

# Install script (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash

# Build from source
git clone https://github.com/AndroidPoet/playconsole-cli.git
cd playconsole-cli && make build

After install, you can use either playconsole-cli or the shorter alias gpc.


⚑ Quick Start

1. Create a service account (Google Cloud Console)

mkdir -p ~/.config/gpc
mv ~/Downloads/your-key.json ~/.config/gpc/service-account.json
chmod 600 ~/.config/gpc/service-account.json

2. Enable the API β†’ Enable Google Play Android Developer API

3. Grant access in Play Console API Settings

4. Configure & verify

gpc auth login --credentials ~/.config/gpc/service-account.json
gpc apps list  # See your apps

5. Deploy! πŸŽ‰

gpc bundles upload --file app.aab --track internal
gpc tracks promote --from internal --to production --rollout 10

🎯 Commands

πŸ“€ Release Management

gpc bundles upload --file app.aab --track internal    # Upload
gpc tracks list                                        # List tracks
gpc tracks promote --from internal --to beta           # Promote
gpc tracks update --track production --rollout 50     # Staged rollout
gpc tracks halt --track production                    # Emergency halt

πŸͺ Store Presence

gpc listings sync --dir ./metadata/                   # Sync all listings
gpc listings update --locale en-US --title "My App"   # Update listing
gpc images sync --dir ./screenshots/                  # Sync screenshots

⭐ Reviews

gpc reviews list --min-rating 1 --max-rating 2        # Negative reviews
gpc reviews reply --review-id "gp:..." --text "Thanks!"
gpc reviews list | jq '[.[] | select(.rating == 5)]' # Filter with jq

πŸ’° Monetization

gpc products list                                      # In-app products
gpc subscriptions list                                 # Subscriptions
gpc purchases verify --token "..." --product-id premium

πŸ“Š Analytics & Vitals

gpc vitals overview                                    # Health summary
gpc vitals crashes --days 7                            # Crash metrics
gpc vitals anr --days 30                               # ANR metrics

πŸ“± Devices

gpc devices list                                       # Supported devices
gpc devices stats                                      # Device distribution

πŸ“ˆ Reports

gpc reports list                                       # Available reports
gpc reports types                                      # Report type info

πŸ§ͺ Testing

gpc testing internal-sharing upload --file app.aab   # Instant test link
gpc testing testers add --track beta --email "dev@company.com"

πŸ‘₯ Team

gpc users list
gpc users grant --email "dev@company.com" --role releaseManager

πŸ”„ CI/CD Integration

GitHub Actions

name: Deploy to Play Store

on:
  push:
    tags: ['v*']

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build
        run: ./gradlew bundleRelease

      - name: Install GPC
        run: |
          curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash
          echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Deploy
        env:
          GPC_CREDENTIALS_B64: ${{ secrets.PLAY_CREDENTIALS }}
          GPC_PACKAGE: com.yourcompany.app
        run: |
          gpc bundles upload --file app/build/outputs/bundle/release/app-release.aab --track internal
          gpc tracks promote --from internal --to production --rollout 10

Encode Credentials for CI

base64 < service-account.json | pbcopy  # macOS
base64 < service-account.json | xclip   # Linux
# Add as GPC_CREDENTIALS_B64 secret

βš™οΈ Environment Variables

Variable Description
GPC_CREDENTIALS_PATH Path to service account JSON
GPC_CREDENTIALS_B64 Base64-encoded credentials (CI)
GPC_PACKAGE Default package name
GPC_PROFILE Auth profile to use
GPC_OUTPUT Format: json | table | tsv

🎨 Output Formats

gpc tracks list                    # JSON (default, for scripting)
gpc tracks list --pretty           # Pretty JSON
gpc tracks list --output table     # ASCII table
gpc tracks list --output tsv       # Tab-separated

πŸ”’ Security

  • Credentials stored with 0600 permissions
  • Service account keys never logged
  • Base64 encoding for CI/CD secrets
  • No credentials in command history

πŸ† Wall of Apps

Apps shipped using Play Console CLI:

App Creator
Wally @AndroidPoet
πŸš€ Add your app to the Wall!

Using GPC to ship your app? Get featured here!

  1. Fork this repo
  2. Edit docs/wall-of-apps.json
  3. Add your app:
{
  "app": "Your App Name",
  "link": "https://play.google.com/store/apps/details?id=your.package",
  "creator": "YourGitHubUsername"
}
  1. Submit a PR!

🀝 Contributing

PRs welcome! Please open an issue first to discuss major changes.

make build    # Build
make test     # Test
make lint     # Lint

πŸ“„ License

MIT


⬆ Back to top

Not affiliated with Google. Google Play is a trademark of Google LLC.

If GPC saved you time, give it a ⭐

Releases

Sponsor this project

Packages

Contributors

Languages