From b0252d47427f0f44b58170b870bb9a6d10edecf0 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:52:16 -0300 Subject: [PATCH 01/29] chore: upload builds to bucket --- .github/workflows/release-android-base.yaml | 32 +++++++++++++++---- .../release-dapp-android-internal.yaml | 1 + .../release-dapp-android-production.yaml | 1 + .../workflows/release-dapp-ios-internal.yaml | 1 + .../release-dapp-ios-production.yaml | 1 + .github/workflows/release-ios-base.yaml | 27 ++++++++++++++-- .../release-wallet-android-internal.yaml | 1 + .../release-wallet-android-production.yaml | 1 + .../release-wallet-ios-internal.yaml | 1 + .../release-wallet-ios-production.yaml | 1 + fastlane/Fastfile | 7 +++- 11 files changed, 65 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 0a2a2cef..1a2d0a39 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -18,6 +18,10 @@ on: description: 'Release type of the project (debug/internal/production)' default: 'internal' type: string + project-type: + description: 'Type of project (wallet/dapp)' + required: true + type: string output-path: description: 'Path to get the APK file' required: true @@ -45,6 +49,8 @@ on: required: true google-services-file: required: false + aws-account-id: + required: true jobs: build: @@ -90,14 +96,14 @@ jobs: echo "org.gradle.caching=true" >> ${{ inputs.root-path }}/android/gradle.properties - name: Cache Gradle - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + key: ${{ runner.os }}-gradle-${{ github.ref_name }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | - ${{ runner.os }}-gradle- + ${{ runner.os }}-gradle-${{ github.ref_name }}- - name: Build APK run: | @@ -113,9 +119,23 @@ jobs: tools-version: 13.0.1 gcp_sa_key: ${{ secrets.gsa-key }} - - name: Upload APK + - name: Upload APK to Firebase env: APP_ID: ${{ secrets.firebase-app-id }} run: | - firebase appdistribution:distribute ${{ inputs.output-path }} --app $APP_ID --release-notes "${{ inputs.name }} ${{ inputs.release-type }} release" --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" - \ No newline at end of file + firebase appdistribution:distribute ${{ inputs.output-path }} + --app $APP_ID + --release-notes "${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }} - Branch: ${{ github.ref_name }}" \ + --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds + aws-region: eu-central-1 + + - name: Upload Android build to S3 + run: | + aws s3 cp \ + ${{ inputs.output-path }} \ + s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk \ No newline at end of file diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index 75e3e1e4..833378f4 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -12,6 +12,7 @@ jobs: name: AppKit React Native root-path: 'dapps/W3MWagmi' release-type: 'internal' + project-type: 'dapp' output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/internal/app-internal.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index 25296fee..eb7b8898 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -12,6 +12,7 @@ jobs: name: AppKit React Native root-path: 'dapps/W3MWagmi' release-type: 'production' + project-type: 'dapp' output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index f5967184..5820c584 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -17,6 +17,7 @@ jobs: scheme-name: 'W3MWagmi Internal' bundle-id: 'com.walletconnect.web3modal.rnsample.internal' apple-id: '6479817037' + project-type: 'dapp' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index a1c524c9..1a74c375 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -17,6 +17,7 @@ jobs: scheme-name: 'W3MWagmi' bundle-id: 'com.walletconnect.web3modal.rnsample' apple-id: '6446700301' + project-type: 'dapp' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 735bc32f..a3ff3f84 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -25,6 +25,10 @@ on: release-type: description: 'Release type of the project (debug/internal/production)' type: string + project-type: + description: 'Type of project (wallet/dapp)' + required: true + type: string scheme-name: description: 'Scheme name of the project' required: true @@ -66,6 +70,8 @@ on: required: true google-services-file: required: false + aws-account-id: + required: true jobs: build: @@ -101,10 +107,12 @@ jobs: - name: Cache pods id: pods-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ inputs.root-path }}/ios/Pods - key: ${{ runner.os }}-pods-${{ hashFiles(env.podfile_path) }} + key: ${{ runner.os }}-pods-${{ github.ref_name }}-${{ hashFiles(env.podfile_path) }} + restore-keys: | + ${{ runner.os }}-pods-${{ github.ref_name }}- - name: Install Ruby uses: ruby/setup-ruby@v1 @@ -145,3 +153,18 @@ jobs: SCHEME: ${{ inputs.scheme-name }} XCODE_PROJECT_PATH: ${{ inputs.xcode-project-path }} XCWORKSPACE_PATH: ${{ inputs.xcode-workspace-path }} + PROJECT_TYPE: ${{ inputs.project-type }} + RELEASE_TYPE: ${{ inputs.release-type }} + BRANCH_NAME: ${{ github.ref_name }} + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds + aws-region: eu-central-1 + + - name: Upload iOS build to S3 + run: | + aws s3 cp \ + ./build/app.ipa \ + s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index 47f7a21b..224f3e86 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -12,6 +12,7 @@ jobs: name: WalletKit React Native root-path: 'wallets/rn_cli_wallet' release-type: 'internal' + project-type: 'wallet' output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/internal/app-internal.apk' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index d966539b..c8fbbd53 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -12,6 +12,7 @@ jobs: name: WalletKit React Native root-path: 'wallets/rn_cli_wallet' release-type: 'production' + project-type: 'wallet' output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index ded6359e..b44817cc 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -17,6 +17,7 @@ jobs: scheme-name: 'RNWallet-Internal' bundle-id: 'com.walletconnect.web3wallet.rnsample.internal' apple-id: '6499165794' + project-type: 'wallet' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index 5371f3ff..ca31da47 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -17,6 +17,7 @@ jobs: scheme-name: 'RNWallet' bundle-id: 'com.walletconnect.web3wallet.rnsample' apple-id: '6449264964' + project-type: 'wallet' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index d13b6f00..29ac6173 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -23,6 +23,9 @@ platform :ios do # Setup the keychain and match to work with CI setup_ci() + project_type = ENV['PROJECT_TYPE'] || ENV['SCHEME'] + branch_name = ENV['BRANCH_NAME'] || '' + # Get Apple API Key api_key = app_store_connect_api_key( key_id: ENV["APPLE_KEY_ID"], @@ -70,13 +73,15 @@ platform :ios do workspace: ENV['XCWORKSPACE_PATH'], scheme: ENV['SCHEME'], export_method: "app-store", + output_directory: "./build", + output_name: "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa" ) # Upload to TestFlight upload_to_testflight( apple_id: ENV["APPLE_ID"], app_identifier: ENV["BUNDLE_ID"], - changelog: "#{ENV["SCHEME"]} build 🚀", + changelog: "#{project_type} build from branch: #{branch_name}", distribute_external: false, notify_external_testers: false, skip_waiting_for_build_processing: true From c83f6c8ad9673a63ff72c10998c2f9c366de6846 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:54:01 -0300 Subject: [PATCH 02/29] chore: added workflow permissions --- .github/workflows/release-android-base.yaml | 1 + .github/workflows/release-ios-base.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 1a2d0a39..5b7e36cc 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -1,6 +1,7 @@ name: release-android-base permissions: + id-token: write contents: read on: diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index a3ff3f84..2f471d83 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -1,6 +1,7 @@ name: release-ios-base permissions: + id-token: write contents: read on: From c8b372e71e770c0ebb7d67064d4f28312ff132e8 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:58:22 -0300 Subject: [PATCH 03/29] chore: minor fixes --- .github/workflows/release-android-base.yaml | 4 ++-- .github/workflows/release-ios-base.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 5b7e36cc..52e03473 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -124,8 +124,8 @@ jobs: env: APP_ID: ${{ secrets.firebase-app-id }} run: | - firebase appdistribution:distribute ${{ inputs.output-path }} - --app $APP_ID + firebase appdistribution:distribute ${{ inputs.output-path }} \ + --app $APP_ID \ --release-notes "${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }} - Branch: ${{ github.ref_name }}" \ --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 2f471d83..7030c227 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -167,5 +167,5 @@ jobs: - name: Upload iOS build to S3 run: | aws s3 cp \ - ./build/app.ipa \ + ./build/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa \ s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa From 4fdb16271b8fefb29a6291457ce5ede53496d4f7 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Wed, 15 Oct 2025 11:01:22 -0300 Subject: [PATCH 04/29] chore: added aws metadata --- .github/workflows/release-android-base.yaml | 3 ++- .github/workflows/release-ios-base.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 52e03473..91f0a59a 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -139,4 +139,5 @@ jobs: run: | aws s3 cp \ ${{ inputs.output-path }} \ - s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk \ No newline at end of file + s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk + --metadata "branch=${{ github.ref_name }},type=${{ inputs.project-type }},release_type=${{ inputs.release-type }}" \ No newline at end of file diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 7030c227..c95bfbd3 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -169,3 +169,4 @@ jobs: aws s3 cp \ ./build/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa \ s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa + --metadata "branch=${{ github.ref_name }},type=${{ inputs.project-type }},release_type=${{ inputs.release-type }}" From 229a223e49c318f1cea4db7cb29cb7ec02a274d3 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:25:30 -0300 Subject: [PATCH 05/29] chore: added missing secret param + added commit sha to aws action --- .github/workflows/release-android-base.yaml | 2 +- .github/workflows/release-dapp-android-internal.yaml | 1 + .github/workflows/release-dapp-android-production.yaml | 1 + .github/workflows/release-dapp-ios-internal.yaml | 1 + .github/workflows/release-dapp-ios-production.yaml | 1 + .github/workflows/release-ios-base.yaml | 2 +- .github/workflows/release-wallet-android-internal.yaml | 1 + .github/workflows/release-wallet-android-production.yaml | 1 + .github/workflows/release-wallet-ios-internal.yaml | 1 + .github/workflows/release-wallet-ios-production.yaml | 1 + 10 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 91f0a59a..d1628e9f 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -130,7 +130,7 @@ jobs: --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 + uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index 833378f4..7206516e 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -24,3 +24,4 @@ jobs: gsa-key: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }} keystore-name: ${{ secrets.WC_INTERNAL_KEYSTORE_NAME }} keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index eb7b8898..ff5e474e 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -24,3 +24,4 @@ jobs: gsa-key: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }} keystore-name: ${{ vars.WC_PROD_KEYSTORE_NAME }} keystore: ${{ secrets.WC_PROD_KEYSTORE }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index 5820c584..bb71ad1f 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -31,4 +31,5 @@ jobs: match-keychain-password: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index 1a74c375..ede3bbe8 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -31,4 +31,5 @@ jobs: match-keychain-password: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index c95bfbd3..96360585 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -159,7 +159,7 @@ jobs: BRANCH_NAME: ${{ github.ref_name }} - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 + uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index 224f3e86..f40be8a5 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -25,3 +25,4 @@ jobs: keystore-name: ${{ secrets.WC_INTERNAL_KEYSTORE_NAME }} keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index c8fbbd53..77ade23b 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -25,3 +25,4 @@ jobs: keystore-name: ${{ vars.WC_PROD_KEYSTORE_NAME }} keystore: ${{ secrets.WC_PROD_KEYSTORE }} google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index b44817cc..959b1bed 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -32,3 +32,4 @@ jobs: match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_INTERNAL_GOOGLE_SERVICES_FILE }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index ca31da47..a1a769eb 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -32,3 +32,4 @@ jobs: match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_PROD_GOOGLE_SERVICES_FILE }} + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} From d5b07fbc2fdeff4891a83fcdbd66325991a10a60 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:04:26 -0300 Subject: [PATCH 06/29] chore: changed aws credentials version --- .github/workflows/release-android-base.yaml | 2 +- .github/workflows/release-ios-base.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index d1628e9f..0cc721e2 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -130,7 +130,7 @@ jobs: --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a + uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 96360585..ebb5ba94 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -159,7 +159,7 @@ jobs: BRANCH_NAME: ${{ github.ref_name }} - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a + uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 From d5a1bb575ab37f419192a3bf0427fa60c1ff5382 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:52:33 -0300 Subject: [PATCH 07/29] chore: added id-token permission to android wallet action --- .github/workflows/release-wallet-android-internal.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index f40be8a5..3e4cf241 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -1,6 +1,7 @@ name: release-android-walletkit-internal permissions: + id-token: write contents: read on: workflow_dispatch From 4f4338378d62287247ada81b9ac7ca8141673851 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:54:08 -0300 Subject: [PATCH 08/29] chore: added id-token write to remaining actions --- .github/workflows/release-dapp-android-internal.yaml | 1 + .github/workflows/release-dapp-android-production.yaml | 1 + .github/workflows/release-dapp-ios-internal.yaml | 1 + .github/workflows/release-dapp-ios-production.yaml | 1 + .github/workflows/release-wallet-android-production.yaml | 1 + .github/workflows/release-wallet-ios-internal.yaml | 1 + .github/workflows/release-wallet-ios-production.yaml | 1 + 7 files changed, 7 insertions(+) diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index 7206516e..f9649e37 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -1,6 +1,7 @@ name: release-android-appkit-internal permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index ff5e474e..ffd18245 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -1,6 +1,7 @@ name: release-android-appkit-production permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index bb71ad1f..0ea00116 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -1,6 +1,7 @@ name: release-ios-appkit-internal permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index ede3bbe8..aa97a395 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -1,6 +1,7 @@ name: release-ios-appkit-production permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index 77ade23b..1df33a84 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -1,6 +1,7 @@ name: release-android-walletkit-production permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index 959b1bed..5c927662 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -1,6 +1,7 @@ name: release-ios-walletkit-internal permissions: + id-token: write contents: read on: workflow_dispatch diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index a1a769eb..d5d236c9 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -1,6 +1,7 @@ name: release-ios-walletkit-production permissions: + id-token: write contents: read on: workflow_dispatch From be6b45334b280a7ad8ba88857ce35ca19d33a3e7 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:14:10 -0300 Subject: [PATCH 09/29] chore: removed wrong param on aws bucket --- .github/workflows/release-android-base.yaml | 2 +- .github/workflows/release-ios-base.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 0cc721e2..d533156c 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -136,8 +136,8 @@ jobs: aws-region: eu-central-1 - name: Upload Android build to S3 + continue-on-error: true run: | aws s3 cp \ ${{ inputs.output-path }} \ s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk - --metadata "branch=${{ github.ref_name }},type=${{ inputs.project-type }},release_type=${{ inputs.release-type }}" \ No newline at end of file diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index ebb5ba94..733cb163 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -165,8 +165,8 @@ jobs: aws-region: eu-central-1 - name: Upload iOS build to S3 + continue-on-error: true run: | aws s3 cp \ ./build/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa \ s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa - --metadata "branch=${{ github.ref_name }},type=${{ inputs.project-type }},release_type=${{ inputs.release-type }}" From f5eafd461851567845065f7c443929d54831d21a Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:19:36 -0300 Subject: [PATCH 10/29] chore: added slack notification --- .github/workflows/release-android-base.yaml | 79 +++++++++++++++++++ .../release-dapp-android-internal.yaml | 2 + .../release-dapp-android-production.yaml | 2 + .../workflows/release-dapp-ios-internal.yaml | 2 + .../release-dapp-ios-production.yaml | 2 + .github/workflows/release-ios-base.yaml | 53 +++++++++++++ .../release-wallet-android-internal.yaml | 2 + .../release-wallet-android-production.yaml | 2 + .../release-wallet-ios-internal.yaml | 2 + .../release-wallet-ios-production.yaml | 2 + fastlane/Fastfile | 4 +- 11 files changed, 150 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index d533156c..a76e22ae 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -27,6 +27,10 @@ on: description: 'Path to get the APK file' required: true type: string + firebase-url: + description: 'Firebase URL of the project' + required: false + type: string secrets: project-id: description: 'Reown Cloud ID' @@ -52,6 +56,8 @@ on: required: false aws-account-id: required: true + slack-webhook-url: + required: true jobs: build: @@ -121,6 +127,8 @@ jobs: gcp_sa_key: ${{ secrets.gsa-key }} - name: Upload APK to Firebase + id: firebase-upload + continue-on-error: false env: APP_ID: ${{ secrets.firebase-app-id }} run: | @@ -130,14 +138,85 @@ jobs: --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" - name: Configure AWS credentials + id: aws-config + continue-on-error: true uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 - name: Upload Android build to S3 + id: s3-upload continue-on-error: true run: | aws s3 cp \ ${{ inputs.output-path }} \ s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk + + - name: Send Slack notification + if: always() + uses: slackapi/slack-github-action@v2.1.0 + with: + webhook: ${{ secrets.slack-webhook-url }} + webhook-type: incoming-webhook + payload: | + { + "text": "Android Build Report - ${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }}", + "blocks": [ + { + "type": "header", + "text": { + "type": "plain_text", + "text": "🤖 Android Build Report" + } + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*Project:*\n${{ inputs.name }} (${{ inputs.project-type }})" + }, + { + "type": "mrkdwn", + "text": "*Release Type:*\n${{ inputs.release-type }}" + }, + { + "type": "mrkdwn", + "text": "*Branch:*\n${{ github.ref_name }}" + } + ] + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*Build:*\n${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}" + }, + { + "type": "mrkdwn", + "text": "*Firebase Upload:*\n${{ steps.firebase-upload.outcome == 'success' && '✅ Success' || steps.firebase-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" + }, + { + "type": "mrkdwn", + "text": "*S3 Upload:*\n${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" + }, + { + "type": "mrkdwn", + "text": "*Overall Status:*\n${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}" + } + ] + }, + { + "type": "actions", + "elements": [ + { + "type": "button", + "text": { "type": "plain_text", "text": "View Workflow Run" }, + "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + }${{ steps.build.outcome == 'success' && steps.firebase-upload.outcome == 'success' && inputs.firebase-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in Firebase"}},"url":"{0}"}}', inputs.firebase-url) || '' }} + ] + } + ] + } \ No newline at end of file diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index f9649e37..338174b9 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -26,3 +26,5 @@ jobs: keystore-name: ${{ secrets.WC_INTERNAL_KEYSTORE_NAME }} keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_APPKIT_INTERNAL_URL }} \ No newline at end of file diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index ffd18245..d0c30263 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -26,3 +26,5 @@ jobs: keystore-name: ${{ vars.WC_PROD_KEYSTORE_NAME }} keystore: ${{ secrets.WC_PROD_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index 0ea00116..2129f0a1 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -33,4 +33,6 @@ jobs: match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index aa97a395..5a45566c 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -33,4 +33,6 @@ jobs: match-git-url: ${{ secrets.MATCH_GIT_URL }} match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 733cb163..4a7b7db6 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -42,6 +42,10 @@ on: description: 'App ID of the project' required: true type: string + testflight-url: + description: 'TestFlight URL of the project' + required: false + type: string secrets: project-id: description: 'WalletConnect Cloud ID' @@ -73,6 +77,8 @@ on: required: false aws-account-id: required: true + slack-webhook-url: + required: true jobs: build: @@ -137,6 +143,7 @@ jobs: run: echo ${{ env.google-services-file }} | base64 --decode >> ${{ inputs.root-path }}/ios/GoogleService-Info.plist - name: Build and Upload to App Store + id: build uses: maierj/fastlane-action@v3.0.0 with: lane: 'release_testflight' @@ -159,14 +166,60 @@ jobs: BRANCH_NAME: ${{ github.ref_name }} - name: Configure AWS credentials + id: aws-config + continue-on-error: true uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 - name: Upload iOS build to S3 + id: s3-upload continue-on-error: true run: | aws s3 cp \ ./build/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa \ s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa + + - name: Send Slack notification + if: always() + uses: slackapi/slack-github-action@v2.1.0 + with: + webhook: ${{ secrets.slack-webhook-url }} + webhook-type: incoming-webhook + payload: | + { + "text": "iOS Build Report - ${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }}", + "blocks": [ + { + "type": "header", + "text": { "type": "plain_text", "text": "🍎 iOS Build Report" } + }, + { + "type": "section", + "fields": [ + { "type": "mrkdwn", "text": "*Project:*\n${{ inputs.name }} (${{ inputs.project-type }})" }, + { "type": "mrkdwn", "text": "*Release Type:*\n${{ inputs.release-type }}" }, + { "type": "mrkdwn", "text": "*Branch:*\n${{ github.ref_name }}" } + ] + }, + { + "type": "section", + "fields": [ + { "type": "mrkdwn", "text": "*Build & TestFlight:*\n${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}" }, + { "type": "mrkdwn", "text": "*S3 Upload:*\n${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" }, + { "type": "mrkdwn", "text": "*Overall Status:*\n${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}" } + ] + }, + { + "type": "actions", + "elements": [ + { + "type": "button", + "text": { "type": "plain_text", "text": "View Workflow Run" }, + "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + }${{ steps.build.outcome == 'success' && inputs.testflight-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in TestFlight"}},"url":"{0}"}}', inputs.testflight-url) || '' }} + ] + } + ] + } \ No newline at end of file diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index 3e4cf241..2f471eb9 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -27,3 +27,5 @@ jobs: keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index 1df33a84..2456f2ec 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -27,3 +27,5 @@ jobs: keystore: ${{ secrets.WC_PROD_KEYSTORE }} google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_PROD_URL }} diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index 5c927662..b97681f0 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -34,3 +34,5 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_INTERNAL_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index d5d236c9..8066c3a6 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -34,3 +34,5 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_PROD_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_PROD_URL }} \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 29ac6173..6d99e5a5 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -82,8 +82,8 @@ platform :ios do apple_id: ENV["APPLE_ID"], app_identifier: ENV["BUNDLE_ID"], changelog: "#{project_type} build from branch: #{branch_name}", - distribute_external: false, - notify_external_testers: false, + distribute_external: true, + notify_external_testers: true, skip_waiting_for_build_processing: true ) From 9cf384c7a6bc97c8e1a05715737b136652ad483b Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:40:45 -0300 Subject: [PATCH 11/29] chore: added CI condition when removing fastlane artifacts --- fastlane/Fastfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 6d99e5a5..41b040eb 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -87,7 +87,8 @@ platform :ios do skip_waiting_for_build_processing: true ) - clean_build_artifacts() + # Only clean artifacts when running locally (not in CI) + clean_build_artifacts() unless ENV['CI'] end From 53cc09457855abaa5caf43ba774864b4f5e67832 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:44:01 -0300 Subject: [PATCH 12/29] chore: moved store urls to inputs --- .github/workflows/release-dapp-android-internal.yaml | 4 ++-- .github/workflows/release-dapp-android-production.yaml | 2 +- .github/workflows/release-dapp-ios-internal.yaml | 2 +- .github/workflows/release-dapp-ios-production.yaml | 2 +- .github/workflows/release-wallet-android-internal.yaml | 2 +- .github/workflows/release-wallet-android-production.yaml | 2 +- .github/workflows/release-wallet-ios-internal.yaml | 2 +- .github/workflows/release-wallet-ios-production.yaml | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index 338174b9..c61be58c 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -14,6 +14,7 @@ jobs: root-path: 'dapps/W3MWagmi' release-type: 'internal' project-type: 'dapp' + firebase-url: ${{ secrets.FIREBASE_APPKIT_INTERNAL_URL }} output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/internal/app-internal.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} @@ -26,5 +27,4 @@ jobs: keystore-name: ${{ secrets.WC_INTERNAL_KEYSTORE_NAME }} keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} - slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - firebase-url: ${{ secrets.FIREBASE_APPKIT_INTERNAL_URL }} \ No newline at end of file + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index d0c30263..f0da67db 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -14,6 +14,7 @@ jobs: root-path: 'dapps/W3MWagmi' release-type: 'production' project-type: 'dapp' + firebase-url: ${{ secrets.FIREBASE_APPKIT_PROD_URL }} output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} @@ -27,4 +28,3 @@ jobs: keystore: ${{ secrets.WC_PROD_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - firebase-url: ${{ secrets.FIREBASE_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index 2129f0a1..82e6d720 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -19,6 +19,7 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample.internal' apple-id: '6479817037' project-type: 'dapp' + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -34,5 +35,4 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index 5a45566c..c95f1ad2 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -19,6 +19,7 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample' apple-id: '6446700301' project-type: 'dapp' + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_PROD_URL }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -34,5 +35,4 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index 2f471eb9..907ae9c4 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -15,6 +15,7 @@ jobs: release-type: 'internal' project-type: 'wallet' output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/internal/app-internal.apk' + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -28,4 +29,3 @@ jobs: google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - firebase-url: ${{ secrets.FIREBASE_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index 2456f2ec..f1815d2a 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -14,6 +14,7 @@ jobs: root-path: 'wallets/rn_cli_wallet' release-type: 'production' project-type: 'wallet' + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_PROD_URL }} output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} @@ -28,4 +29,3 @@ jobs: google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - firebase-url: ${{ secrets.FIREBASE_WALLETKIT_PROD_URL }} diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index b97681f0..cb5076e6 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -19,6 +19,7 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample.internal' apple-id: '6499165794' project-type: 'wallet' + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -35,4 +36,3 @@ jobs: google-services-file: ${{ secrets.W3W_IOS_INTERNAL_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index 8066c3a6..d3d0154f 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -19,6 +19,7 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample' apple-id: '6449264964' project-type: 'wallet' + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_PROD_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -34,5 +35,4 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_PROD_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} - slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} - testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_PROD_URL }} \ No newline at end of file + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file From 9924e6ea4bd62a23825457f04d1799c66f95d3c5 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:47:31 -0300 Subject: [PATCH 13/29] chore: reverted last change + added urls to secrets --- .github/workflows/release-android-base.yaml | 7 +++---- .github/workflows/release-dapp-android-internal.yaml | 4 ++-- .github/workflows/release-dapp-android-production.yaml | 2 +- .github/workflows/release-dapp-ios-internal.yaml | 2 +- .github/workflows/release-dapp-ios-production.yaml | 2 +- .github/workflows/release-ios-base.yaml | 7 +++---- .github/workflows/release-wallet-android-internal.yaml | 2 +- .github/workflows/release-wallet-android-production.yaml | 2 +- .github/workflows/release-wallet-ios-internal.yaml | 2 +- .github/workflows/release-wallet-ios-production.yaml | 4 ++-- 10 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index a76e22ae..9e6431e1 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -27,10 +27,6 @@ on: description: 'Path to get the APK file' required: true type: string - firebase-url: - description: 'Firebase URL of the project' - required: false - type: string secrets: project-id: description: 'Reown Cloud ID' @@ -58,6 +54,9 @@ on: required: true slack-webhook-url: required: true + firebase-url: + description: 'Firebase URL of the project' + required: false jobs: build: diff --git a/.github/workflows/release-dapp-android-internal.yaml b/.github/workflows/release-dapp-android-internal.yaml index c61be58c..338174b9 100644 --- a/.github/workflows/release-dapp-android-internal.yaml +++ b/.github/workflows/release-dapp-android-internal.yaml @@ -14,7 +14,6 @@ jobs: root-path: 'dapps/W3MWagmi' release-type: 'internal' project-type: 'dapp' - firebase-url: ${{ secrets.FIREBASE_APPKIT_INTERNAL_URL }} output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/internal/app-internal.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} @@ -27,4 +26,5 @@ jobs: keystore-name: ${{ secrets.WC_INTERNAL_KEYSTORE_NAME }} keystore: ${{ secrets.WC_INTERNAL_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} - slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_APPKIT_INTERNAL_URL }} \ No newline at end of file diff --git a/.github/workflows/release-dapp-android-production.yaml b/.github/workflows/release-dapp-android-production.yaml index f0da67db..d0c30263 100644 --- a/.github/workflows/release-dapp-android-production.yaml +++ b/.github/workflows/release-dapp-android-production.yaml @@ -14,7 +14,6 @@ jobs: root-path: 'dapps/W3MWagmi' release-type: 'production' project-type: 'dapp' - firebase-url: ${{ secrets.FIREBASE_APPKIT_PROD_URL }} output-path: 'dapps/W3MWagmi/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} @@ -28,3 +27,4 @@ jobs: keystore: ${{ secrets.WC_PROD_KEYSTORE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index 82e6d720..2129f0a1 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -19,7 +19,6 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample.internal' apple-id: '6479817037' project-type: 'dapp' - testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -35,4 +34,5 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index c95f1ad2..5a45566c 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -19,7 +19,6 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample' apple-id: '6446700301' project-type: 'dapp' - testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_PROD_URL }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -35,4 +34,5 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_APPKIT_PROD_URL }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 4a7b7db6..b4b8a895 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -42,10 +42,6 @@ on: description: 'App ID of the project' required: true type: string - testflight-url: - description: 'TestFlight URL of the project' - required: false - type: string secrets: project-id: description: 'WalletConnect Cloud ID' @@ -79,6 +75,9 @@ on: required: true slack-webhook-url: required: true + testflight-url: + description: 'TestFlight URL of the project' + required: false jobs: build: diff --git a/.github/workflows/release-wallet-android-internal.yaml b/.github/workflows/release-wallet-android-internal.yaml index 907ae9c4..2f471eb9 100644 --- a/.github/workflows/release-wallet-android-internal.yaml +++ b/.github/workflows/release-wallet-android-internal.yaml @@ -15,7 +15,6 @@ jobs: release-type: 'internal' project-type: 'wallet' output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/internal/app-internal.apk' - firebase-url: ${{ secrets.FIREBASE_WALLETKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -29,3 +28,4 @@ jobs: google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-android-production.yaml b/.github/workflows/release-wallet-android-production.yaml index f1815d2a..2456f2ec 100644 --- a/.github/workflows/release-wallet-android-production.yaml +++ b/.github/workflows/release-wallet-android-production.yaml @@ -14,7 +14,6 @@ jobs: root-path: 'wallets/rn_cli_wallet' release-type: 'production' project-type: 'wallet' - firebase-url: ${{ secrets.FIREBASE_WALLETKIT_PROD_URL }} output-path: 'wallets/rn_cli_wallet/android/app/build/outputs/apk/release/app-release.apk' secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} @@ -29,3 +28,4 @@ jobs: google-services-file: ${{ secrets.ANDROID_GOOGLE_SERVICES_BASE64 }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + firebase-url: ${{ secrets.FIREBASE_WALLETKIT_PROD_URL }} diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index cb5076e6..b97681f0 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -19,7 +19,6 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample.internal' apple-id: '6499165794' project-type: 'wallet' - testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_INTERNAL_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -36,3 +35,4 @@ jobs: google-services-file: ${{ secrets.W3W_IOS_INTERNAL_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_INTERNAL_URL }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index d3d0154f..8066c3a6 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -19,7 +19,6 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample' apple-id: '6449264964' project-type: 'wallet' - testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_PROD_URL }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} @@ -35,4 +34,5 @@ jobs: match-ssh-key: ${{ secrets.MATCH_SSH_KEY }} google-services-file: ${{ secrets.W3W_IOS_PROD_GOOGLE_SERVICES_FILE }} aws-account-id: ${{ secrets.AWS_ACCOUNT_ID }} - slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file + slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} + testflight-url: ${{ secrets.TESTFLIGHT_WALLETKIT_PROD_URL }} \ No newline at end of file From ea4bb03db31497d4bf0b0d4611f7ef8e0e1f06ff Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 12:14:46 -0300 Subject: [PATCH 14/29] chore: remove xcode set from base workflow --- .github/workflows/release-ios-base.yaml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index b4b8a895..68485da8 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -96,13 +96,6 @@ jobs: with: root-path: ${{ inputs.root-path }} - - name: Set Xcode Version - run: | - sudo xcode-select -s /Applications/Xcode_16.2.app - xcodebuild -version - xcodebuild -showsdks - sudo xcodebuild -downloadPlatform iOS - - name: Set podfile path id: podfile-hash run: | From fbb58d83a473bff3a7a0c7625e872651bd779547 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 12:17:53 -0300 Subject: [PATCH 15/29] chore: correctly access store urls --- .github/workflows/release-android-base.yaml | 2 +- .github/workflows/release-ios-base.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 9e6431e1..bef4ddb6 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -214,7 +214,7 @@ jobs: "type": "button", "text": { "type": "plain_text", "text": "View Workflow Run" }, "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - }${{ steps.build.outcome == 'success' && steps.firebase-upload.outcome == 'success' && inputs.firebase-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in Firebase"}},"url":"{0}"}}', inputs.firebase-url) || '' }} + }${{ steps.build.outcome == 'success' && steps.firebase-upload.outcome == 'success' && secrets.firebase-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in Firebase"}},"url":"{0}"}}', secrets.firebase-url) || '' }} ] } ] diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 68485da8..734a4ad9 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -210,7 +210,7 @@ jobs: "type": "button", "text": { "type": "plain_text", "text": "View Workflow Run" }, "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - }${{ steps.build.outcome == 'success' && inputs.testflight-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in TestFlight"}},"url":"{0}"}}', inputs.testflight-url) || '' }} + }${{ steps.build.outcome == 'success' && secrets.testflight-url != '' && format(',{{"type":"button","text":{{"type":"plain_text","text":"View in TestFlight"}},"url":"{0}"}}', secrets.testflight-url) || '' }} ] } ] From b3f5aa21fbb6287f55708ce562458b7c01cde74a Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 12:26:10 -0300 Subject: [PATCH 16/29] chore: dont send slack notification if workflow was cancelled --- .github/workflows/release-android-base.yaml | 2 +- .github/workflows/release-ios-base.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index bef4ddb6..30a78a25 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -153,7 +153,7 @@ jobs: s3://walletconnect.react-native-builds.prod/android/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.apk - name: Send Slack notification - if: always() + if: always() && !cancelled() uses: slackapi/slack-github-action@v2.1.0 with: webhook: ${{ secrets.slack-webhook-url }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 734a4ad9..ca3e2b55 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -174,7 +174,7 @@ jobs: s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa - name: Send Slack notification - if: always() + if: always() && !cancelled() uses: slackapi/slack-github-action@v2.1.0 with: webhook: ${{ secrets.slack-webhook-url }} From 35039d685d42b908ad7f865397d68c16c8270786 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 13:07:02 -0300 Subject: [PATCH 17/29] chore: slack message ui change --- .github/workflows/release-android-base.yaml | 40 +++++---------------- .github/workflows/release-ios-base.yaml | 12 +++---- 2 files changed, 14 insertions(+), 38 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 30a78a25..7d0e38a0 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -164,47 +164,23 @@ jobs: "blocks": [ { "type": "header", - "text": { - "type": "plain_text", - "text": "🤖 Android Build Report" - } + "text": { "type": "plain_text", "text": "🤖 Android Build Report" } }, { "type": "section", "fields": [ - { - "type": "mrkdwn", - "text": "*Project:*\n${{ inputs.name }} (${{ inputs.project-type }})" - }, - { - "type": "mrkdwn", - "text": "*Release Type:*\n${{ inputs.release-type }}" - }, - { - "type": "mrkdwn", - "text": "*Branch:*\n${{ github.ref_name }}" - } + { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }} (${{ inputs.project-type }})`" }, + { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, + { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } ] }, { "type": "section", "fields": [ - { - "type": "mrkdwn", - "text": "*Build:*\n${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}" - }, - { - "type": "mrkdwn", - "text": "*Firebase Upload:*\n${{ steps.firebase-upload.outcome == 'success' && '✅ Success' || steps.firebase-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" - }, - { - "type": "mrkdwn", - "text": "*S3 Upload:*\n${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" - }, - { - "type": "mrkdwn", - "text": "*Overall Status:*\n${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}" - } + { "type": "mrkdwn", "text": "*Build:*\n`${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}`" }, + { "type": "mrkdwn", "text": "*Firebase Upload:*\n`${{ steps.firebase-upload.outcome == 'success' && '✅ Success' || steps.firebase-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}`" }, + { "type": "mrkdwn", "text": "*S3 Upload:*\n`${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}`" }, + { "type": "mrkdwn", "text": "*Overall Status:*\n`${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}`" } ] }, { diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index ca3e2b55..21632b45 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -190,17 +190,17 @@ jobs: { "type": "section", "fields": [ - { "type": "mrkdwn", "text": "*Project:*\n${{ inputs.name }} (${{ inputs.project-type }})" }, - { "type": "mrkdwn", "text": "*Release Type:*\n${{ inputs.release-type }}" }, - { "type": "mrkdwn", "text": "*Branch:*\n${{ github.ref_name }}" } + { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }} (${{ inputs.project-type }})`" }, + { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, + { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } ] }, { "type": "section", "fields": [ - { "type": "mrkdwn", "text": "*Build & TestFlight:*\n${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}" }, - { "type": "mrkdwn", "text": "*S3 Upload:*\n${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}" }, - { "type": "mrkdwn", "text": "*Overall Status:*\n${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}" } + { "type": "mrkdwn", "text": "*Build & TestFlight:*\n`${{ steps.build.outcome == 'success' && '✅ Success' || '❌ Failed' }}`" }, + { "type": "mrkdwn", "text": "*S3 Upload:*\n`${{ steps.s3-upload.outcome == 'success' && '✅ Success' || steps.s3-upload.outcome == 'failure' && '❌ Failed' || '⏭️ Skipped' }}`" }, + { "type": "mrkdwn", "text": "*Overall Status:*\n`${{ job.status == 'success' && '✅ Success' || '❌ Failed' }}`" } ] }, { From 011400879fbfe5486807946b266960412875925f Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:39:37 -0300 Subject: [PATCH 18/29] chore: added missing id on build step --- .github/workflows/release-android-base.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index 7d0e38a0..e1eea59b 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -112,6 +112,7 @@ jobs: ${{ runner.os }}-gradle-${{ github.ref_name }}- - name: Build APK + id: build run: | if [ ${{ inputs.release-type }} = 'internal' ]; then cd ${{ inputs.root-path }} && yarn install && yarn run android:build:internal From 5ee0a8cca3349f7638896befd8fcb2206e7dc647 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:46:21 -0300 Subject: [PATCH 19/29] chore: removed project type from slack report --- .github/workflows/release-android-base.yaml | 4 ++-- .github/workflows/release-ios-base.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index e1eea59b..bbede063 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -161,7 +161,7 @@ jobs: webhook-type: incoming-webhook payload: | { - "text": "Android Build Report - ${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }}", + "text": "Android Build Report - ${{ inputs.name }} - ${{ inputs.release-type }}", "blocks": [ { "type": "header", @@ -170,7 +170,7 @@ jobs: { "type": "section", "fields": [ - { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }} (${{ inputs.project-type }})`" }, + { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }}`" }, { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } ] diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 21632b45..cbddda27 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -181,7 +181,7 @@ jobs: webhook-type: incoming-webhook payload: | { - "text": "iOS Build Report - ${{ inputs.name }} (${{ inputs.project-type }}) - ${{ inputs.release-type }}", + "text": "iOS Build Report - ${{ inputs.name }} - ${{ inputs.release-type }}", "blocks": [ { "type": "header", @@ -190,7 +190,7 @@ jobs: { "type": "section", "fields": [ - { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }} (${{ inputs.project-type }})`" }, + { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }}`" }, { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } ] From b0cd4e7488d73274e7a822b867a0f03d7584a1bb Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 11:45:42 -0300 Subject: [PATCH 20/29] chore: changed architecture on android wallet --- wallets/rn_cli_wallet/android/gradle.properties | 2 +- wallets/rn_cli_wallet/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wallets/rn_cli_wallet/android/gradle.properties b/wallets/rn_cli_wallet/android/gradle.properties index 87585a64..3334629c 100644 --- a/wallets/rn_cli_wallet/android/gradle.properties +++ b/wallets/rn_cli_wallet/android/gradle.properties @@ -25,7 +25,7 @@ android.useAndroidX=true # Use this property to specify which architecture you want to build. # You can also override it from the CLI using # ./gradlew -PreactNativeArchitectures=x86_64 -reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +reactNativeArchitectures=arm64-v8a,x86_64 # Use this property to enable support to the new architecture. # This will allow you to use TurboModules and the Fabric render in diff --git a/wallets/rn_cli_wallet/package.json b/wallets/rn_cli_wallet/package.json index 807dd94b..b99a4384 100644 --- a/wallets/rn_cli_wallet/package.json +++ b/wallets/rn_cli_wallet/package.json @@ -4,8 +4,8 @@ "private": true, "scripts": { "android": "yarn run copy:debug && react-native run-android --mode=debug --appId com.walletconnect.web3wallet.rnsample.debug", - "android:build": "yarn run copy:production && cd android && ./gradlew clean && ./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a", - "android:build:internal": "yarn run copy:internal && cd android && ./gradlew clean && ./gradlew assembleInternal -PreactNativeArchitectures=arm64-v8a", + "android:build": "yarn run copy:production && cd android && ./gradlew clean && ./gradlew assembleRelease", + "android:build:internal": "yarn run copy:internal && cd android && ./gradlew clean && ./gradlew assembleInternal", "ios": "react-native run-ios --scheme 'RNWallet-Debug'", "ios:internal": "react-native run-ios --scheme 'RNWallet-Internal'", "bundle:ios": "react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'", From 4398a7c2caa2ddf9eb40b2058e9bdc2577ae1fb6 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 13:22:36 -0300 Subject: [PATCH 21/29] chore: added new lane to build for simulators --- .../workflows/release-dapp-ios-internal.yaml | 10 +++++- .../release-dapp-ios-production.yaml | 10 +++++- .github/workflows/release-ios-base.yaml | 35 +++++++++++-------- .../release-wallet-ios-internal.yaml | 10 +++++- .../release-wallet-ios-production.yaml | 10 +++++- fastlane/Fastfile | 30 ++++++++++++++++ fastlane/README.md | 8 +++++ 7 files changed, 95 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index 2129f0a1..d32012e6 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -4,7 +4,14 @@ permissions: id-token: write contents: read -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + build-for-simulator: + description: "Build for simulator instead of App Store" + required: false + default: false + type: boolean jobs: release-internal: @@ -19,6 +26,7 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample.internal' apple-id: '6479817037' project-type: 'dapp' + build-for-simulator: ${{ inputs.build-for-simulator }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index 5a45566c..329a7abc 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -4,7 +4,14 @@ permissions: id-token: write contents: read -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + build-for-simulator: + description: "Build for simulator instead of App Store" + required: false + default: false + type: boolean jobs: release-production: @@ -19,6 +26,7 @@ jobs: bundle-id: 'com.walletconnect.web3modal.rnsample' apple-id: '6446700301' project-type: 'dapp' + build-for-simulator: ${{ inputs.build-for-simulator }} secrets: project-id: ${{ secrets.ENV_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index cbddda27..d737a121 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -8,46 +8,51 @@ on: workflow_call: inputs: name: - description: 'Name of the project' + description: "Name of the project" required: true type: string root-path: - description: 'Path of the react-native project' + description: "Path of the react-native project" required: true type: string xcode-project-path: - description: 'Path of the Xcode project' + description: "Path of the Xcode project" required: true type: string xcode-workspace-path: - description: 'Path of the Xcode workspace' + description: "Path of the Xcode workspace" required: true type: string release-type: - description: 'Release type of the project (debug/internal/production)' + description: "Release type of the project (debug/internal/production)" type: string project-type: - description: 'Type of project (wallet/dapp)' + description: "Type of project (wallet/dapp)" required: true type: string scheme-name: - description: 'Scheme name of the project' + description: "Scheme name of the project" required: true type: string bundle-id: - description: 'Bundle ID of the project' + description: "Bundle ID of the project" required: true type: string apple-id: - description: 'App ID of the project' + description: "App ID of the project" required: true type: string + build-for-simulator: + description: "Build for simulator instead of App Store" + required: false + default: false + type: boolean secrets: project-id: - description: 'WalletConnect Cloud ID' + description: "WalletConnect Cloud ID" required: true relay-url: - description: 'WalletConnect Relay URL' + description: "WalletConnect Relay URL" required: false sentry-dsn: required: true @@ -76,7 +81,7 @@ on: slack-webhook-url: required: true testflight-url: - description: 'TestFlight URL of the project' + description: "TestFlight URL of the project" required: false jobs: @@ -138,7 +143,7 @@ jobs: id: build uses: maierj/fastlane-action@v3.0.0 with: - lane: 'release_testflight' + lane: ${{ inputs.build-for-simulator && 'build_for_simulator' || 'release_testflight' }} env: APPLE_ID: ${{ inputs.apple-id }} APPLE_USERNAME: ${{ secrets.apple-username }} @@ -156,6 +161,7 @@ jobs: PROJECT_TYPE: ${{ inputs.project-type }} RELEASE_TYPE: ${{ inputs.release-type }} BRANCH_NAME: ${{ github.ref_name }} + BUILD_FOR_SIMULATOR: ${{ inputs.build-for-simulator }} - name: Configure AWS credentials id: aws-config @@ -166,6 +172,7 @@ jobs: aws-region: eu-central-1 - name: Upload iOS build to S3 + if: ${{ inputs.build-for-simulator == true }} # Upload to bucket only for simulator builds id: s3-upload continue-on-error: true run: | @@ -214,4 +221,4 @@ jobs: ] } ] - } \ No newline at end of file + } diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index b97681f0..1af0526f 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -4,7 +4,14 @@ permissions: id-token: write contents: read -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + build-for-simulator: + description: "Build for simulator instead of App Store" + required: false + default: false + type: boolean jobs: release-internal: @@ -19,6 +26,7 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample.internal' apple-id: '6499165794' project-type: 'wallet' + build-for-simulator: ${{ inputs.build-for-simulator }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index 8066c3a6..d1ed724d 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -4,7 +4,14 @@ permissions: id-token: write contents: read -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + build-for-simulator: + description: "Build for simulator instead of App Store" + required: false + default: false + type: boolean jobs: release-production: @@ -19,6 +26,7 @@ jobs: bundle-id: 'com.walletconnect.web3wallet.rnsample' apple-id: '6449264964' project-type: 'wallet' + build-for-simulator: ${{ inputs.build-for-simulator }} secrets: project-id: ${{ secrets.ENV_WALLET_PROJECT_ID }} relay-url: ${{ secrets.ENV_RELAY_URL }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 41b040eb..1fa4660a 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -91,5 +91,35 @@ platform :ios do clean_build_artifacts() unless ENV['CI'] end + lane :build_for_simulator do |options| + # No setup_ci or match needed for simulator builds + + project_type = ENV['PROJECT_TYPE'] || ENV['SCHEME'] + + # Install pods + cocoapods( + clean_install: false, + repo_update: true, + podfile: ENV['PODFILE_PATH'] + ) + + # Build for simulator + gym( + configuration: "Release", + workspace: ENV['XCWORKSPACE_PATH'], + scheme: ENV['SCHEME'], + destination: "generic/platform=iOS Simulator", + skip_package_ipa: false, + export_method: "development", + output_directory: "./build", + output_name: "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa", + codesigning_identity: "-", + skip_codesigning: true + ) + + # Only clean artifacts when running locally (not in CI) + clean_build_artifacts() unless ENV['CI'] + end + end diff --git a/fastlane/README.md b/fastlane/README.md index 8b40179f..977fbcd1 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -23,6 +23,14 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do +### ios build_for_simulator + +```sh +[bundle exec] fastlane ios build_for_simulator +``` + + + ---- This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. From 06b8b3f3aeef88ecf548842cc1cd6c9c3204fa3c Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 15:38:10 -0300 Subject: [PATCH 22/29] chore: create ios version for simulators --- .github/workflows/release-ios-base.yaml | 1 + fastlane/Fastfile | 35 ++++++++++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index d737a121..6951a456 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -200,6 +200,7 @@ jobs: { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }}`" }, { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } + { "type": "mrkdwn", "text": "*Build for Simulator:*\n`${{ inputs.build-for-simulator }}`" } ] }, { diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 1fa4660a..fc5b6d57 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -92,8 +92,7 @@ platform :ios do end lane :build_for_simulator do |options| - # No setup_ci or match needed for simulator builds - + project_type = ENV['PROJECT_TYPE'] || ENV['SCHEME'] # Install pods @@ -103,19 +102,37 @@ platform :ios do podfile: ENV['PODFILE_PATH'] ) - # Build for simulator + # Build for simulator without code signing + archive_path = "./build/#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.xcarchive" + gym( - configuration: "Release", workspace: ENV['XCWORKSPACE_PATH'], scheme: ENV['SCHEME'], + configuration: "Release", destination: "generic/platform=iOS Simulator", - skip_package_ipa: false, - export_method: "development", + derived_data_path: "./build/DerivedData", output_directory: "./build", - output_name: "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa", - codesigning_identity: "-", - skip_codesigning: true + output_name: "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}", + archive_path: archive_path, + skip_codesigning: true, + skip_package_ipa: true, ) + + # Find the .app in the archive + products_path = "#{archive_path}/Products/Applications" + app_paths = Dir.glob("#{products_path}/*.app") + + app_path = app_paths.first + + if app_path + output_name = "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa" + + # Create IPA by zipping the .app + sh("cd '#{products_path}' && zip -r '#{File.expand_path('./build')}/#{output_name}' '#{File.basename(app_path)}'") + UI.success("✅ Created simulator build: ./build/#{output_name}") + else + UI.user_error!("Could not find .app bundle in #{products_path}") + end # Only clean artifacts when running locally (not in CI) clean_build_artifacts() unless ENV['CI'] From 2577ce9400fc1eaf3e06d8a487a2a3dfa15d3efa Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 15:56:12 -0300 Subject: [PATCH 23/29] chore: improvements --- .github/workflows/release-dapp-ios-internal.yaml | 2 +- .../workflows/release-dapp-ios-production.yaml | 2 +- .github/workflows/release-ios-base.yaml | 6 +++--- .../workflows/release-wallet-ios-internal.yaml | 2 +- .../workflows/release-wallet-ios-production.yaml | 2 +- fastlane/Fastfile | 16 +++++++++++++++- 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-dapp-ios-internal.yaml b/.github/workflows/release-dapp-ios-internal.yaml index d32012e6..7138ac73 100644 --- a/.github/workflows/release-dapp-ios-internal.yaml +++ b/.github/workflows/release-dapp-ios-internal.yaml @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: build-for-simulator: - description: "Build for simulator instead of App Store" + description: "Build for simulator instead of TestFlight" required: false default: false type: boolean diff --git a/.github/workflows/release-dapp-ios-production.yaml b/.github/workflows/release-dapp-ios-production.yaml index 329a7abc..04830ffb 100644 --- a/.github/workflows/release-dapp-ios-production.yaml +++ b/.github/workflows/release-dapp-ios-production.yaml @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: build-for-simulator: - description: "Build for simulator instead of App Store" + description: "Build for simulator instead of TestFlight" required: false default: false type: boolean diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index 6951a456..f62acfae 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -43,7 +43,7 @@ on: required: true type: string build-for-simulator: - description: "Build for simulator instead of App Store" + description: "Build for simulator instead of TestFlight" required: false default: false type: boolean @@ -139,7 +139,7 @@ jobs: if: ${{ env.google-services-file != '' }} run: echo ${{ env.google-services-file }} | base64 --decode >> ${{ inputs.root-path }}/ios/GoogleService-Info.plist - - name: Build and Upload to App Store + - name: ${{ inputs.build-for-simulator && 'Build for simulator' || 'Build and Upload to TestFlight' }} id: build uses: maierj/fastlane-action@v3.0.0 with: @@ -199,7 +199,7 @@ jobs: "fields": [ { "type": "mrkdwn", "text": "*Project:*\n`${{ inputs.name }}`" }, { "type": "mrkdwn", "text": "*Release Type:*\n`${{ inputs.release-type }}`" }, - { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" } + { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" }, { "type": "mrkdwn", "text": "*Build for Simulator:*\n`${{ inputs.build-for-simulator }}`" } ] }, diff --git a/.github/workflows/release-wallet-ios-internal.yaml b/.github/workflows/release-wallet-ios-internal.yaml index 1af0526f..7f3d67d7 100644 --- a/.github/workflows/release-wallet-ios-internal.yaml +++ b/.github/workflows/release-wallet-ios-internal.yaml @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: build-for-simulator: - description: "Build for simulator instead of App Store" + description: "Build for simulator instead of TestFlight" required: false default: false type: boolean diff --git a/.github/workflows/release-wallet-ios-production.yaml b/.github/workflows/release-wallet-ios-production.yaml index d1ed724d..e6afce5e 100644 --- a/.github/workflows/release-wallet-ios-production.yaml +++ b/.github/workflows/release-wallet-ios-production.yaml @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: build-for-simulator: - description: "Build for simulator instead of App Store" + description: "Build for simulator instead of TestFlight" required: false default: false type: boolean diff --git a/fastlane/Fastfile b/fastlane/Fastfile index fc5b6d57..df08bbee 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -119,8 +119,20 @@ platform :ios do ) # Find the .app in the archive - products_path = "#{archive_path}/Products/Applications" + products_path = "#{archive_path}/Products/Applications" + + # Verify archive structure exists + unless Dir.exist?(products_path) + UI.error("Products/Applications directory doesn't exist!") + UI.message("Archive structure:") + sh("ls -la '#{archive_path}' || true") + sh("find '#{archive_path}' -type d -maxdepth 3 || true") + UI.user_error!("Archive structure is incorrect. Expected directory: #{products_path}") + end + + # Find the .app bundle app_paths = Dir.glob("#{products_path}/*.app") + UI.message("Found #{app_paths.count} .app bundle(s) in #{products_path}") app_path = app_paths.first @@ -131,6 +143,8 @@ platform :ios do sh("cd '#{products_path}' && zip -r '#{File.expand_path('./build')}/#{output_name}' '#{File.basename(app_path)}'") UI.success("✅ Created simulator build: ./build/#{output_name}") else + UI.error("No .app bundle found in #{products_path}") + sh("ls -la '#{products_path}' || true") UI.user_error!("Could not find .app bundle in #{products_path}") end From 88a7ba2c1261861b94975bc7a96e23e69c5bd3bf Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 15:57:15 -0300 Subject: [PATCH 24/29] chore: disable slack notif --- .github/workflows/release-ios-base.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index f62acfae..a3615379 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -181,7 +181,7 @@ jobs: s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa - name: Send Slack notification - if: always() && !cancelled() + if: always() && !cancelled() && false # Temporarily disabled uses: slackapi/slack-github-action@v2.1.0 with: webhook: ${{ secrets.slack-webhook-url }} From 6c718446c0e250dca048ec00c1ed45dcc0ae1d75 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:54:30 -0300 Subject: [PATCH 25/29] chore: changed archive path --- fastlane/Fastfile | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index df08bbee..60441ec6 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -110,47 +110,31 @@ platform :ios do scheme: ENV['SCHEME'], configuration: "Release", destination: "generic/platform=iOS Simulator", - derived_data_path: "./build/DerivedData", - output_directory: "./build", - output_name: "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}", archive_path: archive_path, skip_codesigning: true, skip_package_ipa: true, ) # Find the .app in the archive - products_path = "#{archive_path}/Products/Applications" - - # Verify archive structure exists - unless Dir.exist?(products_path) - UI.error("Products/Applications directory doesn't exist!") - UI.message("Archive structure:") - sh("ls -la '#{archive_path}' || true") - sh("find '#{archive_path}' -type d -maxdepth 3 || true") - UI.user_error!("Archive structure is incorrect. Expected directory: #{products_path}") - end - - # Find the .app bundle - app_paths = Dir.glob("#{products_path}/*.app") - UI.message("Found #{app_paths.count} .app bundle(s) in #{products_path}") - + products_path = ".#{archive_path}/Products/Applications" + app_paths = Dir.glob("#{products_path}/*.app") app_path = app_paths.first if app_path output_name = "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa" + + # Ensure build directory exists + sh("mkdir -p ../build") # Create IPA by zipping the .app - sh("cd '#{products_path}' && zip -r '#{File.expand_path('./build')}/#{output_name}' '#{File.basename(app_path)}'") - UI.success("✅ Created simulator build: ./build/#{output_name}") + sh("cd '#{products_path}' && zip -r '#{File.expand_path('../build')}/#{output_name}' '#{File.basename(app_path)}'") + UI.success("✅ Created simulator build: ../build/#{output_name}") else - UI.error("No .app bundle found in #{products_path}") - sh("ls -la '#{products_path}' || true") UI.user_error!("Could not find .app bundle in #{products_path}") end # Only clean artifacts when running locally (not in CI) - clean_build_artifacts() unless ENV['CI'] + # clean_build_artifacts() unless ENV['CI'] end - end From 6e6930a64cef2dbc1d5caee758b5d1b47cd01f55 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:32:26 -0300 Subject: [PATCH 26/29] chore: enabled slack notif again --- .github/workflows/release-ios-base.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index a3615379..f62acfae 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -181,7 +181,7 @@ jobs: s3://walletconnect.react-native-builds.prod/ios/${{ inputs.release-type }}/${{ inputs.project-type }}-${{ inputs.release-type }}.ipa - name: Send Slack notification - if: always() && !cancelled() && false # Temporarily disabled + if: always() && !cancelled() uses: slackapi/slack-github-action@v2.1.0 with: webhook: ${{ secrets.slack-webhook-url }} From 7c99567800e36a2f429342a6e4ad57874d82d797 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:50:47 -0300 Subject: [PATCH 27/29] chore: fixed app to ipa script --- fastlane/Fastfile | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 60441ec6..72b9ac97 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -122,19 +122,32 @@ platform :ios do if app_path output_name = "#{ENV['PROJECT_TYPE']}-#{ENV['RELEASE_TYPE']}.ipa" - + build_dir = File.expand_path('../build') + # Ensure build directory exists - sh("mkdir -p ../build") + sh("mkdir -p #{build_dir}") + + # Create Payload directory structure + payload_dir = "#{build_dir}/Payload" + sh("rm -rf '#{payload_dir}'") # Clean any existing Payload + sh("mkdir -p '#{payload_dir}'") + + # Copy .app into Payload + sh("cp -r '#{app_path}' '#{payload_dir}/'") - # Create IPA by zipping the .app - sh("cd '#{products_path}' && zip -r '#{File.expand_path('../build')}/#{output_name}' '#{File.basename(app_path)}'") - UI.success("✅ Created simulator build: ../build/#{output_name}") + # Create IPA by zipping Payload directory + sh("cd '#{build_dir}' && zip -r '#{output_name}' Payload") + + # Clean up Payload directory + sh("rm -rf '#{payload_dir}'") + + UI.success("✅ Created simulator build: #{build_dir}/#{output_name}") else UI.user_error!("Could not find .app bundle in #{products_path}") end # Only clean artifacts when running locally (not in CI) - # clean_build_artifacts() unless ENV['CI'] + clean_build_artifacts() unless ENV['CI'] end end From 8b8bd14e27debbef259b8c8dea80ffe7f801546a Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:40:49 -0300 Subject: [PATCH 28/29] chore: changed keys and path of gradle cache --- .github/workflows/release-android-base.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index bbede063..d38efb42 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -107,9 +107,10 @@ jobs: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ github.ref_name }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + ${{ inputs.root-path }}/android/.gradle + key: ${{ runner.os }}-gradle-${{ inputs.name }}-${{ hashFiles(format('{0}/android/**/*.gradle*', inputs.root-path), format('{0}/android/**/gradle-wrapper.properties', inputs.root-path)) }} restore-keys: | - ${{ runner.os }}-gradle-${{ github.ref_name }}- + ${{ runner.os }}-gradle-${{ inputs.name }}- - name: Build APK id: build From 7fe7d4c66a1d065b69a110bd769121523e7210d6 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Mon, 20 Oct 2025 14:54:00 -0300 Subject: [PATCH 29/29] chore: scope aws credentials --- .github/workflows/release-android-base.yaml | 9 ++++++++- .github/workflows/release-ios-base.yaml | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-android-base.yaml b/.github/workflows/release-android-base.yaml index d38efb42..5e9b4af9 100644 --- a/.github/workflows/release-android-base.yaml +++ b/.github/workflows/release-android-base.yaml @@ -139,15 +139,22 @@ jobs: --groups "flutter-team, javascript-team, kotlin-team, unity, rust-team, swift-team, wc-testers" - name: Configure AWS credentials - id: aws-config + id: aws-creds continue-on-error: true uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 + output-env-credentials: false + output-credentials: true - name: Upload Android build to S3 id: s3-upload + env: + AWS_REGION: eu-central-1 + AWS_ACCESS_KEY_ID: ${{ steps.aws-creds.outputs.aws-access-key-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.aws-creds.outputs.aws-secret-access-key }} + AWS_SESSION_TOKEN: ${{ steps.aws-creds.outputs.aws-session-token }} continue-on-error: true run: | aws s3 cp \ diff --git a/.github/workflows/release-ios-base.yaml b/.github/workflows/release-ios-base.yaml index f62acfae..10d99278 100644 --- a/.github/workflows/release-ios-base.yaml +++ b/.github/workflows/release-ios-base.yaml @@ -164,16 +164,23 @@ jobs: BUILD_FOR_SIMULATOR: ${{ inputs.build-for-simulator }} - name: Configure AWS credentials - id: aws-config + id: aws-creds continue-on-error: true uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 with: role-to-assume: arn:aws:iam::${{ secrets.aws-account-id }}:role/prod-github-actions-react-native-builds aws-region: eu-central-1 + output-env-credentials: false + output-credentials: true - name: Upload iOS build to S3 if: ${{ inputs.build-for-simulator == true }} # Upload to bucket only for simulator builds id: s3-upload + env: + AWS_REGION: eu-central-1 + AWS_ACCESS_KEY_ID: ${{ steps.aws-creds.outputs.aws-access-key-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.aws-creds.outputs.aws-secret-access-key }} + AWS_SESSION_TOKEN: ${{ steps.aws-creds.outputs.aws-session-token }} continue-on-error: true run: | aws s3 cp \