Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing to complete a staged rollout for a release containing a retained bundle #20997

Closed
4 tasks done
mmiani opened this issue Jan 17, 2023 · 0 comments · Fixed by #20998
Closed
4 tasks done

Failing to complete a staged rollout for a release containing a retained bundle #20997

mmiani opened this issue Jan 17, 2023 · 0 comments · Fixed by #20998

Comments

@mmiani
Copy link
Contributor

mmiani commented Jan 17, 2023

New Issue Checklist

Issue Description

Fastlane supply fails to complete the staged rollout in the Google Play Store when the release contains a retained version.

Scenario:

Bundle 1 - Rolled out 50%, version code 10114
Bundle 2 - Rolled out 100%, version code 10111, Retained

Screenshot 2023-01-17 at 3 50 57 pm

From the logs it's possible to observe that fastlane tries to complete the rollout for the retained version (Bundle 2) instead of the new version being rolled out 10114 (Bundle 1):

INFO [2023-01-17 14:42:41.66]: Updating 10111's rollout to '1.0' on track 'production'...

I dug into the code and found the potential issue, I'll open a PR to fix it.

This issue was previously mentioned in #16362 but was closed due to inactivity

Command executed
fastlane android update_rollout --env <environment_name> rollout:1.0 track:production versionCode:10114 --verbose
+------------------------------------+--------------------------------------------+
|                           Summary for supply 2.211.0                            |
+------------------------------------+--------------------------------------------+
| track                              | production                                 |
| rollout                            | 1.0                                        |
| skip_upload_apk                    | true                                       |
| skip_upload_metadata               | true                                       |
| skip_upload_images                 | true                                       |
| skip_upload_screenshots            | true                                       |
| skip_upload_changelogs             | true                                       |
| skip_upload_aab                    | true                                       |
| version_code                       | 10114                                      |
| package_name                       | <PACKAGE_NAME>                 |
| release_status                     | completed                                  |
| json_key                           | <JSON_KEY> |
| track_promote_release_status       | completed                                  |
| validate_only                      | false                                      |
| check_superseded_tracks            | false                                      |
| timeout                            | 300                                        |
| deactivate_on_promote              | true                                       |
| changes_not_sent_for_review        | false                                      |
| rescue_changes_not_sent_for_review | true                                       |
| ack_bundle_installation_warning    | false                                      |
+------------------------------------+--------------------------------------------+
Complete output when running fastlane, including the stack trace and command used
DEBUG [2023-01-17 14:42:38.93]: Fetching a new access token from Google...
INFO [2023-01-17 14:42:41.66]: Updating 10111's rollout to '1.0' on track 'production'...
E, [2023-01-17T14:42:41.994871 #56675] ERROR -- : Error - #<Google::Apis::ClientError: Invalid request status_code: 400 header: #<HTTP::Message::Headers:0x00000001072c3870 @http_version="1.1", @body_size=0, @chunked=false, @request_method="PUT", @request_uri=#<Addressable::URI:0x1b08 URI:https://androidpublisher.googleapis.com/androidpublisher/v3/applications/<package_name>/edits/03515712229595379673/tracks/production?>, @request_query=nil, @request_absolute_uri=nil, @status_code=400, @reason_phrase="Bad Request", @body_type=nil, @body_charset=nil, @body_date=nil, @body_encoding=#<Encoding:UTF-8>, @is_request=false, @header_item=[["Vary", "Origin"], ["Vary", "X-Origin"], ["Vary", "Referer"], ["Content-Type", "application/json; charset=UTF-8"], ["Content-Encoding", "gzip"], ["Date", "Tue, 17 Jan 2023 03:42:41 GMT"], ["Server", "ESF"], ["Cache-Control", "private"], ["X-XSS-Protection", "0"], ["X-Frame-Options", "SAMEORIGIN"], ["X-Content-Type-Options", "nosniff"], ["Alt-Svc", "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\""], ["Transfer-Encoding", "chunked"]], @dumped=false> body: "{\n  \"error\": {\n    \"code\": 400,\n    \"message\": \"Only one completed release is allowed.\",\n    \"status\": \"INVALID_ARGUMENT\"\n  }\n}\n">

WARN [2023-01-17 14:42:41.99]: Lane Context:
INFO [2023-01-17 14:42:41.99]: {:ENVIRONMENT=>"<environment_name>", :DEFAULT_PLATFORM=>:android, :PLATFORM_NAME=>:android, :LANE_NAME=>"android update_rollout"}
ERROR [2023-01-17 14:42:41.99]: Google Api Error: Invalid request - Only one completed release is allowed.

+------+------------------+-------------+
|           fastlane summary            |
+------+------------------+-------------+
| Step | Action           | Time (in s) |
+------+------------------+-------------+
| 1    | default_platform | 0           |
| 💥   | supply           | 3           |
+------+------------------+-------------+

ERROR [2023-01-17 14:42:42.04]: fastlane finished with errors

Environment

🚫 fastlane environment 🚫

Stack

Key Value
OS 13.0.1
Ruby 3.1.3
Bundler? false
Git git version 2.38.1
Installation Source /opt/homebrew/Cellar/fastlane/2.211.0_2/libexec/bin/fastlane
Host macOS 13.0.1 (22A400)
Ruby Lib Dir /opt/homebrew/Cellar/ruby@3.1/3.1.3_1/lib
OpenSSL Version OpenSSL 3.0.7 1 Nov 2022
Is contained false
Is homebrew true
Is installed via Fabric.app false
Xcode Path /Library/Developer/CommandLineTools/
Xcode Version
Swift Version 5.7.2

System Locale

Error
No Locale with UTF8 found 🚫

fastlane files:

`./fastlane/Fastfile`
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:android)

platform :android do

    ## App metadata ##

    # Uploads metadata to the Google Play Store.
    lane :metadata do |options|
    supply(
        skip_upload_apk: true,
        skip_upload_aab: true,
        skip_upload_changelogs: true,
        skip_upload_images: true,
        skip_upload_screenshots: true,
        metadata_path: ENV["METADATA_PATH"],
        package_name: ENV["PACKAGE_NAME"]
        )
    end

    ## App submission ##

    desc "Submits app to an specific track."
    lane :submit_release do |options|
    upload_to_play_store(
        track: options[:track],
        aab: options[:bundlePath],
        skip_upload_apk: true,
        skip_upload_metadata: true,
        skip_upload_images: true,
        skip_upload_screenshots: true,
        package_name: ENV["PACKAGE_NAME"]
        )
    end

    ## App Release ##

    desc "Staged rollout on a specific track"
    lane :staged_rollout do |options|
    supply(
          track: options[:track],
          aab: options[:bundlePath],
          rollout: options[:rollout],
          skip_upload_apk: true,
          skip_upload_metadata: false,
          skip_upload_images: true,
          skip_upload_screenshots: true,
          metadata_path: ENV["METADATA_PATH"],
          package_name: ENV["PACKAGE_NAME"],
          version_codes_to_retain: ENV["RETAINED_VERSIONS"],
          version_name: options[:versionName]
        )
    end

    desc "Update staged rollout percentage"
    lane :update_rollout do |options|
    supply(
          track: options[:track],
          rollout: options[:rollout],
          skip_upload_apk: true,
          skip_upload_metadata: true,
          skip_upload_images: true,
          skip_upload_screenshots: true,
          skip_upload_changelogs: true,
          skip_upload_aab: true,
          version_code: options[:versionCode],
          package_name: ENV["PACKAGE_NAME"]
        )
    end

    desc "Promote release from testings tracks to production"
    lane :promote_release do |options|
    supply(
          track: options[:sourceTrack],
          track_promote_to: options[:promotionTrack],
          rollout: options[:rollout],
          skip_upload_apk: true,
          skip_upload_metadata: true,
          skip_upload_images: true,
          skip_upload_screenshots: true,
          skip_upload_changelogs: true,
          skip_upload_aab: true,
          version_code:options[:versionCode],
          package_name: ENV["PACKAGE_NAME"]
        )
    end

    desc "Upload APK to Slack channel"
      lane :upload_to_slack do |options|
        file_path = options[:apkPath]
        file_name = options[:apkFileName]
        access_token = ENV["ACCESS_TOKEN"]
        channel_name = "team-android-releases"

        sh "echo Uploading " + file_name + " to Slack"
        sh "curl https://slack.com/api/files.upload -F token=\"" + access_token + "\" -F channels=\"" + channel_name + "\" -F title=\"" + file_name + "\" -F filename=\"" + file_name + "\" -F file=@" + file_path
    end

    desc "Get version codes for release version"
    lane :google_play_version_codes do |options|
    versionCode = google_play_track_version_codes(
          track: options[:track],
          package_name: ENV["PACKAGE_NAME"]
        )
    UI.message "Latest version: [#{versionCode}]"
    end

    desc "Get version name for release version"
    lane :google_play_version_names do |options|
    versionName =  google_play_track_release_names(
                    track: options[:track],
                    package_name: ENV["PACKAGE_NAME"]
                  )
    UI.message "Brand: #{ENV["BRAND_NAME"]}, versions: #{versionName}"
    end

end
`./fastlane/Appfile`
json_key_file("./src") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one

fastlane gems

Gem Version Update-Status
fastlane 2.211.0 ✅ Up-To-Date

Loaded fastlane plugins:

No plugins Loaded

Loaded gems
Gem Version
error_highlight 0.3.0
did_you_mean 1.6.1
atomos 0.1.3
rexml 3.2.5
CFPropertyList 3.0.5
claide 1.1.0
colored2 3.1.2
nanaimo 0.3.0
xcodeproj 1.22.0
rouge 2.0.7
xcpretty 0.3.0
terminal-notifier 2.0.0
unicode-display_width 1.8.0
terminal-table 1.8.0
plist 3.6.0
public_suffix 5.0.1
addressable 2.8.1
multipart-post 2.0.0
word_wrap 1.0.0
optparse 0.1.1
tty-screen 0.8.1
tty-cursor 0.7.1
tty-spinner 0.9.3
artifactory 3.0.15
babosa 1.0.4
colored 1.2
highline 2.0.3
commander 4.6.0
excon 0.96.0
faraday-em_http 1.0.0
faraday-em_synchrony 1.0.0
faraday-excon 1.1.0
faraday-httpclient 1.0.1
faraday-multipart 1.0.4
faraday-net_http 1.0.1
faraday-net_http_persistent 1.2.0
faraday-patron 1.0.0
faraday-rack 1.0.0
faraday-retry 1.0.3
ruby2_keywords 0.0.5
faraday 1.10.2
unf_ext 0.0.8.2
unf 0.1.4
domain_name 0.5.20190701
http-cookie 1.0.5
faraday-cookie_jar 0.0.7
faraday_middleware 1.2.0
fastimage 2.2.6
gh_inspector 1.1.3
json 2.6.1
mini_magick 4.12.0
naturally 2.2.1
rubyzip 2.3.2
security 0.1.3
xcpretty-travis-formatter 1.0.1
dotenv 2.8.1
bundler 2.3.26
simctl 1.6.8
jwt 2.6.0
uber 0.1.0
declarative 0.0.20
trailblazer-option 0.1.2
representable 3.2.0
retriable 3.1.2
mini_mime 1.1.2
memoist 0.16.2
multi_json 1.15.0
os 1.1.4
signet 0.17.0
googleauth 1.3.0
httpclient 2.8.3
webrick 1.7.0
google-apis-core 0.9.4
google-apis-playcustomapp_v1 0.12.0
google-apis-androidpublisher_v3 0.32.0
google-cloud-env 1.6.0
google-cloud-errors 1.3.0
google-cloud-core 1.6.0
google-apis-iamcredentials_v1 0.16.0
google-apis-storage_v1 0.19.0
rake 13.0.6
digest-crc 0.6.4
google-cloud-storage 1.44.0
emoji_regex 3.2.3
jmespath 1.6.2
aws-partitions 1.689.0
aws-eventstream 1.2.0
aws-sigv4 1.5.2
aws-sdk-core 3.168.4
aws-sdk-kms 1.61.0
aws-sdk-s3 1.117.2
set 1.0.2
forwardable 1.3.2
logger 1.5.0
pathname 0.2.0
shellwords 0.1.0
cgi 0.3.5
date 3.2.2
timeout 0.2.0
stringio 3.0.1
securerandom 0.2.0
uri 0.11.0
openssl 3.0.1
digest 3.1.0
io-nonblock 0.1.0
ipaddr 1.2.4
io-wait 0.2.1
zlib 2.1.1
resolv 0.2.1
time 0.2.0
open-uri 0.2.0
mutex_m 0.1.1
net-http 0.3.0
net-protocol 0.1.2
ostruct 0.5.2
english 0.7.1
erb 2.2.3
strscan 3.0.1
abbrev 0.1.0
io-console 0.5.11
tempfile 0.1.2
delegate 0.2.0
fileutils 1.6.0
tmpdir 0.1.2
base64 0.1.1
singleton 0.1.1
open3 0.1.1
nkf 0.1.1
prettyprint 0.1.1
pp 0.3.0
find 0.1.1
yaml 0.2.0
psych 4.0.4

generated on: 2023-01-17

@mmiani mmiani changed the title Completing staged rollout percentage when having a retaining bundle Completing staged rollout fails the release contains a retaining bundle Jan 17, 2023
@mmiani mmiani changed the title Completing staged rollout fails the release contains a retaining bundle Completing staged rollout fails when the release contains a retaining bundle Jan 17, 2023
@mmiani mmiani changed the title Completing staged rollout fails when the release contains a retaining bundle Failing to complete staged rollout for a release containing a retained bundle Jan 17, 2023
@mmiani mmiani changed the title Failing to complete staged rollout for a release containing a retained bundle Failing to complete a staged rollout for a release containing a retained bundle Jan 17, 2023
mmiani added a commit to mmiani/fastlane that referenced this issue Jan 17, 2023
Fix issue with releases containing retained versions failing to complete the staged rollout in the Google Play Store.
getaaron pushed a commit that referenced this issue Oct 28, 2023
#20998)

Fix issue with releases containing retained versions failing to complete the staged rollout in the Google Play Store.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant