gplay-rollout-management

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Staged Rollout Management

分阶段发布管理

Use this skill when you need to manage gradual releases on Google Play.
当你需要在Google Play上管理渐进式发布时,可以使用此技能。

What is Staged Rollout?

什么是分阶段发布?

Staged rollout releases your app to a percentage of users, allowing you to:
  • Monitor crash rates and reviews before full release
  • Catch critical bugs with limited user impact
  • Gradually increase distribution as confidence grows
分阶段发布会将应用推送给一定比例的用户,让你能够:
  • 在全量发布前监控崩溃率和用户评价
  • 以有限的用户影响发现严重bug
  • 随着信心提升逐步扩大分发范围

Start a Staged Rollout

启动分阶段发布

During initial release

初始发布时

bash
gplay release \
  --package com.example.app \
  --track production \
  --bundle app-release.aab \
  --rollout 10
This releases to 10% of users.
bash
gplay release \
  --package com.example.app \
  --track production \
  --bundle app-release.aab \
  --rollout 10
该命令会将应用推送给10%的用户。

Promote with rollout

带发布比例的版本晋升

bash
gplay promote \
  --package com.example.app \
  --from beta \
  --to production \
  --rollout 25
bash
gplay promote \
  --package com.example.app \
  --from beta \
  --to production \
  --rollout 25

Increase Rollout Percentage

提升发布比例

bash
undefined
bash
undefined

Increase to 25%

提升至25%

gplay rollout update
--package com.example.app
--track production
--rollout 25
gplay rollout update
--package com.example.app
--track production
--rollout 25

Increase to 50%

提升至50%

gplay rollout update
--package com.example.app
--track production
--rollout 50
gplay rollout update
--package com.example.app
--track production
--rollout 50

Increase to 100% (or use complete)

提升至100%(或使用complete命令)

gplay rollout update
--package com.example.app
--track production
--rollout 100
undefined
gplay rollout update
--package com.example.app
--track production
--rollout 100
undefined

Halt Rollout

暂停发布

Pause distribution if issues are detected:
bash
gplay rollout halt \
  --package com.example.app \
  --track production
Effect:
  • Stops further distribution
  • Existing users keep the update
  • New users don't receive the update
如果检测到问题,暂停分发:
bash
gplay rollout halt \
  --package com.example.app \
  --track production
效果:
  • 停止进一步分发
  • 已更新的用户保留当前版本
  • 新用户不会收到更新

Resume Rollout

恢复发布

Resume after fixing issues:
bash
gplay rollout resume \
  --package com.example.app \
  --track production
修复问题后恢复发布:
bash
gplay rollout resume \
  --package com.example.app \
  --track production

Complete Rollout

完成全量发布

Release to 100% of users:
bash
gplay rollout complete \
  --package com.example.app \
  --track production
推送给100%的用户:
bash
gplay rollout complete \
  --package com.example.app \
  --track production

Check Rollout Status

查看发布状态

bash
gplay tracks get \
  --package com.example.app \
  --track production \
  | jq '.releases[0].userFraction'
bash
gplay tracks get \
  --package com.example.app \
  --track production \
  | jq '.releases[0].userFraction'

Recommended Rollout Strategy

推荐的发布策略

Conservative (7-day rollout)

保守型(7天发布)

bash
undefined
bash
undefined

Day 1: 10%

第1天:10%

gplay release --package com.example.app --track production --bundle app.aab --rollout 10
gplay release --package com.example.app --track production --bundle app.aab --rollout 10

Day 2: 25% (monitor crash rate)

第2天:25%(监控崩溃率)

gplay rollout update --package com.example.app --track production --rollout 25
gplay rollout update --package com.example.app --track production --rollout 25

Day 3: 50%

第3天:50%

gplay rollout update --package com.example.app --track production --rollout 50
gplay rollout update --package com.example.app --track production --rollout 50

Day 5: 75%

第5天:75%

gplay rollout update --package com.example.app --track production --rollout 75
gplay rollout update --package com.example.app --track production --rollout 75

Day 7: 100%

第7天:100%

gplay rollout complete --package com.example.app --track production
undefined
gplay rollout complete --package com.example.app --track production
undefined

Aggressive (3-day rollout)

激进型(3天发布)

bash
undefined
bash
undefined

Day 1: 25%

第1天:25%

gplay release --package com.example.app --track production --bundle app.aab --rollout 25
gplay release --package com.example.app --track production --bundle app.aab --rollout 25

Day 2: 50%

第2天:50%

gplay rollout update --package com.example.app --track production --rollout 50
gplay rollout update --package com.example.app --track production --rollout 50

Day 3: 100%

第3天:100%

gplay rollout complete --package com.example.app --track production
undefined
gplay rollout complete --package com.example.app --track production
undefined

Cautious (for critical apps)

谨慎型(适用于关键应用)

bash
undefined
bash
undefined

Day 1: 5%

第1天:5%

gplay release --package com.example.app --track production --bundle app.aab --rollout 5
gplay release --package com.example.app --track production --bundle app.aab --rollout 5

Day 2: 10% (monitor carefully)

第2天:10%(仔细监控)

gplay rollout update --package com.example.app --track production --rollout 10
gplay rollout update --package com.example.app --track production --rollout 10

Day 3: 25%

第3天:25%

gplay rollout update --package com.example.app --track production --rollout 25
gplay rollout update --package com.example.app --track production --rollout 25

Day 5: 50%

第5天:50%

gplay rollout update --package com.example.app --track production --rollout 50
gplay rollout update --package com.example.app --track production --rollout 50

Day 7: 75%

第7天:75%

gplay rollout update --package com.example.app --track production --rollout 75
gplay rollout update --package com.example.app --track production --rollout 75

Day 10: 100%

第10天:100%

gplay rollout complete --package com.example.app --track production
undefined
gplay rollout complete --package com.example.app --track production
undefined

Monitoring During Rollout

发布期间的监控

Check crash rate

查看崩溃率

Use Play Console → Quality → Android vitals
使用Play Console → 质量 → Android应用性能(Android vitals)

Monitor reviews

监控用户评价

bash
undefined
bash
undefined

Get recent reviews

获取近期评价

gplay reviews list
--package com.example.app
--paginate
| jq '.reviews[] | select(.createdTime > "2025-02-05") | {rating, text: .comments[0].userComment.text}'
undefined
gplay reviews list
--package com.example.app
--paginate
| jq '.reviews[] | select(.createdTime > "2025-02-05") | {rating, text: .comments[0].userComment.text}'
undefined

Filter 1-star reviews

筛选1星评价

bash
gplay reviews list \
  --package com.example.app \
  | jq '.reviews[] | select(.rating == 1) | .comments[0].userComment.text'
bash
gplay reviews list \
  --package com.example.app \
  | jq '.reviews[] | select(.rating == 1) | .comments[0].userComment.text'

Decision Matrix

决策矩阵

MetricAction
Crash rate < 1%Continue rollout
Crash rate 1-2%Halt, investigate
Crash rate > 2%Halt, rollback if possible
1-star reviews spikeHalt, investigate
ANR rate spikeHalt, investigate
No issues after 24hIncrease rollout
指标行动
崩溃率 < 1%继续发布
崩溃率 1-2%暂停,调查问题
崩溃率 > 2%暂停,如有可能则回滚
1星评价激增暂停,调查问题
ANR率激增暂停,调查问题
24小时内无问题扩大发布比例

Rollback Strategy

回滚策略

Google Play doesn't support automatic rollback, but you can:
Google Play不支持自动回滚,但你可以采取以下方式:

Option 1: Upload hotfix

方案1:上传热修复包

bash
undefined
bash
undefined

Build hotfix with higher version code

构建版本号更高的热修复包

./gradlew bundleRelease
./gradlew bundleRelease

Release hotfix immediately to 100%

立即全量发布热修复包

gplay release
--package com.example.app
--track production
--bundle app-hotfix.aab
undefined
gplay release
--package com.example.app
--track production
--bundle app-hotfix.aab
undefined

Option 2: Promote previous version

方案2:晋升旧版本

This requires the previous version still be in beta track:
bash
gplay promote \
  --package com.example.app \
  --from beta \
  --to production
此方案要求旧版本仍在beta渠道中:
bash
gplay promote \
  --package com.example.app \
  --from beta \
  --to production

Best Practices

最佳实践

  1. Always start with <20% - Catch issues early
  2. Monitor for 24 hours between increases
  3. Have a hotfix plan - Be ready to fix critical bugs quickly
  4. Set up alerts - Monitor crash rates automatically
  5. Test thoroughly in beta - Reduce production issues
  6. Communicate with users - Update release notes
  7. Don't rush - Gradual rollout is for safety
  1. 始终从<20%的比例开始 - 尽早发现问题
  2. 每次提升比例后监控24小时
  3. 制定热修复计划 - 随时准备快速修复严重bug
  4. 设置告警 - 自动监控崩溃率
  5. 在beta渠道充分测试 - 减少生产环境问题
  6. 与用户沟通 - 更新发布说明
  7. 不要急于求成 - 分阶段发布是为了保障安全

Common Mistakes to Avoid

需避免的常见错误

Don't:
  • Jump from 10% to 100% immediately
  • Ignore crash rate increases
  • Roll out during weekends/holidays (slower monitoring)
  • Skip beta testing phase
Do:
  • Monitor crash rates constantly
  • Have team available during rollout
  • Prepare hotfix in advance
  • Communicate expected timeline to stakeholders
不要:
  • 直接从10%跳至100%
  • 忽略崩溃率的上升
  • 在周末/节假日发布(监控效率更低)
  • 跳过beta测试阶段
应该:
  • 持续监控崩溃率
  • 发布期间安排团队待命
  • 提前准备热修复包
  • 向相关人员传达预期时间线

Automation Example

自动化示例

CI/CD with automated rollout

带自动发布的CI/CD

yaml
undefined
yaml
undefined

.github/workflows/rollout.yml

.github/workflows/rollout.yml

name: Automated Rollout
on: schedule: - cron: '0 9 * * *' # Daily at 9 AM
jobs: increase-rollout: runs-on: ubuntu-latest steps: - name: Get current rollout id: current run: | CURRENT=$(gplay tracks get --package $PACKAGE | jq -r '.releases[0].userFraction') echo "fraction=$CURRENT" >> $GITHUB_OUTPUT
  - name: Increase rollout
    if: steps.current.outputs.fraction < 1.0
    run: |
      NEW_FRACTION=$(echo "${{ steps.current.outputs.fraction }} + 0.25" | bc)
      gplay rollout update --package $PACKAGE --track production --rollout $NEW_FRACTION
undefined
name: Automated Rollout
on: schedule: - cron: '0 9 * * *' # 每天上午9点
jobs: increase-rollout: runs-on: ubuntu-latest steps: - name: 获取当前发布比例 id: current run: | CURRENT=$(gplay tracks get --package $PACKAGE | jq -r '.releases[0].userFraction') echo "fraction=$CURRENT" >> $GITHUB_OUTPUT
  - name: 提升发布比例
    if: steps.current.outputs.fraction < 1.0
    run: |
      NEW_FRACTION=$(echo "${{ steps.current.outputs.fraction }} + 0.25" | bc)
      gplay rollout update --package $PACKAGE --track production --rollout $NEW_FRACTION
undefined

Support

支持

For manual rollout control, always use the Google Play Console UI as a backup.
如需手动控制发布,始终可以将Google Play Console UI作为备用方案。