fastlane-plugin-firebase_app_distribution: iOS build succeeds but ipa file does not seem to be accessible from Firebase
I have an iOS build that I am running with CircleCI with the intention for it to be distributed to testers via Firebase.
The build succeeds and I get confirmation the ipa has been uploaded to FIrebase, the specified tester(s) get an email notification, but when they try to access the app they simply get a message saying there is no app.
The Firebase console on my end updates with a distribution and the tester information, but from what I can tell there there does not seem to be any ipa attached to the distribution.
I have ssh’d into the passing Circle build to ensure the ipa is created, and have downloaded it manually.
Please see below my Fastfile, config.yml and build log, is there something I am missing?
Fastfile:
platform :ios do
before_all do
setup_circle_ci
end
lane :beta do
match(
type: "appstore",
team_id: TEAM,
app_identifier: APP_ID,
output_path: "./builds",
keychain_name: "fastlane_tmp_keychain",
readonly: is_ci
)
settings_to_override = {
:BUNDLE_IDENTIFIER => APP_ID,
:PROVISIONING_PROFILE_SPECIFIER => PROFILE,
:DEVELOPMENT_TEAM => TEAM
}
update_project_team(
teamid: CredentialsManager::AppfileConfig.try_fetch_value(:team_id)
)
increment_build_number(xcodeproj: "MyApp.xcodeproj")
build_app(
clean: true,
export_method: "app-store",
build_path: "./builds",
output_directory: "./builds",
xcargs: settings_to_override,
scheme: "My app",
export_options: {
signingCertificate: SIGNING_CERTIFICATE,
provisioningProfiles: {
APP_ID => PROFILE
}
}
)
firebase_app_distribution(
app: FIREBASE_APP_ID,
testers: TESTER,
release_notes: "New updates to test",
ipa_path: "/Users/distiller/repo/ios/builds/myIpa.ipa",
firebase_cli_path: "/Users/distiller/repo/node_modules/.bin/firebase"
)
end
end
Circle config:
version: 2
jobs:
build:
macos:
xcode: '10.3.0'
working_directory: ~/repo
environment:
FASTLANE_LANE: beta
steps:
- checkout
- run:
# We can't set this using an image because that makes the build run in a Linux box
name: 'Manually set ruby version to 2.6.3'
command: echo "ruby-2.6.3" > ~/.ruby-version
- run:
name: install bundler
command: gem install bundler --version 2.0.1
- run: cd ./ios && bundle install
- run:
# This is necessary to ensure that native modules will compile properly
name: 'Install specific Node and NPM versions'
command: |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash
echo 'export NVM_DIR="$HOME/.nvm"' >> $BASH_ENV
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV
echo 'nvm install v10.17.0' >> $BASH_ENV
echo 'nvm alias default v10.17.0' >> $BASH_ENV
- run:
name: 'Install JS dependencies and run post-install steps'
command: npm install
- run:
name: Fastlane
command: cd ./ios && bundle exec fastlane $FASTLANE_LANE
Circle build passing:
[09:41:51]: Successfully exported and compressed dSYM file
[09:41:51]: Successfully exported and signed the ipa file:
[09:41:51]: /Users/distiller/repo/ios/builds/Converge.ipa
[09:41:51]: ---------------------------------------
[09:41:51]: --- Step: firebase_app_distribution ---
[09:41:51]: ---------------------------------------
[09:41:56]: ▸ i getting app details...
[09:41:57]: ▸ i uploading distribution...
[09:42:10]: ▸ ✔ uploaded distribution successfully
[09:42:10]: ▸ i adding release notes...
[09:42:11]: ▸ ✔ added release notes successfully
[09:42:11]: ▸ i adding testers/groups...
[09:42:11]: ▸ ✔ added testers/groups successfully
+------+---------------------------+-------------+
| fastlane summary |
+------+---------------------------+-------------+
| Step | Action | Time (in s) |
+------+---------------------------+-------------+
| 1 | default_platform | 0 |
| 2 | setup_circle_ci | 0 |
| 3 | is_ci | 0 |
| 4 | match | 2 |
| 5 | update_project_team | 0 |
| 6 | increment_build_number | 2 |
| 7 | build_app | 654 |
| 8 | firebase_app_distribution | 20 |
+------+---------------------------+-------------+
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 20
Hey @tagboola ,
we always change code at least for Flutter, because we use it for iOS build upload for a Flutter project.
Hey @rafalzawadzki @komarekw. I think I know why you may be running into this issue. For background, App Distribution has a notion of releases and binaries. For iOS, we uniquely identify a release by its version information (
CFBundleVersion,CFBundleShortVersionString) and a hash of just the app code. This hash excludes resource files such as the provisioning profile. A binary is uniquely identified by a hash of the IPA, including its resource files. For iOS ad-hoc distributions, it’s common for releases to have multiple binaries associated with them since it’s normal for developers to upload the same code with an updated provisioning profile to give testers access.In the Firebase Console, the cards you see are releases. So what may be happening is that you’re uploading a build with no code changes. If this is the case, a new release won’t be visible in the Firebase Console but the binary will be available for your testers to download.
You can confirm this by using the most recent version of the fastlane plugin. When you distribute if the output says
This IPA has been uploaded before. Skipping upload step.that means the binary is being grouped under an existing release.