From 01881d0e9041bfdbe6d8c471aec53ab8eef9ec10 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Wed, 18 Sep 2024 16:58:11 -0400 Subject: [PATCH 01/15] Genericize Android builds --- .github/workflows/release-fastlane-android.yml | 10 +++++----- WALLET.md | 6 +++--- android/.project | 2 +- android/app/.project | 2 +- android/app/build.gradle | 14 +++++++------- ...e.enc => mobilestack-release-key.keystore.enc} | Bin android/app/proguard-rules.pro | 2 +- android/app/src/androidTest/AndroidManifest.xml | 4 ++-- .../mobilestack}/mobile/DetoxTest.java | 4 ++-- .../mobilestack}/mobile/ReactNativeFlipper.java | 2 +- .../mobilestack}/mobile/ReactNativeFlipper.java | 2 +- .../src/debug/res/xml/network_security_config.xml | 4 ++-- android/app/src/main/AndroidManifest.xml | 2 +- .../mobile/FirebaseMessagingService.java | 2 +- .../mobilestack}/mobile/MainActivity.java | 2 +- .../mobilestack}/mobile/MainApplication.java | 2 +- .../mobile/UserAgentClientFactory.java | 2 +- .../mobilestack}/mobile/UserAgentInterceptor.java | 2 +- android/app/src/main/res/values/colors.xml | 6 +++--- android/app/src/main/res/values/strings.xml | 2 +- android/app/src/main/res/xml/backup_rules.xml | 6 +++--- .../mobilestack}/mobile/ReactNativeFlipper.java | 2 +- android/gradle.properties | 4 ++-- 23 files changed, 42 insertions(+), 42 deletions(-) rename android/app/{celo-release-key.keystore.enc => mobilestack-release-key.keystore.enc} (100%) rename android/app/src/androidTest/java/{org/celo => xyz/mobilestack}/mobile/DetoxTest.java (85%) rename android/app/src/androidTest/java/{org/celo => xyz/mobilestack}/mobile/ReactNativeFlipper.java (95%) rename android/app/src/debug/java/{org/celo => xyz/mobilestack}/mobile/ReactNativeFlipper.java (99%) rename android/app/src/main/java/{org/celo => xyz/mobilestack}/mobile/FirebaseMessagingService.java (97%) rename android/app/src/main/java/{org/celo => xyz/mobilestack}/mobile/MainActivity.java (99%) rename android/app/src/main/java/{org/celo => xyz/mobilestack}/mobile/MainApplication.java (98%) rename android/app/src/main/java/{org/celo => xyz/mobilestack}/mobile/UserAgentClientFactory.java (94%) rename android/app/src/main/java/{org/celo => xyz/mobilestack}/mobile/UserAgentInterceptor.java (96%) rename android/app/src/release/java/{org/celo => xyz/mobilestack}/mobile/ReactNativeFlipper.java (95%) diff --git a/.github/workflows/release-fastlane-android.yml b/.github/workflows/release-fastlane-android.yml index 0417c35daf5..e2d2935f67e 100644 --- a/.github/workflows/release-fastlane-android.yml +++ b/.github/workflows/release-fastlane-android.yml @@ -39,8 +39,8 @@ jobs: with: secrets: |- ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/ANDROID_RELEASE_KEYSTORE - CELO_RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/CELO_RELEASE_KEY_PASSWORD - CELO_RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/CELO_RELEASE_STORE_PASSWORD + MOBILESTACK_RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/MOBILESTACK_RELEASE_KEY_PASSWORD + MOBILESTACK_RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/MOBILESTACK_RELEASE_STORE_PASSWORD SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON:projects/1027349420744/secrets/GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON @@ -95,11 +95,11 @@ jobs: # TODO: use ram disk - name: Write secrets run: | - echo '${{ steps.google-secrets.outputs.ANDROID_RELEASE_KEYSTORE }}' | base64 -d > android/app/celo-release-key.keystore + echo '${{ steps.google-secrets.outputs.ANDROID_RELEASE_KEYSTORE }}' | base64 -d > android/app/mobilestack-release-key.keystore echo '${{ steps.google-secrets.outputs.GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON }}' > fastlane/google-play-service-account.json - env: - CELO_RELEASE_STORE_PASSWORD: ${{ steps.google-secrets.outputs.CELO_RELEASE_STORE_PASSWORD }} - CELO_RELEASE_KEY_PASSWORD: ${{ steps.google-secrets.outputs.CELO_RELEASE_KEY_PASSWORD }} + MOBILESTACK_RELEASE_STORE_PASSWORD: ${{ steps.google-secrets.outputs.MOBILESTACK_RELEASE_STORE_PASSWORD }} + MOBILESTACK_RELEASE_KEY_PASSWORD: ${{ steps.google-secrets.outputs.MOBILESTACK_RELEASE_KEY_PASSWORD }} EMERGE_API_TOKEN: ${{ steps.google-secrets.outputs.EMERGE_API_TOKEN }} SUPPLY_UPLOAD_MAX_RETRIES: 5 RUBYOPT: '-rostruct' # TODO: Remove when https://github.com/fastlane/fastlane/pull/21950 gets released diff --git a/WALLET.md b/WALLET.md index a5cb1839136..489eb891b61 100644 --- a/WALLET.md +++ b/WALLET.md @@ -442,9 +442,9 @@ If you have not yet created a keystore, one will be required to generate a relea ```sh cd android/app -keytool -genkey -v -keystore celo-release-key.keystore -alias celo-key-alias -storepass celoFakeReleaseStorePass -keypass celoFakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" -export CELO_RELEASE_STORE_PASSWORD=celoFakeReleaseStorePass -export CELO_RELEASE_KEY_PASSWORD=celoFakeReleaseKeyPass +keytool -genkey -v -keystore mobilestack-release-key.keystore -alias mobilestack-key-alias -storepass mobilestackFakeReleaseStorePass -keypass mobilestackFakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" +export MOBILESTACK_RELEASE_STORE_PASSWORD=mobilestackFakeReleaseStorePass +export MOBILESTACK_RELEASE_KEY_PASSWORD=mobilestackFakeReleaseKeyPass ``` ### Building an APK or Bundle diff --git a/android/.project b/android/.project index 3af26a51ee8..2138d27b9f3 100644 --- a/android/.project +++ b/android/.project @@ -1,7 +1,7 @@ celo - Project celo created by Buildship. + Project mobilestack created by Buildship. diff --git a/android/app/.project b/android/app/.project index ac485d7c3e6..507ffc2152b 100644 --- a/android/app/.project +++ b/android/app/.project @@ -1,7 +1,7 @@ app - Project app created by Buildship. + Project mobilestack created by Buildship. diff --git a/android/app/build.gradle b/android/app/build.gradle index 6f3f736def0..2927ab7c561 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -138,7 +138,7 @@ def secrets = loadProjectSecrets(project.env.get("DEFAULT_TESTNET")) android { compileSdkVersion rootProject.ext.compileSdkVersion - namespace "org.celo.mobile" + namespace "xyz.mobilestack.mobile" compileOptions { sourceCompatibility JavaVersion.VERSION_11 @@ -155,8 +155,8 @@ android { testBuildType System.getProperty('testBuildType', 'debug') testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", project.env.get("APP_DISPLAY_NAME") - resValue "string", "build_config_package", "org.celo.mobile" resValue "string", "deep_link_url_scheme", project.env.get("DEEP_LINK_URL_SCHEME") + resValue "string", "build_config_package", "xyz.mobilestack.mobile" missingDimensionStrategy 'react-native-camera', 'general' vectorDrawables.useSupportLibrary = true resValue "bool", "is_profiling_build", System.getenv("IS_PROFILING_BUILD") ?: "false" @@ -178,11 +178,11 @@ android { storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' - } else if (project.hasProperty('CELO_RELEASE_STORE_FILE')) { - storeFile file(CELO_RELEASE_STORE_FILE) - storePassword System.getenv("CELO_RELEASE_STORE_PASSWORD") - keyAlias CELO_RELEASE_KEY_ALIAS - keyPassword System.getenv("CELO_RELEASE_KEY_PASSWORD") + } else if (project.hasProperty('MOBILESTACK_RELEASE_STORE_FILE')) { + storeFile file(MOBILESTACK_RELEASE_STORE_FILE) + storePassword System.getenv("MOBILESTACK_RELEASE_STORE_PASSWORD") + keyAlias MOBILESTACK_RELEASE_KEY_ALIAS + keyPassword System.getenv("MOBILESTACK_RELEASE_KEY_PASSWORD") } } diff --git a/android/app/celo-release-key.keystore.enc b/android/app/mobilestack-release-key.keystore.enc similarity index 100% rename from android/app/celo-release-key.keystore.enc rename to android/app/mobilestack-release-key.keystore.enc diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index c9e4a45cec6..a0994fcafd7 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -20,7 +20,7 @@ -keep class com.segment.analytics.** { *; } -keep class androidx.lifecycle.DefaultLifecycleObserver --keep class org.celo.mobile.BuildConfig { *; } +-keep class xyz.mobilestack.mobile.BuildConfig { *; } -keep public class com.horcrux.svg.** {*;} -keep class com.rt2zz.reactnativecontacts.** {*;} -keepclassmembers class com.rt2zz.reactnativecontacts.** {*;} diff --git a/android/app/src/androidTest/AndroidManifest.xml b/android/app/src/androidTest/AndroidManifest.xml index 1a5040c9a0d..a553dc2c79a 100644 --- a/android/app/src/androidTest/AndroidManifest.xml +++ b/android/app/src/androidTest/AndroidManifest.xml @@ -1,4 +1,4 @@ + xmlns:tools="http://schemas.android.com/tools" package="xyz.mobilestack.mobile" android:versionCode="1" android:versionName="1.0"> - \ No newline at end of file + diff --git a/android/app/src/androidTest/java/org/celo/mobile/DetoxTest.java b/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java similarity index 85% rename from android/app/src/androidTest/java/org/celo/mobile/DetoxTest.java rename to android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java index 7fdc2af3941..71b443f2966 100644 --- a/android/app/src/androidTest/java/org/celo/mobile/DetoxTest.java +++ b/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; @@ -25,7 +25,7 @@ public void runDetoxTests() { DetoxConfig detoxConfig = new DetoxConfig(); detoxConfig.idlePolicyConfig.masterTimeoutSec = 90; detoxConfig.idlePolicyConfig.idleResourceTimeoutSec = 60; - detoxConfig.rnContextLoadTimeoutSec = (org.celo.mobile.BuildConfig.DEBUG ? 180 : 60); + detoxConfig.rnContextLoadTimeoutSec = (org.mobilestack.mobile.BuildConfig.DEBUG ? 180 : 60); Detox.runTests(mActivityRule, detoxConfig); } diff --git a/android/app/src/androidTest/java/org/celo/mobile/ReactNativeFlipper.java b/android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java similarity index 95% rename from android/app/src/androidTest/java/org/celo/mobile/ReactNativeFlipper.java rename to android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java index 4c95da05ef1..3deb7100a30 100644 --- a/android/app/src/androidTest/java/org/celo/mobile/ReactNativeFlipper.java +++ b/android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.content.Context; import com.facebook.react.ReactInstanceManager; diff --git a/android/app/src/debug/java/org/celo/mobile/ReactNativeFlipper.java b/android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java similarity index 99% rename from android/app/src/debug/java/org/celo/mobile/ReactNativeFlipper.java rename to android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java index 0c9e3045a54..136f24790ae 100644 --- a/android/app/src/debug/java/org/celo/mobile/ReactNativeFlipper.java +++ b/android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.content.Context; import com.facebook.flipper.android.AndroidFlipperClient; diff --git a/android/app/src/debug/res/xml/network_security_config.xml b/android/app/src/debug/res/xml/network_security_config.xml index f942d9e6b96..a7100348a2d 100644 --- a/android/app/src/debug/res/xml/network_security_config.xml +++ b/android/app/src/debug/res/xml/network_security_config.xml @@ -3,7 +3,7 @@ localhost - + sslip.io 10.0.1.1 10.0.2.2 @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 608df541fcc..381db2471a6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -46,7 +46,7 @@ - + diff --git a/android/app/src/main/java/org/celo/mobile/FirebaseMessagingService.java b/android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java similarity index 97% rename from android/app/src/main/java/org/celo/mobile/FirebaseMessagingService.java rename to android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java index 38532535f6c..5d8372855ae 100644 --- a/android/app/src/main/java/org/celo/mobile/FirebaseMessagingService.java +++ b/android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.os.Bundle; import android.util.Log; diff --git a/android/app/src/main/java/org/celo/mobile/MainActivity.java b/android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java similarity index 99% rename from android/app/src/main/java/org/celo/mobile/MainActivity.java rename to android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java index 54c8d7b2dbc..0094ca601e2 100644 --- a/android/app/src/main/java/org/celo/mobile/MainActivity.java +++ b/android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.content.Intent; import android.graphics.Color; diff --git a/android/app/src/main/java/org/celo/mobile/MainApplication.java b/android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java similarity index 98% rename from android/app/src/main/java/org/celo/mobile/MainApplication.java rename to android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java index b1b32e9e285..92ee343c12a 100644 --- a/android/app/src/main/java/org/celo/mobile/MainApplication.java +++ b/android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.util.Log; import androidx.multidex.MultiDexApplication; diff --git a/android/app/src/main/java/org/celo/mobile/UserAgentClientFactory.java b/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java similarity index 94% rename from android/app/src/main/java/org/celo/mobile/UserAgentClientFactory.java rename to android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java index aa88bf81af3..65900f4a713 100644 --- a/android/app/src/main/java/org/celo/mobile/UserAgentClientFactory.java +++ b/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.content.Context; import com.facebook.react.modules.network.OkHttpClientFactory; diff --git a/android/app/src/main/java/org/celo/mobile/UserAgentInterceptor.java b/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java similarity index 96% rename from android/app/src/main/java/org/celo/mobile/UserAgentInterceptor.java rename to android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java index 0b577ea34d8..22f318aa0c5 100644 --- a/android/app/src/main/java/org/celo/mobile/UserAgentInterceptor.java +++ b/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java @@ -1,4 +1,4 @@ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.os.Build; import java.io.IOException; diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 51011521436..36d51ee6248 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ - #45CD85 - #42D689 + #45CD85 + #42D689 #000000 - \ No newline at end of file + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 12c78f6d5c4..b08de01fe1a 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Valora would like to verify your identity + Mobile Stack would like to verify your identity Please have a government issued ID ready to continue. Begin Verification diff --git a/android/app/src/main/res/xml/backup_rules.xml b/android/app/src/main/res/xml/backup_rules.xml index 6a4e245380c..6dc446aabf9 100644 --- a/android/app/src/main/res/xml/backup_rules.xml +++ b/android/app/src/main/res/xml/backup_rules.xml @@ -1,6 +1,6 @@ - - - \ No newline at end of file + + + diff --git a/android/app/src/release/java/org/celo/mobile/ReactNativeFlipper.java b/android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java similarity index 95% rename from android/app/src/release/java/org/celo/mobile/ReactNativeFlipper.java rename to android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java index 4c95da05ef1..3deb7100a30 100644 --- a/android/app/src/release/java/org/celo/mobile/ReactNativeFlipper.java +++ b/android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package org.celo.mobile; +package xyz.mobilestack.mobile; import android.content.Context; import com.facebook.react.ReactInstanceManager; diff --git a/android/gradle.properties b/android/gradle.properties index f96a5a9d243..6208076f701 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -18,8 +18,8 @@ org.gradle.jvmargs=-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true -CELO_RELEASE_STORE_FILE=celo-release-key.keystore -CELO_RELEASE_KEY_ALIAS=celo-key-alias +MOBILESTACK_RELEASE_STORE_FILE=mobilestack-release-key.keystore +MOBILESTACK_RELEASE_KEY_ALIAS=mobilestack-key-alias # Setting this manually based on version number until we have this deploying via Cloud Build # Example: v1.5.1 deployment number 1 = 1005001001 (1 005 001 001) From 19f40823eb576114a0250b26c8540eed52016418 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Wed, 18 Sep 2024 17:37:19 -0400 Subject: [PATCH 02/15] test nightly --- .github/workflows/e2e-android.yml | 3 + .github/workflows/release-nightly.yml | 157 +++++++++++++------------- 2 files changed, 83 insertions(+), 77 deletions(-) diff --git a/.github/workflows/e2e-android.yml b/.github/workflows/e2e-android.yml index 3fac405b58a..2590a6b8963 100644 --- a/.github/workflows/e2e-android.yml +++ b/.github/workflows/e2e-android.yml @@ -50,6 +50,9 @@ jobs: yes | sdkmanager "platform-tools" "platforms;android-${{ inputs.android-api-level }}" set -o pipefail + # Install Ninja + sudo apt-get install ninja-build + # Allow the emulator to use /dev/kvm sudo adduser $USER kvm sudo chown $USER /dev/kvm diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 1f7f4bd7cf0..21c3ced0eda 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,91 +7,94 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' + push: + branches: + - jophish/android-mobilestack jobs: - check-date: - runs-on: ubuntu-latest - name: Check latest commit - outputs: - should-run: ${{ steps.should-run.outputs.should-run }} - latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - id: latest-commit-hash - name: Print latest commit - run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - - id: should-run - continue-on-error: true - name: Check latest commit is less than a day - if: ${{ github.event_name == 'schedule' }} - run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + # check-date: + # runs-on: ubuntu-latest + # name: Check latest commit + # outputs: + # should-run: ${{ steps.should-run.outputs.should-run }} + # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # - id: latest-commit-hash + # name: Print latest commit + # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + # - id: should-run + # continue-on-error: true + # name: Check latest commit is less than a day + # if: ${{ github.event_name == 'schedule' }} + # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - ios: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} - # Note: This makes use of a reusable workflow - # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - uses: ./.github/workflows/release-fastlane-ios.yml - with: - branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' - secrets: - gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # ios: + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # # Note: This makes use of a reusable workflow + # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + # uses: ./.github/workflows/release-fastlane-ios.yml + # with: + # branch: main + # lanes: '["alfajoresnightly", "mainnetnightly"]' + # secrets: + # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' + lanes: '["alfajoresnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - generate-release-notes: - runs-on: ubuntu-latest - needs: [check-date, ios, android] - if: ${{ needs.check-date.outputs.should-run != 'false' }} - name: Generate release notes - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - # Fetch all history for all tags and branches - fetch-depth: 0 - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - project_id: celo-mobile-mainnet - credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - - name: Google Secrets - id: google-secrets - uses: google-github-actions/get-secretmanager-secrets@v2 - with: - secrets: |- - SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - - uses: ./.github/actions/yarn-install - - name: Tag release and get release notes - run: yarn ts-node .github/scripts/generateReleaseNotes.ts - env: - CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - - name: Build notification - uses: edge/simple-slack-notify@v1.1.2 - with: - status: success - success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # the RELEASE_NOTES are generated in the previous step - fields: | - [ - { - "title": "New items", - "value": ${JSON.stringify(env.RELEASE_NOTES)} - } - ] - env: - SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + # generate-release-notes: + # runs-on: ubuntu-latest + # needs: [check-date, ios, android] + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # name: Generate release notes + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # # Fetch all history for all tags and branches + # fetch-depth: 0 + # - name: Authenticate to Google Cloud + # uses: google-github-actions/auth@v2 + # with: + # project_id: celo-mobile-mainnet + # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # - name: Google Secrets + # id: google-secrets + # uses: google-github-actions/get-secretmanager-secrets@v2 + # with: + # secrets: |- + # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + # - uses: webfactory/ssh-agent@v0.9.0 + # with: + # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + # - uses: ./.github/actions/yarn-install + # - name: Tag release and get release notes + # run: yarn ts-node .github/scripts/generateReleaseNotes.ts + # env: + # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + # - name: Build notification + # uses: edge/simple-slack-notify@v1.1.2 + # with: + # status: success + # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # # the RELEASE_NOTES are generated in the previous step + # fields: | + # [ + # { + # "title": "New items", + # "value": ${JSON.stringify(env.RELEASE_NOTES)} + # } + # ] + # env: + # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From e3bfade786cf9c4479989e993e74944162558e44 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Wed, 18 Sep 2024 19:59:46 -0400 Subject: [PATCH 03/15] Fix e2e --- .../src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java b/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java index 71b443f2966..3f20a902eb3 100644 --- a/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java +++ b/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java @@ -25,7 +25,7 @@ public void runDetoxTests() { DetoxConfig detoxConfig = new DetoxConfig(); detoxConfig.idlePolicyConfig.masterTimeoutSec = 90; detoxConfig.idlePolicyConfig.idleResourceTimeoutSec = 60; - detoxConfig.rnContextLoadTimeoutSec = (org.mobilestack.mobile.BuildConfig.DEBUG ? 180 : 60); + detoxConfig.rnContextLoadTimeoutSec = (xyz.mobilestack.mobile.BuildConfig.DEBUG ? 180 : 60); Detox.runTests(mActivityRule, detoxConfig); } From f02c31867576ca36ac826e875c80d0e3e2161235 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Wed, 18 Sep 2024 21:00:45 -0400 Subject: [PATCH 04/15] Revert tests --- .github/workflows/release-nightly.yml | 157 +++++++++++++------------- 1 file changed, 77 insertions(+), 80 deletions(-) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 21c3ced0eda..1f7f4bd7cf0 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,94 +7,91 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' - push: - branches: - - jophish/android-mobilestack jobs: - # check-date: - # runs-on: ubuntu-latest - # name: Check latest commit - # outputs: - # should-run: ${{ steps.should-run.outputs.should-run }} - # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # - id: latest-commit-hash - # name: Print latest commit - # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - # - id: should-run - # continue-on-error: true - # name: Check latest commit is less than a day - # if: ${{ github.event_name == 'schedule' }} - # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + check-date: + runs-on: ubuntu-latest + name: Check latest commit + outputs: + should-run: ${{ steps.should-run.outputs.should-run }} + latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - id: latest-commit-hash + name: Print latest commit + run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + - id: should-run + continue-on-error: true + name: Check latest commit is less than a day + if: ${{ github.event_name == 'schedule' }} + run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - # ios: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # # Note: This makes use of a reusable workflow - # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - # uses: ./.github/workflows/release-fastlane-ios.yml - # with: - # branch: main - # lanes: '["alfajoresnightly", "mainnetnightly"]' - # secrets: - # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + ios: + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} + # Note: This makes use of a reusable workflow + # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + uses: ./.github/workflows/release-fastlane-ios.yml + with: + branch: main + lanes: '["alfajoresnightly", "mainnetnightly"]' + secrets: + gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: branch: main - lanes: '["alfajoresnightly"]' + lanes: '["alfajoresnightly", "mainnetnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # generate-release-notes: - # runs-on: ubuntu-latest - # needs: [check-date, ios, android] - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # name: Generate release notes - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # with: - # # Fetch all history for all tags and branches - # fetch-depth: 0 - # - name: Authenticate to Google Cloud - # uses: google-github-actions/auth@v2 - # with: - # project_id: celo-mobile-mainnet - # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # - name: Google Secrets - # id: google-secrets - # uses: google-github-actions/get-secretmanager-secrets@v2 - # with: - # secrets: |- - # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - # - uses: webfactory/ssh-agent@v0.9.0 - # with: - # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - # - uses: ./.github/actions/yarn-install - # - name: Tag release and get release notes - # run: yarn ts-node .github/scripts/generateReleaseNotes.ts - # env: - # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - # - name: Build notification - # uses: edge/simple-slack-notify@v1.1.2 - # with: - # status: success - # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # # the RELEASE_NOTES are generated in the previous step - # fields: | - # [ - # { - # "title": "New items", - # "value": ${JSON.stringify(env.RELEASE_NOTES)} - # } - # ] - # env: - # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + generate-release-notes: + runs-on: ubuntu-latest + needs: [check-date, ios, android] + if: ${{ needs.check-date.outputs.should-run != 'false' }} + name: Generate release notes + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Fetch all history for all tags and branches + fetch-depth: 0 + - name: Authenticate to Google Cloud + uses: google-github-actions/auth@v2 + with: + project_id: celo-mobile-mainnet + credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + - name: Google Secrets + id: google-secrets + uses: google-github-actions/get-secretmanager-secrets@v2 + with: + secrets: |- + SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + - uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + - uses: ./.github/actions/yarn-install + - name: Tag release and get release notes + run: yarn ts-node .github/scripts/generateReleaseNotes.ts + env: + CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + - name: Build notification + uses: edge/simple-slack-notify@v1.1.2 + with: + status: success + success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # the RELEASE_NOTES are generated in the previous step + fields: | + [ + { + "title": "New items", + "value": ${JSON.stringify(env.RELEASE_NOTES)} + } + ] + env: + SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From 691f6cc9752f97e65804b8d4f7f8a83e4b30386a Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 26 Sep 2024 16:20:26 -0400 Subject: [PATCH 05/15] Test release --- .github/workflows/release-nightly.yml | 159 +++++++++++++------------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 1f7f4bd7cf0..1b74524fd9f 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,91 +7,94 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' + push: + branches: + - jophish/android-mobilestack jobs: - check-date: - runs-on: ubuntu-latest - name: Check latest commit - outputs: - should-run: ${{ steps.should-run.outputs.should-run }} - latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - id: latest-commit-hash - name: Print latest commit - run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - - id: should-run - continue-on-error: true - name: Check latest commit is less than a day - if: ${{ github.event_name == 'schedule' }} - run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + # check-date: + # runs-on: ubuntu-latest + # name: Check latest commit + # outputs: + # should-run: ${{ steps.should-run.outputs.should-run }} + # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # - id: latest-commit-hash + # name: Print latest commit + # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + # - id: should-run + # continue-on-error: true + # name: Check latest commit is less than a day + # if: ${{ github.event_name == 'schedule' }} + # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - ios: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} - # Note: This makes use of a reusable workflow - # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - uses: ./.github/workflows/release-fastlane-ios.yml - with: - branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' - secrets: - gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # ios: + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # # Note: This makes use of a reusable workflow + # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + # uses: ./.github/workflows/release-fastlane-ios.yml + # with: + # branch: main + # lanes: '["alfajoresnightly", "mainnetnightly"]' + # secrets: + # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: - branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' + branch: jophish/android-mobilestack + lanes: '["alfajoresnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - generate-release-notes: - runs-on: ubuntu-latest - needs: [check-date, ios, android] - if: ${{ needs.check-date.outputs.should-run != 'false' }} - name: Generate release notes - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - # Fetch all history for all tags and branches - fetch-depth: 0 - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - project_id: celo-mobile-mainnet - credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - - name: Google Secrets - id: google-secrets - uses: google-github-actions/get-secretmanager-secrets@v2 - with: - secrets: |- - SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - - uses: ./.github/actions/yarn-install - - name: Tag release and get release notes - run: yarn ts-node .github/scripts/generateReleaseNotes.ts - env: - CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - - name: Build notification - uses: edge/simple-slack-notify@v1.1.2 - with: - status: success - success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # the RELEASE_NOTES are generated in the previous step - fields: | - [ - { - "title": "New items", - "value": ${JSON.stringify(env.RELEASE_NOTES)} - } - ] - env: - SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + # generate-release-notes: + # runs-on: ubuntu-latest + # needs: [check-date, ios, android] + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # name: Generate release notes + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # # Fetch all history for all tags and branches + # fetch-depth: 0 + # - name: Authenticate to Google Cloud + # uses: google-github-actions/auth@v2 + # with: + # project_id: celo-mobile-mainnet + # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # - name: Google Secrets + # id: google-secrets + # uses: google-github-actions/get-secretmanager-secrets@v2 + # with: + # secrets: |- + # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + # - uses: webfactory/ssh-agent@v0.9.0 + # with: + # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + # - uses: ./.github/actions/yarn-install + # - name: Tag release and get release notes + # run: yarn ts-node .github/scripts/generateReleaseNotes.ts + # env: + # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + # - name: Build notification + # uses: edge/simple-slack-notify@v1.1.2 + # with: + # status: success + # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # # the RELEASE_NOTES are generated in the previous step + # fields: | + # [ + # { + # "title": "New items", + # "value": ${JSON.stringify(env.RELEASE_NOTES)} + # } + # ] + # env: + # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From cf89d1361a293e33be87a723a0adeabbf9379733 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 26 Sep 2024 16:21:38 -0400 Subject: [PATCH 06/15] Strings --- android/app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index b08de01fe1a..c77469e7063 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Mobile Stack would like to verify your identity + This app would like to verify your identity Please have a government issued ID ready to continue. Begin Verification From 781aebf56f8768aecd771a73942fc12e1bc00c6a Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 26 Sep 2024 16:49:34 -0400 Subject: [PATCH 07/15] Update keys --- .github/workflows/release-fastlane-android.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-fastlane-android.yml b/.github/workflows/release-fastlane-android.yml index e2d2935f67e..909aadd488d 100644 --- a/.github/workflows/release-fastlane-android.yml +++ b/.github/workflows/release-fastlane-android.yml @@ -38,9 +38,9 @@ jobs: uses: google-github-actions/get-secretmanager-secrets@v2 with: secrets: |- - ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/ANDROID_RELEASE_KEYSTORE - MOBILESTACK_RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/MOBILESTACK_RELEASE_KEY_PASSWORD - MOBILESTACK_RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/MOBILESTACK_RELEASE_STORE_PASSWORD + ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/ANDROID_VALORA_MOBILESTACK_RELEASE_KEYSTORE + MOBILESTACK_RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/VALORA_MOBILESTACK_RELEASE_KEY_PASSWORD + MOBILESTACK_RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/VALORA_MOBILESTACK_RELEASE_STORE_PASSWORD SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON:projects/1027349420744/secrets/GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON From 332e4192a704b764b1e2d8b0a93d1f39bf6428b8 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 26 Sep 2024 17:10:54 -0400 Subject: [PATCH 08/15] Update alias name --- WALLET.md | 2 +- android/gradle.properties | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/WALLET.md b/WALLET.md index d7ea6282871..08a9949b3d1 100644 --- a/WALLET.md +++ b/WALLET.md @@ -442,7 +442,7 @@ If you have not yet created a keystore, one will be required to generate a relea ```sh cd android/app -keytool -genkey -v -keystore mobilestack-release-key.keystore -alias mobilestack-key-alias -storepass mobilestackFakeReleaseStorePass -keypass mobilestackFakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" +keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass mobilestackFakeReleaseStorePass -keypass mobilestackFakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" export MOBILESTACK_RELEASE_STORE_PASSWORD=mobilestackFakeReleaseStorePass export MOBILESTACK_RELEASE_KEY_PASSWORD=mobilestackFakeReleaseKeyPass ``` diff --git a/android/gradle.properties b/android/gradle.properties index b4b0ab1cdf3..91629d1041c 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -18,8 +18,10 @@ org.gradle.jvmargs=-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true +# Note that the key alias lacks Mobile Stack naming, since updating this would +# require regenerating the keystore. MOBILESTACK_RELEASE_STORE_FILE=mobilestack-release-key.keystore -MOBILESTACK_RELEASE_KEY_ALIAS=mobilestack-key-alias +MOBILESTACK_RELEASE_KEY_ALIAS=celo-key-alias # Setting this manually based on version number until we have this deploying via Cloud Build # Example: v1.5.1 deployment number 1 = 1005001001 (1 005 001 001) From 75a8bfe52b6b1b2631f1fca104e86b048aae287d Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 26 Sep 2024 17:30:42 -0400 Subject: [PATCH 09/15] Revert test --- .github/workflows/release-nightly.yml | 159 +++++++++++++------------- 1 file changed, 78 insertions(+), 81 deletions(-) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 1b74524fd9f..1f7f4bd7cf0 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,94 +7,91 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' - push: - branches: - - jophish/android-mobilestack jobs: - # check-date: - # runs-on: ubuntu-latest - # name: Check latest commit - # outputs: - # should-run: ${{ steps.should-run.outputs.should-run }} - # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # - id: latest-commit-hash - # name: Print latest commit - # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - # - id: should-run - # continue-on-error: true - # name: Check latest commit is less than a day - # if: ${{ github.event_name == 'schedule' }} - # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + check-date: + runs-on: ubuntu-latest + name: Check latest commit + outputs: + should-run: ${{ steps.should-run.outputs.should-run }} + latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - id: latest-commit-hash + name: Print latest commit + run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + - id: should-run + continue-on-error: true + name: Check latest commit is less than a day + if: ${{ github.event_name == 'schedule' }} + run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - # ios: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # # Note: This makes use of a reusable workflow - # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - # uses: ./.github/workflows/release-fastlane-ios.yml - # with: - # branch: main - # lanes: '["alfajoresnightly", "mainnetnightly"]' - # secrets: - # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + ios: + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} + # Note: This makes use of a reusable workflow + # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + uses: ./.github/workflows/release-fastlane-ios.yml + with: + branch: main + lanes: '["alfajoresnightly", "mainnetnightly"]' + secrets: + gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: - branch: jophish/android-mobilestack - lanes: '["alfajoresnightly"]' + branch: main + lanes: '["alfajoresnightly", "mainnetnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # generate-release-notes: - # runs-on: ubuntu-latest - # needs: [check-date, ios, android] - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # name: Generate release notes - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # with: - # # Fetch all history for all tags and branches - # fetch-depth: 0 - # - name: Authenticate to Google Cloud - # uses: google-github-actions/auth@v2 - # with: - # project_id: celo-mobile-mainnet - # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # - name: Google Secrets - # id: google-secrets - # uses: google-github-actions/get-secretmanager-secrets@v2 - # with: - # secrets: |- - # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - # - uses: webfactory/ssh-agent@v0.9.0 - # with: - # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - # - uses: ./.github/actions/yarn-install - # - name: Tag release and get release notes - # run: yarn ts-node .github/scripts/generateReleaseNotes.ts - # env: - # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - # - name: Build notification - # uses: edge/simple-slack-notify@v1.1.2 - # with: - # status: success - # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # # the RELEASE_NOTES are generated in the previous step - # fields: | - # [ - # { - # "title": "New items", - # "value": ${JSON.stringify(env.RELEASE_NOTES)} - # } - # ] - # env: - # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + generate-release-notes: + runs-on: ubuntu-latest + needs: [check-date, ios, android] + if: ${{ needs.check-date.outputs.should-run != 'false' }} + name: Generate release notes + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Fetch all history for all tags and branches + fetch-depth: 0 + - name: Authenticate to Google Cloud + uses: google-github-actions/auth@v2 + with: + project_id: celo-mobile-mainnet + credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + - name: Google Secrets + id: google-secrets + uses: google-github-actions/get-secretmanager-secrets@v2 + with: + secrets: |- + SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + - uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + - uses: ./.github/actions/yarn-install + - name: Tag release and get release notes + run: yarn ts-node .github/scripts/generateReleaseNotes.ts + env: + CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + - name: Build notification + uses: edge/simple-slack-notify@v1.1.2 + with: + status: success + success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # the RELEASE_NOTES are generated in the previous step + fields: | + [ + { + "title": "New items", + "value": ${JSON.stringify(env.RELEASE_NOTES)} + } + ] + env: + SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From 612c97bff7d5d903cad7fedd1a10821ce49f4e57 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Mon, 30 Sep 2024 18:03:50 -0400 Subject: [PATCH 10/15] Respond to comments --- .github/workflows/release-fastlane-android.yml | 12 ++++++------ WALLET.md | 6 +++--- android/app/build.gradle | 14 +++++++------- android/app/proguard-rules.pro | 2 +- android/app/src/androidTest/AndroidManifest.xml | 2 +- .../xyz/mobilestack/{mobile => }/DetoxTest.java | 4 ++-- .../{mobile => }/ReactNativeFlipper.java | 2 +- .../{mobile => }/ReactNativeFlipper.java | 2 +- .../{mobile => }/FirebaseMessagingService.java | 2 +- .../xyz/mobilestack/{mobile => }/MainActivity.java | 2 +- .../mobilestack/{mobile => }/MainApplication.java | 2 +- .../{mobile => }/UserAgentClientFactory.java | 2 +- .../{mobile => }/UserAgentInterceptor.java | 2 +- .../{mobile => }/ReactNativeFlipper.java | 2 +- android/gradle.properties | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) rename android/app/src/androidTest/java/xyz/mobilestack/{mobile => }/DetoxTest.java (85%) rename android/app/src/androidTest/java/xyz/mobilestack/{mobile => }/ReactNativeFlipper.java (95%) rename android/app/src/debug/java/xyz/mobilestack/{mobile => }/ReactNativeFlipper.java (99%) rename android/app/src/main/java/xyz/mobilestack/{mobile => }/FirebaseMessagingService.java (97%) rename android/app/src/main/java/xyz/mobilestack/{mobile => }/MainActivity.java (99%) rename android/app/src/main/java/xyz/mobilestack/{mobile => }/MainApplication.java (98%) rename android/app/src/main/java/xyz/mobilestack/{mobile => }/UserAgentClientFactory.java (94%) rename android/app/src/main/java/xyz/mobilestack/{mobile => }/UserAgentInterceptor.java (96%) rename android/app/src/release/java/xyz/mobilestack/{mobile => }/ReactNativeFlipper.java (95%) diff --git a/.github/workflows/release-fastlane-android.yml b/.github/workflows/release-fastlane-android.yml index 909aadd488d..42b0582dcb0 100644 --- a/.github/workflows/release-fastlane-android.yml +++ b/.github/workflows/release-fastlane-android.yml @@ -38,9 +38,9 @@ jobs: uses: google-github-actions/get-secretmanager-secrets@v2 with: secrets: |- - ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/ANDROID_VALORA_MOBILESTACK_RELEASE_KEYSTORE - MOBILESTACK_RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/VALORA_MOBILESTACK_RELEASE_KEY_PASSWORD - MOBILESTACK_RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/VALORA_MOBILESTACK_RELEASE_STORE_PASSWORD + ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/VALORA_RELEASE_KEYSTORE + RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/VALORA_RELEASE_KEY_PASSWORD + RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/VALORA_RELEASE_STORE_PASSWORD SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON:projects/1027349420744/secrets/GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON @@ -95,11 +95,11 @@ jobs: # TODO: use ram disk - name: Write secrets run: | - echo '${{ steps.google-secrets.outputs.ANDROID_RELEASE_KEYSTORE }}' | base64 -d > android/app/mobilestack-release-key.keystore + echo '${{ steps.google-secrets.outputs.ANDROID_RELEASE_KEYSTORE }}' | base64 -d > android/app/release-key.keystore echo '${{ steps.google-secrets.outputs.GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON }}' > fastlane/google-play-service-account.json - env: - MOBILESTACK_RELEASE_STORE_PASSWORD: ${{ steps.google-secrets.outputs.MOBILESTACK_RELEASE_STORE_PASSWORD }} - MOBILESTACK_RELEASE_KEY_PASSWORD: ${{ steps.google-secrets.outputs.MOBILESTACK_RELEASE_KEY_PASSWORD }} + RELEASE_STORE_PASSWORD: ${{ steps.google-secrets.outputs.RELEASE_STORE_PASSWORD }} + RELEASE_KEY_PASSWORD: ${{ steps.google-secrets.outputs.RELEASE_KEY_PASSWORD }} EMERGE_API_TOKEN: ${{ steps.google-secrets.outputs.EMERGE_API_TOKEN }} SUPPLY_UPLOAD_MAX_RETRIES: 5 RUBYOPT: '-rostruct' # TODO: Remove when https://github.com/fastlane/fastlane/pull/21950 gets released diff --git a/WALLET.md b/WALLET.md index 08a9949b3d1..963aae1fcfe 100644 --- a/WALLET.md +++ b/WALLET.md @@ -442,9 +442,9 @@ If you have not yet created a keystore, one will be required to generate a relea ```sh cd android/app -keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass mobilestackFakeReleaseStorePass -keypass mobilestackFakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" -export MOBILESTACK_RELEASE_STORE_PASSWORD=mobilestackFakeReleaseStorePass -export MOBILESTACK_RELEASE_KEY_PASSWORD=mobilestackFakeReleaseKeyPass +keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass fakeReleaseStorePass -keypass fakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" +export RELEASE_STORE_PASSWORD=fakeReleaseStorePass +export RELEASE_KEY_PASSWORD=fakeReleaseKeyPass ``` ### Building an APK or Bundle diff --git a/android/app/build.gradle b/android/app/build.gradle index 83238a2c5d0..07113bfb71c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -138,7 +138,7 @@ def secrets = loadProjectSecrets(project.env.get("DEFAULT_TESTNET")) android { compileSdkVersion rootProject.ext.compileSdkVersion - namespace "xyz.mobilestack.mobile" + namespace "xyz.mobilestack" compileOptions { sourceCompatibility JavaVersion.VERSION_11 @@ -156,7 +156,7 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", project.env.get("APP_DISPLAY_NAME") resValue "string", "deep_link_url_scheme", project.env.get("DEEP_LINK_URL_SCHEME") - resValue "string", "build_config_package", "xyz.mobilestack.mobile" + resValue "string", "build_config_package", "xyz.mobilestack" missingDimensionStrategy 'react-native-camera', 'general' vectorDrawables.useSupportLibrary = true resValue "bool", "is_profiling_build", System.getenv("IS_PROFILING_BUILD") ?: "false" @@ -178,11 +178,11 @@ android { storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' - } else if (project.hasProperty('MOBILESTACK_RELEASE_STORE_FILE')) { - storeFile file(MOBILESTACK_RELEASE_STORE_FILE) - storePassword System.getenv("MOBILESTACK_RELEASE_STORE_PASSWORD") - keyAlias MOBILESTACK_RELEASE_KEY_ALIAS - keyPassword System.getenv("MOBILESTACK_RELEASE_KEY_PASSWORD") + } else if (project.hasProperty('RELEASE_STORE_FILE')) { + storeFile file(RELEASE_STORE_FILE) + storePassword System.getenv("RELEASE_STORE_PASSWORD") + keyAlias RELEASE_KEY_ALIAS + keyPassword System.getenv("RELEASE_KEY_PASSWORD") } } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index a0994fcafd7..00f0266d33c 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -20,7 +20,7 @@ -keep class com.segment.analytics.** { *; } -keep class androidx.lifecycle.DefaultLifecycleObserver --keep class xyz.mobilestack.mobile.BuildConfig { *; } +-keep class xyz.mobilestack.BuildConfig { *; } -keep public class com.horcrux.svg.** {*;} -keep class com.rt2zz.reactnativecontacts.** {*;} -keepclassmembers class com.rt2zz.reactnativecontacts.** {*;} diff --git a/android/app/src/androidTest/AndroidManifest.xml b/android/app/src/androidTest/AndroidManifest.xml index a553dc2c79a..66900da2b73 100644 --- a/android/app/src/androidTest/AndroidManifest.xml +++ b/android/app/src/androidTest/AndroidManifest.xml @@ -1,4 +1,4 @@ + xmlns:tools="http://schemas.android.com/tools" package="xyz.mobilestack" android:versionCode="1" android:versionName="1.0"> diff --git a/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java b/android/app/src/androidTest/java/xyz/mobilestack/DetoxTest.java similarity index 85% rename from android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java rename to android/app/src/androidTest/java/xyz/mobilestack/DetoxTest.java index 3f20a902eb3..df3b60948a6 100644 --- a/android/app/src/androidTest/java/xyz/mobilestack/mobile/DetoxTest.java +++ b/android/app/src/androidTest/java/xyz/mobilestack/DetoxTest.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; @@ -25,7 +25,7 @@ public void runDetoxTests() { DetoxConfig detoxConfig = new DetoxConfig(); detoxConfig.idlePolicyConfig.masterTimeoutSec = 90; detoxConfig.idlePolicyConfig.idleResourceTimeoutSec = 60; - detoxConfig.rnContextLoadTimeoutSec = (xyz.mobilestack.mobile.BuildConfig.DEBUG ? 180 : 60); + detoxConfig.rnContextLoadTimeoutSec = (xyz.mobilestack.BuildConfig.DEBUG ? 180 : 60); Detox.runTests(mActivityRule, detoxConfig); } diff --git a/android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java b/android/app/src/androidTest/java/xyz/mobilestack/ReactNativeFlipper.java similarity index 95% rename from android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java rename to android/app/src/androidTest/java/xyz/mobilestack/ReactNativeFlipper.java index 3deb7100a30..ca6b0a7d1bc 100644 --- a/android/app/src/androidTest/java/xyz/mobilestack/mobile/ReactNativeFlipper.java +++ b/android/app/src/androidTest/java/xyz/mobilestack/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.content.Context; import com.facebook.react.ReactInstanceManager; diff --git a/android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java b/android/app/src/debug/java/xyz/mobilestack/ReactNativeFlipper.java similarity index 99% rename from android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java rename to android/app/src/debug/java/xyz/mobilestack/ReactNativeFlipper.java index 136f24790ae..e06125ac8e3 100644 --- a/android/app/src/debug/java/xyz/mobilestack/mobile/ReactNativeFlipper.java +++ b/android/app/src/debug/java/xyz/mobilestack/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.content.Context; import com.facebook.flipper.android.AndroidFlipperClient; diff --git a/android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java b/android/app/src/main/java/xyz/mobilestack/FirebaseMessagingService.java similarity index 97% rename from android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java rename to android/app/src/main/java/xyz/mobilestack/FirebaseMessagingService.java index 5d8372855ae..7dc9e445454 100644 --- a/android/app/src/main/java/xyz/mobilestack/mobile/FirebaseMessagingService.java +++ b/android/app/src/main/java/xyz/mobilestack/FirebaseMessagingService.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.os.Bundle; import android.util.Log; diff --git a/android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java b/android/app/src/main/java/xyz/mobilestack/MainActivity.java similarity index 99% rename from android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java rename to android/app/src/main/java/xyz/mobilestack/MainActivity.java index 0094ca601e2..4de9b4ba3a8 100644 --- a/android/app/src/main/java/xyz/mobilestack/mobile/MainActivity.java +++ b/android/app/src/main/java/xyz/mobilestack/MainActivity.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.content.Intent; import android.graphics.Color; diff --git a/android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java b/android/app/src/main/java/xyz/mobilestack/MainApplication.java similarity index 98% rename from android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java rename to android/app/src/main/java/xyz/mobilestack/MainApplication.java index 92ee343c12a..630de12118d 100644 --- a/android/app/src/main/java/xyz/mobilestack/mobile/MainApplication.java +++ b/android/app/src/main/java/xyz/mobilestack/MainApplication.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.util.Log; import androidx.multidex.MultiDexApplication; diff --git a/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java b/android/app/src/main/java/xyz/mobilestack/UserAgentClientFactory.java similarity index 94% rename from android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java rename to android/app/src/main/java/xyz/mobilestack/UserAgentClientFactory.java index 65900f4a713..8747e15b598 100644 --- a/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentClientFactory.java +++ b/android/app/src/main/java/xyz/mobilestack/UserAgentClientFactory.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.content.Context; import com.facebook.react.modules.network.OkHttpClientFactory; diff --git a/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java b/android/app/src/main/java/xyz/mobilestack/UserAgentInterceptor.java similarity index 96% rename from android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java rename to android/app/src/main/java/xyz/mobilestack/UserAgentInterceptor.java index 22f318aa0c5..241059e8058 100644 --- a/android/app/src/main/java/xyz/mobilestack/mobile/UserAgentInterceptor.java +++ b/android/app/src/main/java/xyz/mobilestack/UserAgentInterceptor.java @@ -1,4 +1,4 @@ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.os.Build; import java.io.IOException; diff --git a/android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java b/android/app/src/release/java/xyz/mobilestack/ReactNativeFlipper.java similarity index 95% rename from android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java rename to android/app/src/release/java/xyz/mobilestack/ReactNativeFlipper.java index 3deb7100a30..ca6b0a7d1bc 100644 --- a/android/app/src/release/java/xyz/mobilestack/mobile/ReactNativeFlipper.java +++ b/android/app/src/release/java/xyz/mobilestack/ReactNativeFlipper.java @@ -4,7 +4,7 @@ *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package xyz.mobilestack.mobile; +package xyz.mobilestack; import android.content.Context; import com.facebook.react.ReactInstanceManager; diff --git a/android/gradle.properties b/android/gradle.properties index 91629d1041c..cd0e4394b65 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -20,8 +20,8 @@ org.gradle.parallel=true # Note that the key alias lacks Mobile Stack naming, since updating this would # require regenerating the keystore. -MOBILESTACK_RELEASE_STORE_FILE=mobilestack-release-key.keystore -MOBILESTACK_RELEASE_KEY_ALIAS=celo-key-alias +RELEASE_STORE_FILE=release-key.keystore +RELEASE_KEY_ALIAS=celo-key-alias # Setting this manually based on version number until we have this deploying via Cloud Build # Example: v1.5.1 deployment number 1 = 1005001001 (1 005 001 001) From dc0e297b4af3e87c67da8abb59c3756d2edaeb50 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 31 Oct 2024 16:29:56 -0400 Subject: [PATCH 11/15] Use new keystore with single password --- .github/workflows/release-fastlane-android.yml | 4 +--- WALLET.md | 3 +-- android/app/build.gradle | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-fastlane-android.yml b/.github/workflows/release-fastlane-android.yml index 42b0582dcb0..31fe278b692 100644 --- a/.github/workflows/release-fastlane-android.yml +++ b/.github/workflows/release-fastlane-android.yml @@ -38,8 +38,7 @@ jobs: uses: google-github-actions/get-secretmanager-secrets@v2 with: secrets: |- - ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/VALORA_RELEASE_KEYSTORE - RELEASE_KEY_PASSWORD:projects/1027349420744/secrets/VALORA_RELEASE_KEY_PASSWORD + ANDROID_RELEASE_KEYSTORE:projects/1027349420744/secrets/VALORA_RELEASE_KEYSTORE_V2 RELEASE_STORE_PASSWORD:projects/1027349420744/secrets/VALORA_RELEASE_STORE_PASSWORD SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY @@ -99,7 +98,6 @@ jobs: echo '${{ steps.google-secrets.outputs.GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_JSON }}' > fastlane/google-play-service-account.json - env: RELEASE_STORE_PASSWORD: ${{ steps.google-secrets.outputs.RELEASE_STORE_PASSWORD }} - RELEASE_KEY_PASSWORD: ${{ steps.google-secrets.outputs.RELEASE_KEY_PASSWORD }} EMERGE_API_TOKEN: ${{ steps.google-secrets.outputs.EMERGE_API_TOKEN }} SUPPLY_UPLOAD_MAX_RETRIES: 5 RUBYOPT: '-rostruct' # TODO: Remove when https://github.com/fastlane/fastlane/pull/21950 gets released diff --git a/WALLET.md b/WALLET.md index 963aae1fcfe..65ef26262cd 100644 --- a/WALLET.md +++ b/WALLET.md @@ -442,9 +442,8 @@ If you have not yet created a keystore, one will be required to generate a relea ```sh cd android/app -keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass fakeReleaseStorePass -keypass fakeReleaseKeyPass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" +keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass fakeReleaseStorePass -keypass fakeReleaseStorePass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" export RELEASE_STORE_PASSWORD=fakeReleaseStorePass -export RELEASE_KEY_PASSWORD=fakeReleaseKeyPass ``` ### Building an APK or Bundle diff --git a/android/app/build.gradle b/android/app/build.gradle index fcd31b8d84a..2bf85ee85ee 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -182,7 +182,7 @@ android { storeFile file(RELEASE_STORE_FILE) storePassword System.getenv("RELEASE_STORE_PASSWORD") keyAlias RELEASE_KEY_ALIAS - keyPassword System.getenv("RELEASE_KEY_PASSWORD") + keyPassword System.getenv("RELEASE_STORE_PASSWORD") } } From 49582ba1ca6a396199b9e06038827a8ed413c4b2 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 31 Oct 2024 16:31:26 -0400 Subject: [PATCH 12/15] Change alias --- WALLET.md | 2 +- android/gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WALLET.md b/WALLET.md index 65ef26262cd..eee02cc260b 100644 --- a/WALLET.md +++ b/WALLET.md @@ -442,7 +442,7 @@ If you have not yet created a keystore, one will be required to generate a relea ```sh cd android/app -keytool -genkey -v -keystore mobilestack-release-key.keystore -alias celo-key-alias -storepass fakeReleaseStorePass -keypass fakeReleaseStorePass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" +keytool -genkey -v -keystore mobilestack-release-key.keystore -alias mobilestack-key-alias -storepass fakeReleaseStorePass -keypass fakeReleaseStorePass -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US" export RELEASE_STORE_PASSWORD=fakeReleaseStorePass ``` diff --git a/android/gradle.properties b/android/gradle.properties index cd0e4394b65..9bd78b672c9 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -21,7 +21,7 @@ org.gradle.parallel=true # Note that the key alias lacks Mobile Stack naming, since updating this would # require regenerating the keystore. RELEASE_STORE_FILE=release-key.keystore -RELEASE_KEY_ALIAS=celo-key-alias +RELEASE_KEY_ALIAS=mobilestack-key-alias # Setting this manually based on version number until we have this deploying via Cloud Build # Example: v1.5.1 deployment number 1 = 1005001001 (1 005 001 001) From ab3c9aa4256b3ba89d61575943dce8a87f8dc60d Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 31 Oct 2024 16:32:35 -0400 Subject: [PATCH 13/15] Test alfajores nightly --- .github/workflows/release-nightly.yml | 159 +++++++++++++------------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 1f7f4bd7cf0..1b74524fd9f 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,91 +7,94 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' + push: + branches: + - jophish/android-mobilestack jobs: - check-date: - runs-on: ubuntu-latest - name: Check latest commit - outputs: - should-run: ${{ steps.should-run.outputs.should-run }} - latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - id: latest-commit-hash - name: Print latest commit - run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - - id: should-run - continue-on-error: true - name: Check latest commit is less than a day - if: ${{ github.event_name == 'schedule' }} - run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + # check-date: + # runs-on: ubuntu-latest + # name: Check latest commit + # outputs: + # should-run: ${{ steps.should-run.outputs.should-run }} + # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # - id: latest-commit-hash + # name: Print latest commit + # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + # - id: should-run + # continue-on-error: true + # name: Check latest commit is less than a day + # if: ${{ github.event_name == 'schedule' }} + # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - ios: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} - # Note: This makes use of a reusable workflow - # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - uses: ./.github/workflows/release-fastlane-ios.yml - with: - branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' - secrets: - gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # ios: + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # # Note: This makes use of a reusable workflow + # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + # uses: ./.github/workflows/release-fastlane-ios.yml + # with: + # branch: main + # lanes: '["alfajoresnightly", "mainnetnightly"]' + # secrets: + # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - needs: check-date - if: ${{ needs.check-date.outputs.should-run != 'false' }} + # needs: check-date + # if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: - branch: main - lanes: '["alfajoresnightly", "mainnetnightly"]' + branch: jophish/android-mobilestack + lanes: '["alfajoresnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - generate-release-notes: - runs-on: ubuntu-latest - needs: [check-date, ios, android] - if: ${{ needs.check-date.outputs.should-run != 'false' }} - name: Generate release notes - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - # Fetch all history for all tags and branches - fetch-depth: 0 - - name: Authenticate to Google Cloud - uses: google-github-actions/auth@v2 - with: - project_id: celo-mobile-mainnet - credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - - name: Google Secrets - id: google-secrets - uses: google-github-actions/get-secretmanager-secrets@v2 - with: - secrets: |- - SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - - uses: ./.github/actions/yarn-install - - name: Tag release and get release notes - run: yarn ts-node .github/scripts/generateReleaseNotes.ts - env: - CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - - name: Build notification - uses: edge/simple-slack-notify@v1.1.2 - with: - status: success - success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # the RELEASE_NOTES are generated in the previous step - fields: | - [ - { - "title": "New items", - "value": ${JSON.stringify(env.RELEASE_NOTES)} - } - ] - env: - SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + # generate-release-notes: + # runs-on: ubuntu-latest + # needs: [check-date, ios, android] + # if: ${{ needs.check-date.outputs.should-run != 'false' }} + # name: Generate release notes + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # with: + # # Fetch all history for all tags and branches + # fetch-depth: 0 + # - name: Authenticate to Google Cloud + # uses: google-github-actions/auth@v2 + # with: + # project_id: celo-mobile-mainnet + # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + # - name: Google Secrets + # id: google-secrets + # uses: google-github-actions/get-secretmanager-secrets@v2 + # with: + # secrets: |- + # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + # - uses: webfactory/ssh-agent@v0.9.0 + # with: + # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + # - uses: ./.github/actions/yarn-install + # - name: Tag release and get release notes + # run: yarn ts-node .github/scripts/generateReleaseNotes.ts + # env: + # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + # - name: Build notification + # uses: edge/simple-slack-notify@v1.1.2 + # with: + # status: success + # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # # the RELEASE_NOTES are generated in the previous step + # fields: | + # [ + # { + # "title": "New items", + # "value": ${JSON.stringify(env.RELEASE_NOTES)} + # } + # ] + # env: + # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From 76323ce15d3bf7746488355ce8e07f05423c11a4 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Thu, 31 Oct 2024 17:13:53 -0400 Subject: [PATCH 14/15] Revert test --- .github/workflows/release-nightly.yml | 159 +++++++++++++------------- 1 file changed, 78 insertions(+), 81 deletions(-) diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index 1b74524fd9f..1f7f4bd7cf0 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -7,94 +7,91 @@ on: # This is a good time for nightly builds, across CET, PST and IST (QA team in India) schedule: - cron: '0 3 * * *' - push: - branches: - - jophish/android-mobilestack jobs: - # check-date: - # runs-on: ubuntu-latest - # name: Check latest commit - # outputs: - # should-run: ${{ steps.should-run.outputs.should-run }} - # latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # - id: latest-commit-hash - # name: Print latest commit - # run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - # - id: should-run - # continue-on-error: true - # name: Check latest commit is less than a day - # if: ${{ github.event_name == 'schedule' }} - # run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT + check-date: + runs-on: ubuntu-latest + name: Check latest commit + outputs: + should-run: ${{ steps.should-run.outputs.should-run }} + latest-commit-hash: ${{ steps.latest-commit-hash.outputs.latest-commit-hash }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - id: latest-commit-hash + name: Print latest commit + run: echo $(git rev-parse HEAD) && echo "latest-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + - id: should-run + continue-on-error: true + name: Check latest commit is less than a day + if: ${{ github.event_name == 'schedule' }} + run: test -z $(git rev-list --after="24 hours" $(git rev-parse HEAD)) && echo "should-run=false" >> $GITHUB_OUTPUT - # ios: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # # Note: This makes use of a reusable workflow - # # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually - # uses: ./.github/workflows/release-fastlane-ios.yml - # with: - # branch: main - # lanes: '["alfajoresnightly", "mainnetnightly"]' - # secrets: - # gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + ios: + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} + # Note: This makes use of a reusable workflow + # Tip: Use `gh workflow run "Release - Nightly" --ref your_branch` to trigger the workflow manually + uses: ./.github/workflows/release-fastlane-ios.yml + with: + branch: main + lanes: '["alfajoresnightly", "mainnetnightly"]' + secrets: + gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} android: - # needs: check-date - # if: ${{ needs.check-date.outputs.should-run != 'false' }} + needs: check-date + if: ${{ needs.check-date.outputs.should-run != 'false' }} uses: ./.github/workflows/release-fastlane-android.yml with: - branch: jophish/android-mobilestack - lanes: '["alfajoresnightly"]' + branch: main + lanes: '["alfajoresnightly", "mainnetnightly"]' secrets: gcp-service-account-key: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # generate-release-notes: - # runs-on: ubuntu-latest - # needs: [check-date, ios, android] - # if: ${{ needs.check-date.outputs.should-run != 'false' }} - # name: Generate release notes - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # with: - # # Fetch all history for all tags and branches - # fetch-depth: 0 - # - name: Authenticate to Google Cloud - # uses: google-github-actions/auth@v2 - # with: - # project_id: celo-mobile-mainnet - # credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} - # - name: Google Secrets - # id: google-secrets - # uses: google-github-actions/get-secretmanager-secrets@v2 - # with: - # secrets: |- - # SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL - # BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY - # - uses: webfactory/ssh-agent@v0.9.0 - # with: - # ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} - # - uses: ./.github/actions/yarn-install - # - name: Tag release and get release notes - # run: yarn ts-node .github/scripts/generateReleaseNotes.ts - # env: - # CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} - # - name: Build notification - # uses: edge/simple-slack-notify@v1.1.2 - # with: - # status: success - # success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' - # # the RELEASE_NOTES are generated in the previous step - # fields: | - # [ - # { - # "title": "New items", - # "value": ${JSON.stringify(env.RELEASE_NOTES)} - # } - # ] - # env: - # SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} + generate-release-notes: + runs-on: ubuntu-latest + needs: [check-date, ios, android] + if: ${{ needs.check-date.outputs.should-run != 'false' }} + name: Generate release notes + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Fetch all history for all tags and branches + fetch-depth: 0 + - name: Authenticate to Google Cloud + uses: google-github-actions/auth@v2 + with: + project_id: celo-mobile-mainnet + credentials_json: ${{ secrets.GCP_MAINNET_RELEASE_AUTOMATION_SERVICE_ACCOUNT_KEY }} + - name: Google Secrets + id: google-secrets + uses: google-github-actions/get-secretmanager-secrets@v2 + with: + secrets: |- + SLACK_WEBHOOK_URL:projects/1027349420744/secrets/SLACK_WEBHOOK_URL + BOT_SSH_KEY:projects/1027349420744/secrets/BOT_SSH_PRIVATE_KEY + - uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ steps.google-secrets.outputs.BOT_SSH_KEY }} + - uses: ./.github/actions/yarn-install + - name: Tag release and get release notes + run: yarn ts-node .github/scripts/generateReleaseNotes.ts + env: + CURRENT_RELEASE_SHA: ${{ needs.check-date.outputs.latest-commit-hash }} + - name: Build notification + uses: edge/simple-slack-notify@v1.1.2 + with: + status: success + success_text: '🚀 There are new features available for testing on the nightly builds! 🥳' + # the RELEASE_NOTES are generated in the previous step + fields: | + [ + { + "title": "New items", + "value": ${JSON.stringify(env.RELEASE_NOTES)} + } + ] + env: + SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }} From 6eef6b451e6826d9a8aa2eea0d753838d13fe7d9 Mon Sep 17 00:00:00 2001 From: Joseph Bergeron Date: Mon, 4 Nov 2024 08:54:27 -0500 Subject: [PATCH 15/15] Change project name --- android/.project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/.project b/android/.project index 2138d27b9f3..69be161d33b 100644 --- a/android/.project +++ b/android/.project @@ -1,6 +1,6 @@ - celo + mobilestack Project mobilestack created by Buildship.