From d2c511075aa3d17911d3c541201c9823230c117c Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Wed, 17 Jun 2026 19:19:49 -0500 Subject: [PATCH] Fix TestFlight group assignment in non-interactive mode Two changes: - Pass app_platform:"ios" to upload_to_testflight. In distribute_only mode fastlane calls fetch_app_platform, which prompts for input and crashes in CI ("Could not retrieve response as fastlane runs in non-interactive mode"). - Drop the iOS "What to Test" changelog. The release notes are already posted to Slack by the nightly workflow, so there's no need to also set them on the TestFlight build. Removes the releaseNotes input and changelog plumbing. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/build-submit-ios.yml | 15 +++------------ .github/workflows/nightly-build.yml | 1 - 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-submit-ios.yml b/.github/workflows/build-submit-ios.yml index e90dd525e0..a1dfd52cb4 100644 --- a/.github/workflows/build-submit-ios.yml +++ b/.github/workflows/build-submit-ios.yml @@ -24,11 +24,6 @@ on: type: boolean description: Assign the build to the "QA Team" TestFlight group after submitting default: false - releaseNotes: - type: string - description: Notes to set as the TestFlight "What to Test" changelog - required: false - default: '' outputs: package-version: description: Version from package.json @@ -216,7 +211,6 @@ jobs: # eas submit only uploads to App Store Connect; it can't assign a build to a # TestFlight group. fastlane's distribute_only mode skips the upload and assigns the # already-submitted build to the group, polling until Apple finishes processing it. - # The "What to Test" changelog is supplied by the caller (e.g. the nightly workflow). - name: ๐Ÿงช Assign build to TestFlight group if: ${{ inputs.assignTestFlightGroup }} env: @@ -225,7 +219,6 @@ jobs: ASC_KEY_P8_BASE64: ${{ secrets.ASC_KEY_P8_BASE64 }} APP_VERSION: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }} BUILD_NUMBER: ${{ steps.ipa-build-number.outputs.build-number }} - RELEASE_NOTES: ${{ inputs.releaseNotes }} run: | # Ensure the API key material is removed even if fastlane exits non-zero # (the step runs under `bash -e`, which would otherwise abort before cleanup). @@ -239,17 +232,15 @@ jobs: --arg key "$key_content" \ '{key_id: $key_id, issuer_id: $issuer_id, key: $key, in_house: false}' \ > asc_api_key.json - changelog_args=() - if [ -n "$RELEASE_NOTES" ]; then - changelog_args=(changelog:"$RELEASE_NOTES") - fi + # app_platform is required in non-interactive mode: distribute_only otherwise + # calls fetch_app_platform, which prompts for input and crashes without a TTY. fastlane run upload_to_testflight \ api_key_path:"$PWD/asc_api_key.json" \ distribute_only:true \ + app_platform:"ios" \ app_identifier:"xyz.blueskyweb.app" \ app_version:"$APP_VERSION" \ build_number:"$BUILD_NUMBER" \ - "${changelog_args[@]}" \ groups:"QA Team" - name: ๐Ÿ”” Notify Slack of Production Build diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 48e4ea4ca1..ae653ccc2b 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -78,7 +78,6 @@ jobs: with: profile: testflight assignTestFlightGroup: true - releaseNotes: ${{ needs.prepare.outputs.notes }} secrets: inherit android: