Incorrect bundle is uploaded if gradle action results in UP-TO-DATE build
jameswhiteut opened this issue · 0 comments
This one might not entirely be fastlanes fault but I'm reporting it since it will most likely trip someone else up in the future.
As part of our build process we have two lanes, one to upload builds to Google Play (gplay
), and one to upload builds to Firebase App Distribution (firebase
). These are included in the fastlane environment below.
Our build runs the gplay
lane twice first, with the stage
and prod
flavours specified (in that order). It then runs the firebase
lane with the stage
flavour specified.
Despite running the gradle
action as part of the firebase
lane, GRADLE_AAB_OUTPUT_PATH
still references the output of the gplay
lane from earlier, which is a prod
build. This happens because the stage
build is completely cached by gradle and the build artifact is not re-written to disk, and based on https://github.com/fastlane/fastlane/blob/master/fastlane/lib/fastlane/actions/gradle.rb the modified timestamp of the AAB files are used to determine what ends up in GRADLE_AAB_OUTPUT_PATH
.
I'm honestly not sure what fastlane can do to fix this, but it's certainly misleading as you'd expect GRADLE_AAB_OUTPUT_PATH
and similar variables to be updated based on the previous builds no matter whether they were cached by gradle or not.
✅ fastlane environment ✅
Stack
Key | Value |
---|---|
OS | 14.4.1 |
Ruby | 3.3.0 |
Bundler? | true |
Git | git version 2.45.0 |
Installation Source | ~/.rbenv/versions/3.3.0/bin/fastlane |
Host | macOS 14.4.1 (23E224) |
Ruby Lib Dir | ~/.rbenv/versions/3.3.0/lib |
OpenSSL Version | OpenSSL 3.2.1 30 Jan 2024 |
Is contained | false |
Is homebrew | false |
Is installed via Fabric.app | false |
Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
Xcode Version | 15.3 |
Swift Version | 5.10 |
System Locale
Variable | Value | |
---|---|---|
LANG | en_GB.UTF-8 | ✅ |
LC_ALL | ||
LANGUAGE |
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
ENV['SUPPLY_UPLOAD_MAX_RETRIES']='10'
default_platform(:android)
def gradle_properties
if ENV["MAVEN_CREDENTIALS_USR"] && ENV["MAVEN_CREDENTIALS_PSW"]
return {
"mavenUsername" => ENV["MAVEN_CREDENTIALS_USR"],
"mavenPassword" => ENV["MAVEN_CREDENTIALS_PSW"]
}
else
return {}
end
end
platform :android do
desc "Upload an AAB to Google Play"
lane :gplay do |options|
gradle(
task: "app:bundle",
flavor: options[:variant].capitalize(),
build_type: "Release",
properties: gradle_properties()
)
supply(
track: "production",
release_status: "draft",
aab: lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH],
skip_upload_apk: true,
skip_upload_screenshots: true,
skip_upload_images: true,
skip_upload_metadata: true,
json_key: ".service_accounts/" + options[:service_account] + ".json",
package_name: options[:base_app_identifier] + (options[:variant] != "prod" ? "." + options[:variant] : "")
)
end
desc "Upload an AAB or APK to Firebase App Distribution"
lane :firebase do |options|
artifact_type = options[:artifact_type] || "AAB"
gradle(
task: (artifact_type == "APK" ? "app:assemble" : "app:bundle"),
flavor: options[:variant].capitalize(),
build_type: "Release",
properties: gradle_properties()
)
artifact_path = lane_context[artifact_type == "APK" ? lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] : lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH]]
firebase_app_distribution(
app: options[:firebase_app_id],
android_artifact_type: artifact_type,
android_artifact_path: artifact_path,
groups: options[:firebase_tester_groups],
service_credentials_file: ".service_accounts/" + options[:service_account] + ".json"
)
end
end
No Appfile found
fastlane gems
Gem | Version | Update-Status |
---|---|---|
fastlane | 2.220.0 | ✅ Up-To-Date |
Loaded fastlane plugins:
Plugin | Version | Update-Status |
---|---|---|
fastlane-plugin-firebase_app_distribution | 0.9.1 | ✅ Up-To-Date |
Loaded gems
Gem | Version |
---|---|
error_highlight | 0.6.0 |
did_you_mean | 1.6.3 |
syntax_suggest | 2.0.0 |
bundler | 2.5.9 |
pathname | 0.3.0 |
rake | 13.2.1 |
base64 | 0.2.0 |
nkf | 0.2.0 |
rexml | 3.2.6 |
CFPropertyList | 3.0.7 |
public_suffix | 5.0.5 |
addressable | 2.8.6 |
artifactory | 3.0.17 |
atomos | 0.1.3 |
aws-eventstream | 1.3.0 |
aws-partitions | 1.925.0 |
aws-sigv4 | 1.8.0 |
jmespath | 1.6.2 |
aws-sdk-core | 3.194.2 |
aws-sdk-kms | 1.80.0 |
aws-sdk-s3 | 1.149.1 |
babosa | 1.0.4 |
claide | 1.1.0 |
colored | 1.2 |
colored2 | 3.1.2 |
highline | 2.0.3 |
commander | 4.6.0 |
declarative | 0.0.20 |
digest-crc | 0.6.5 |
domain_name | 0.6.20240107 |
dotenv | 2.8.1 |
emoji_regex | 3.2.3 |
excon | 0.110.0 |
faraday-em_http | 1.0.0 |
faraday-em_synchrony | 1.0.0 |
faraday-excon | 1.1.0 |
faraday-httpclient | 1.0.1 |
multipart-post | 2.4.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.3 |
http-cookie | 1.0.5 |
faraday-cookie_jar | 0.0.7 |
faraday_middleware | 1.2.0 |
fastimage | 2.3.1 |
gh_inspector | 1.1.3 |
jwt | 2.8.1 |
multi_json | 1.15.0 |
os | 1.1.4 |
signet | 0.19.0 |
googleauth | 1.8.1 |
httpclient | 2.8.3 |
mini_mime | 1.1.5 |
trailblazer-option | 0.1.2 |
uber | 0.1.0 |
representable | 3.2.0 |
retriable | 3.1.2 |
google-apis-core | 0.11.3 |
google-apis-androidpublisher_v3 | 0.54.0 |
google-apis-playcustomapp_v1 | 0.13.0 |
google-cloud-env | 1.6.0 |
google-apis-iamcredentials_v1 | 0.17.0 |
google-apis-storage_v1 | 0.31.0 |
google-cloud-errors | 1.4.0 |
google-cloud-core | 1.7.0 |
google-cloud-storage | 1.47.0 |
json | 2.7.2 |
mini_magick | 4.12.0 |
naturally | 2.2.1 |
optparse | 0.5.0 |
plist | 3.7.1 |
rubyzip | 2.3.2 |
security | 0.1.5 |
simctl | 1.6.10 |
terminal-notifier | 2.0.0 |
unicode-display_width | 2.5.0 |
terminal-table | 3.0.2 |
tty-screen | 0.8.2 |
tty-cursor | 0.7.1 |
tty-spinner | 0.9.3 |
word_wrap | 1.0.0 |
nanaimo | 0.3.0 |
xcodeproj | 1.24.0 |
rouge | 2.0.7 |
xcpretty | 0.3.0 |
xcpretty-travis-formatter | 1.0.1 |
google-apis-firebaseappdistribution_v1 | 0.3.0 |
google-apis-firebaseappdistribution_v1alpha | 0.2.0 |
fastlane-plugin-firebase_app_distribution | 0.9.1 |
generated on: 2024-05-09