diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 86bfa195cd75..722bbce5cd94 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -137,7 +137,7 @@ jobs: - name: Setup Node id: setup-node uses: ./.github/actions/composite/setupNode - with: + with: IS_HYBRID_BUILD: 'true' - name: Run grunt build @@ -166,6 +166,7 @@ jobs: env: OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} run: | + op document get --output ./firebase.json firebase.json op document get --output ./upload-key.keystore upload-key.keystore op document get --output ./android-fastlane-json-key.json android-fastlane-json-key.json # Copy the keystore to the Android directory for Fullstory @@ -230,6 +231,10 @@ jobs: env: BROWSERSTACK: ${{ secrets.BROWSERSTACK }} + - name: Upload Android build to Firebase distribution + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane android upload_firebase_distribution + - name: Upload Android build artifact if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} uses: actions/upload-artifact@v4 @@ -350,6 +355,15 @@ jobs: max_attempts: 5 command: scripts/pod-install.sh + - name: Install 1Password CLI + uses: 1password/install-cli-action@v1 + + - name: Load files from 1Password + env: + OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} + run: | + op document get --output ./firebase.json firebase.json + - name: Decrypt AppStore profile run: cd ios && gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output NewApp_AppStore.mobileprovision NewApp_AppStore.mobileprovision.gpg env: @@ -393,6 +407,10 @@ jobs: env: BROWSERSTACK: ${{ secrets.BROWSERSTACK }} + - name: Upload iOS build to Firebase distribution + if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} + run: bundle exec fastlane ios upload_firebase_distribution + - name: Upload iOS sourcemaps artifact if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} uses: actions/upload-artifact@v4 @@ -451,7 +469,7 @@ jobs: - name: Setup Node id: setup-node uses: ./.github/actions/composite/setupNode - with: + with: IS_HYBRID_BUILD: 'true' - name: Setup Ruby diff --git a/.gitignore b/.gitignore index 3e899e3175ba..58e74d21073c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ DerivedData *.p12 *.mobileprovision ios-fastlane-json-key.json +firebase.json **/.xcode.env.local # Android/IntelliJ diff --git a/Gemfile.lock b/Gemfile.lock index 3c0202ff325c..53a966923ee9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -165,6 +165,9 @@ GEM apktools (~> 0.7) aws-sdk-s3 (~> 1) mime-types (~> 3.3) + fastlane-plugin-firebase_app_distribution (0.10.0) + google-apis-firebaseappdistribution_v1 (~> 0.3.0) + google-apis-firebaseappdistribution_v1alpha (~> 0.2.0) fastlane-sirp (1.0.0) sysrandom (~> 1.0) ffi (1.17.0) @@ -184,6 +187,10 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml + google-apis-firebaseappdistribution_v1 (0.3.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-firebaseappdistribution_v1alpha (0.2.0) + google-apis-core (>= 0.11.0, < 2.a) google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) @@ -229,7 +236,7 @@ GEM molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.4.1) - nanaimo (0.4.0) + nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) @@ -274,12 +281,12 @@ GEM uber (0.1.0) unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.27.0) + xcodeproj (1.25.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.4.0) + nanaimo (~> 0.3.0) rexml (>= 3.3.6, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) @@ -298,6 +305,7 @@ DEPENDENCIES cocoapods (= 1.15.2) fastlane (~> 2, >= 2.222.0) fastlane-plugin-aws_s3 + fastlane-plugin-firebase_app_distribution xcodeproj (< 1.26.0) xcpretty (~> 0) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index d1724e070d72..c7c0b00ea58c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -197,6 +197,16 @@ platform :android do ) end + desc "Upload app to Firebase distribution" + lane :upload_firebase_distribution do + firebase_app_distribution( + app: "1:1008697809946:android:2e48f9ffe8d0b6a2", + service_credentials_file: "./firebase.json", + android_artifact_path: ENV[KEY_GRADLE_AAB_PATH], + android_artifact_type: "AAB" + ) + end + desc "Upload HybridApp to Google Play for internal testing" lane :upload_google_play_internal_hybrid do # Google is very unreliable, so we retry a few times @@ -507,6 +517,15 @@ platform :ios do sh("echo '{\"ipa_path\": \"#{lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}\",\"html_path\": \"#{lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}\"}' > ../ios_paths.json") end + desc "Upload app to Firebase distribution" + lane :upload_firebase_distribution do + firebase_app_distribution( + app: "1:1008697809946:ios:3ffad71f664f2886", + service_credentials_file: "./firebase.json", + ipa_path: ENV[KEY_IPA_PATH], + ) + end + desc "Upload app to TestFlight" lane :upload_testflight do upload_to_testflight( diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile index c6ab0dfb46a4..3844e2a6958c 100644 --- a/fastlane/Pluginfile +++ b/fastlane/Pluginfile @@ -3,3 +3,4 @@ # Ensure this file is checked in to source control! gem 'fastlane-plugin-aws_s3' +gem 'fastlane-plugin-firebase_app_distribution'