From 7da41785559837413022da74fab2736b06516e7e Mon Sep 17 00:00:00 2001 From: Ben Knutson Date: Wed, 18 Feb 2026 16:16:00 +0000 Subject: [PATCH 1/7] Refactor Github Action per b/485167538 --- .github/workflows/android.yml | 5 +- .github/workflows/cpp-packaging.yml | 40 +- .github/workflows/desktop.yml | 36 +- .github/workflows/integration_tests.yml | 385 ++++++++++++------ .github/workflows/retry-test-failures.yml | 5 +- .github/workflows/reviewer-roulette.yml | 8 +- .github/workflows/update-dependencies.yml | 21 +- .github/workflows/update-feature-branches.yml | 26 +- 8 files changed, 358 insertions(+), 168 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 85c083b61c..551c179b6f 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -98,8 +98,11 @@ jobs: - name: Set env variables for subsequent steps (all) shell: bash run: | - echo "MATRIX_UNIQUE_NAME=${{ matrix.os }}-${{ matrix.architecture }}" >> $GITHUB_ENV + echo "MATRIX_UNIQUE_NAME=${MATRIX_OS}-${MATRIX_ARCHITECTURE}" >> $GITHUB_ENV echo "GHA_INSTALL_CCACHE=1" >> $GITHUB_ENV + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCHITECTURE: ${{ matrix.architecture }} - name: Setup python uses: actions/setup-python@v4 diff --git a/.github/workflows/cpp-packaging.yml b/.github/workflows/cpp-packaging.yml index c65b2b4ba8..3016375392 100644 --- a/.github/workflows/cpp-packaging.yml +++ b/.github/workflows/cpp-packaging.yml @@ -46,11 +46,14 @@ jobs: steps: - name: log run inputs run: | - if [[ -n "${{ github.event.inputs.downloadPublicVersion }}" ]]; then - echo "::warning ::Downloading public SDK package from https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${{ github.event.inputs.downloadPublicVersion }}.zip" - elif [[ -n "${{ github.event.inputs.downloadPreviousRun }}" ]]; then - echo "::warning ::Downloading SDK package from previous run at https://github.com/firebase/firebase-cpp-sdk/actions/runs/${{ github.event.inputs.downloadPreviousRun }}" + if [[ -n "${GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION}" ]]; then + echo "::warning ::Downloading public SDK package from https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION}.zip" + elif [[ -n "${GITHUB_EVENT_INPUTS_DOWNLOADPREVIOUSRUN}" ]]; then + echo "::warning ::Downloading SDK package from previous run at https://github.com/firebase/firebase-cpp-sdk/actions/runs/${GITHUB_EVENT_INPUTS_DOWNLOADPREVIOUSRUN}" fi + env: + GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION: ${{ github.event.inputs.downloadPublicVersion }} + GITHUB_EVENT_INPUTS_DOWNLOADPREVIOUSRUN: ${{ github.event.inputs.downloadPreviousRun }} - name: log if skipping integration tests if: | @@ -425,10 +428,12 @@ jobs: shell: bash run: | verbose_flag= - if [[ -n "${{ github.event.inputs.verboseBuild }}" && "${{ github.event.inputs.verboseBuild }}" -ne 0 ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_VERBOSEBUILD}" && "${GITHUB_EVENT_INPUTS_VERBOSEBUILD}" -ne 0 ]]; then verbose_flag=--verbose fi echo "VERBOSE_FLAG=${verbose_flag}" >> $GITHUB_ENV + env: + GITHUB_EVENT_INPUTS_VERBOSEBUILD: ${{ github.event.inputs.verboseBuild }} # Run the build in the host OS default shell since Windows can't handle long path names in bash. - name: Build desktop SDK @@ -442,7 +447,7 @@ jobs: find .. -type f -print > src_file_list.txt # Remove intermediate build files (.o and .obj) files to save space. find . -type f -name '*.o' -or -name '*.obj' -print0 | xargs -0 rm -f -- - tar -czhf ../firebase-cpp-sdk-${{ env.SDK_NAME }}-build.tgz . + tar -czhf ../firebase-cpp-sdk-${SDK_NAME}-build.tgz . - name: Print built libraries shell: bash @@ -682,8 +687,8 @@ jobs: - name: fetch public SDK package from web if: ${{ github.event.inputs.downloadPublicVersion != '' && github.event.inputs.downloadPreviousRun == '' }} run: | - if [[ ! "${{ github.event.inputs.downloadPublicVersion }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo Invalid version number: "${{ github.event.inputs.downloadPublicVersion }}" + if [[ ! "${GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo Invalid version number: "${GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION}" exit 1 fi set +e @@ -691,10 +696,12 @@ jobs: # Github runners. for retry in {1..10} error; do if [[ $retry == "error" ]]; then exit 5; fi - curl -L https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${{ github.event.inputs.downloadPublicVersion }}.zip --output firebase_cpp_sdk.zip && break + curl -L https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION}.zip --output firebase_cpp_sdk.zip && break sleep 300 done set -e + env: + GITHUB_EVENT_INPUTS_DOWNLOADPUBLICVERSION: ${{ github.event.inputs.downloadPublicVersion }} - name: compute SDK hash shell: bash @@ -879,13 +886,13 @@ jobs: USE_EXPANDED_MATRIX=0 fi verbose_flag= - if [[ -n "${{ github.event.inputs.verboseBuild }}" && "${{ github.event.inputs.verboseBuild }}" -ne 0 ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_VERBOSEBUILD}" && "${GITHUB_EVENT_INPUTS_VERBOSEBUILD}" -ne 0 ]]; then verbose_flag=-v fi set -e if [[ "${{ github.event_name }}" == "schedule" ]]; then # trigger integration tests and generate two reports for nightly workflow run: one for firestore, one for the rest. - python scripts/gha/trigger_workflow.py -t ${{ steps.generate-token.outputs.token }} \ + python scripts/gha/trigger_workflow.py -t ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} \ -w integration_tests.yml \ -p test_packaged_sdk ${{ github.run_id }} \ -p use_expanded_matrix ${USE_EXPANDED_MATRIX} \ @@ -893,7 +900,7 @@ jobs: -p test_pull_request nightly-packaging \ -s 10 \ -A ${verbose_flag} - python scripts/gha/trigger_workflow.py -t ${{ steps.generate-token.outputs.token }} \ + python scripts/gha/trigger_workflow.py -t ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} \ -w integration_tests.yml \ -p test_packaged_sdk ${{ github.run_id }} \ -p use_expanded_matrix ${USE_EXPANDED_MATRIX} \ @@ -903,13 +910,16 @@ jobs: -A ${verbose_flag} else # trigger integration tests - python scripts/gha/trigger_workflow.py -t ${{ steps.generate-token.outputs.token }} \ + python scripts/gha/trigger_workflow.py -t ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} \ -w integration_tests.yml \ -p test_packaged_sdk ${{ github.run_id }} \ -p use_expanded_matrix ${USE_EXPANDED_MATRIX} \ -s 10 \ -A ${verbose_flag} fi + env: + GITHUB_EVENT_INPUTS_VERBOSEBUILD: ${{ github.event.inputs.verboseBuild }} + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} attempt_retry: @@ -936,8 +946,10 @@ jobs: - name: Retry failed tests run: | echo "::warning ::Attempting to retry failed jobs" - python scripts/gha/trigger_workflow.py -t ${{ steps.generate-token.outputs.token }} \ + python scripts/gha/trigger_workflow.py -t ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} \ -w retry-test-failures.yml \ -p run_id ${{ github.run_id }} \ -s 10 \ -A + env: + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index 5aad61c385..06990f0a76 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -133,25 +133,33 @@ jobs: if: startsWith(matrix.os, 'windows') shell: bash run: | - if [[ ${{matrix.msvc_runtime}} == "static" ]]; + if [[ ${MATRIX_MSVC_RUNTIME} == "static" ]]; then echo "VCPKG_SUFFIX=windows-static" >> $GITHUB_ENV; - elif [[ ${{matrix.msvc_runtime}} == "dynamic" ]]; + elif [[ ${MATRIX_MSVC_RUNTIME} == "dynamic" ]]; then echo "VCPKG_SUFFIX=windows-static-md" >> $GITHUB_ENV; else echo "Warning, could not resolve vcpkg suffix."; fi + env: + MATRIX_MSVC_RUNTIME: ${{matrix.msvc_runtime}} - name: Set env variables for subsequent steps (all) shell: bash run: | - echo "BUILD_TYPE: ${{ matrix.build_type }}" - echo "VCPKG_SUFFIX: ${{env.VCPKG_SUFFIX}}" - echo "VCPKG_RESPONSE_FILE=external/vcpkg_custom_data/response_files/${{ matrix.architecture }}-${{ env.VCPKG_SUFFIX }}.txt" >> $GITHUB_ENV - echo "MATRIX_UNIQUE_NAME=${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.msvc_runtime }}" >> $GITHUB_ENV + echo "BUILD_TYPE: ${MATRIX_BUILD_TYPE}" + echo "VCPKG_SUFFIX: ${VCPKG_SUFFIX}" + echo "VCPKG_RESPONSE_FILE=external/vcpkg_custom_data/response_files/${MATRIX_ARCHITECTURE}-${VCPKG_SUFFIX}.txt" >> $GITHUB_ENV + echo "MATRIX_UNIQUE_NAME=${MATRIX_OS}-${MATRIX_BUILD_TYPE}-${MATRIX_ARCHITECTURE}-${MATRIX_MSVC_RUNTIME}" >> $GITHUB_ENV if [[ '${{ matrix.sdk_platform }}' == 'darwin' ]]; then # If Mac, also hash vcpkg cache on Xcode version. - echo "VCPKG_EXTRA_HASH=-xcode${{matrix.xcode_version}}" >> $GITHUB_ENV + echo "VCPKG_EXTRA_HASH=-xcode${MATRIX_XCODE_VERSION}" >> $GITHUB_ENV fi + env: + MATRIX_BUILD_TYPE: ${{ matrix.build_type }} + MATRIX_ARCHITECTURE: ${{ matrix.architecture }} + MATRIX_OS: ${{ matrix.os }} + MATRIX_MSVC_RUNTIME: ${{ matrix.msvc_runtime }} + MATRIX_XCODE_VERSION: ${{matrix.xcode_version}} - name: Cache vcpkg C++ dependencies id: cache_vcpkg @@ -193,7 +201,11 @@ jobs: - name: Build SDK shell: bash run: | - python scripts/gha/build_desktop.py --build_tests --arch "${{ matrix.architecture }}" --config "${{ matrix.build_type }}" --msvc_runtime_library "${{ matrix.msvc_runtime }}" --gha_build + python scripts/gha/build_desktop.py --build_tests --arch "${MATRIX_ARCHITECTURE}" --config "${MATRIX_BUILD_TYPE}" --msvc_runtime_library "${MATRIX_MSVC_RUNTIME}" --gha_build + env: + MATRIX_ARCHITECTURE: ${{ matrix.architecture }} + MATRIX_BUILD_TYPE: ${{ matrix.build_type }} + MATRIX_MSVC_RUNTIME: ${{ matrix.msvc_runtime }} - name: Stats for ccache (mac and linux) if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') @@ -356,9 +368,11 @@ jobs: shell: bash run: | cat build-results-desktop-ubuntu-22.04-openssl.log - if [[ "${{ job.status }}" != "success" ]]; then + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + JOB_STATUS: ${{ job.status }} - name: Set up Node (18) uses: actions/setup-node@v3 with: @@ -386,6 +400,8 @@ jobs: shell: bash run: | cat testapps-desktop-ubuntu-22.04-openssl/test-results-desktop-ubuntu-22.04-openssl.log - if [[ "${{ job.status }}" != "success" ]]; then + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + JOB_STATUS: ${{ job.status }} diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index c2f7de7572..3f3c9ec05d 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -84,25 +84,25 @@ jobs: - id: set_outputs run: | if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - if [[ "${{ github.event.inputs.test_pull_request }}" != "nightly-packaging" ]]; then + if [[ "${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" != "nightly-packaging" ]]; then # Triggered manually echo "trigger=manual_trigger" >> $GITHUB_OUTPUT - if [[ "${{ github.event.inputs.use_expanded_matrix }}" == "1" ]]; then + if [[ "${GITHUB_EVENT_INPUTS_USE_EXPANDED_MATRIX}" == "1" ]]; then echo "requested_tests=expanded" >> $GITHUB_OUTPUT fi - if [[ -z "${{github.event.inputs.test_pull_request}}" ]]; then + if [[ -z "${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" ]]; then # test_pull_request not specified echo "github_ref=$GITHUB_SHA" >> $GITHUB_OUTPUT - elif [[ "${{github.event.inputs.test_pull_request}}" == *:* ]]; then + elif [[ "${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" == *:* ]]; then # If specified as pr:commit_hash, split them. - echo "github_ref=$(echo ${{ github.event.inputs.test_pull_request }} | cut -d: -f2)" >> $GITHUB_OUTPUT - echo "pr_number=$(echo ${{ github.event.inputs.test_pull_request }} | cut -d: -f1)" >> $GITHUB_OUTPUT + echo "github_ref=$(echo ${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST} | cut -d: -f2)" >> $GITHUB_OUTPUT + echo "pr_number=$(echo ${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST} | cut -d: -f1)" >> $GITHUB_OUTPUT else # Just the PR specified, use refs/pull//merge as the ref. - echo "github_ref=refs/pull/${{github.event.inputs.test_pull_request}}/merge" >> $GITHUB_OUTPUT - echo "pr_number=${{ github.event.inputs.test_pull_request }}" >> $GITHUB_OUTPUT + echo "github_ref=refs/pull/${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}/merge" >> $GITHUB_OUTPUT + echo "pr_number=${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" >> $GITHUB_OUTPUT fi - elif [[ "${{ github.event.inputs.test_pull_request }}" == "nightly-packaging" ]]; then + elif [[ "${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" == "nightly-packaging" ]]; then # Triggered by scheduled packaging SDK workflow. echo "trigger=scheduled_trigger" >> $GITHUB_OUTPUT echo "github_ref=$GITHUB_SHA" >> $GITHUB_OUTPUT @@ -114,20 +114,25 @@ jobs: echo "requested_tests=expanded" >> $GITHUB_OUTPUT elif [[ "${{ github.event_name }}" == "pull_request" ]]; then echo "github_ref=$GITHUB_SHA" >> $GITHUB_OUTPUT - if [[ "${{ github.event.action }}" == "labeled" && "${{ github.event.label.name }}" == "${{ env.triggerLabelPrefix }}"* ]]; then + if [[ "${GITHUB_EVENT_ACTION}" == "labeled" && "${GITHUB_EVENT_LABEL_NAME}" == "${{ env.triggerLabelPrefix }}"* ]]; then echo "trigger=label_trigger" >> $GITHUB_OUTPUT echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT - if [[ "${{ github.event.label.name }}" == "${{ env.triggerLabelQuick }}" ]]; then + if [[ "${GITHUB_EVENT_LABEL_NAME}" == "${{ env.triggerLabelQuick }}" ]]; then echo "requested_tests=auto" >> $GITHUB_OUTPUT else echo "requested_tests=expanded" >> $GITHUB_OUTPUT fi - elif [[ "${{ github.event.action }}" == "closed" && "${{ github.event.pull_request.merged == true}}" == "true" ]]; then + elif [[ "${GITHUB_EVENT_ACTION}" == "closed" && "${{ github.event.pull_request.merged == true}}" == "true" ]]; then echo "trigger=postsubmit_trigger" >> $GITHUB_OUTPUT echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT echo "requested_tests=auto" >> $GITHUB_OUTPUT fi fi + env: + GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST: ${{ github.event.inputs.test_pull_request }} + GITHUB_EVENT_INPUTS_USE_EXPANDED_MATRIX: ${{ github.event.inputs.use_expanded_matrix }} + GITHUB_EVENT_ACTION: ${{ github.event.action }} + GITHUB_EVENT_LABEL_NAME: ${{ github.event.label.name }} ### If it's not a defined trigger, cancel workflow ### e.g. Triggered by non-"test-request" label; triggered by not merged PR close event. - name: Cancel workflow @@ -163,14 +168,22 @@ jobs: env: HEAD_REF: ${{github.event.pull_request.head.ref}} BASE_REF: ${{github.event.pull_request.base.ref}} + STEPS_SET_OUTPUTS_OUTPUTS_REQUESTED_TESTS: ${{ steps.set_outputs.outputs.requested_tests }} + GITHUB_EVENT_SCHEDULE: ${{ github.event.schedule }} + GITHUB_EVENT_INPUTS_APIS: ${{github.event.inputs.apis}} + GITHUB_EVENT_INPUTS_PLATFORMS: ${{github.event.inputs.platforms}} + GITHUB_EVENT_INPUTS_OPERATING_SYSTEMS: ${{github.event.inputs.operating_systems}} + GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK: ${{ github.event.inputs.test_packaged_sdk }} + GITHUB_EVENT_INPUTS_DESKTOP_SSL_VARIANTS: ${{github.event.inputs.desktop_ssl_variants}} + GITHUB_EVENT_INPUTS_MOBILE_TEST_ON: ${{github.event.inputs.mobile_test_on}} run: | - if [[ "${{ steps.set_outputs.outputs.requested_tests }}" == "expanded" ]]; then + if [[ "${STEPS_SET_OUTPUTS_OUTPUTS_REQUESTED_TESTS}" == "expanded" ]]; then TEST_MATRIX_PARAM=-e=1 echo "::warning ::Running on the expanded matrix" - elif [[ "${{ steps.set_outputs.outputs.requested_tests }}" == "minimal" ]]; then + elif [[ "${STEPS_SET_OUTPUTS_OUTPUTS_REQUESTED_TESTS}" == "minimal" ]]; then TEST_MATRIX_PARAM=-m=1 echo "::warning ::Running on the minimal matrix" - elif [[ "${{ steps.set_outputs.outputs.requested_tests }}" == "auto" ]]; then + elif [[ "${STEPS_SET_OUTPUTS_OUTPUTS_REQUESTED_TESTS}" == "auto" ]]; then # auto-diff only apply when running in a PR. # diff against the PR's base. "git merge-base main branch_name" will give the common ancestor of both branches. MERGE_BASE=$(git merge-base "origin/${HEAD_REF}" "origin/${BASE_REF}" || true) @@ -184,26 +197,26 @@ jobs: # To feed input into the job matrix, we first need to convert to a JSON # list. Then we can use fromJson to define the field in the matrix for the tests job. - if [[ "${{ github.event.schedule }}" == "0 9 * * *" ]]; then + if [[ "${GITHUB_EVENT_SCHEDULE}" == "0 9 * * *" ]]; then # at 1am PST/2am PDT. Running integration tests and generate test report for all testapps except firestore apis="analytics,app_check,auth,database,functions,installations,messaging,remote_config,storage,ump" echo "::warning ::Running main nightly tests" - elif [[ "${{ github.event.schedule }}" == "0 10 * * *" || "${{ github.event.schedule }}" == "0 11 * * *" ]]; then + elif [[ "${GITHUB_EVENT_SCHEDULE}" == "0 10 * * *" || "${GITHUB_EVENT_SCHEDULE}" == "0 11 * * *" ]]; then # at 2am PST/3am PDT and 3am PST/4am PDT. Running integration tests for firestore and generate test report. echo "::warning ::Running Firestore nightly tests" apis="firestore" else echo "::warning ::Running pull request tests" - apis=$( python scripts/gha/print_matrix_configuration.py -c -w integration_tests -k apis -o "${{github.event.inputs.apis}}" ${TEST_MATRIX_PARAM} ) + apis=$( python scripts/gha/print_matrix_configuration.py -c -w integration_tests -k apis -o "${GITHUB_EVENT_INPUTS_APIS}" ${TEST_MATRIX_PARAM} ) fi - if [[ "${{ github.event.schedule }}" == "0 11 * * *" ]]; then + if [[ "${GITHUB_EVENT_SCHEDULE}" == "0 11 * * *" ]]; then # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo echo "::warning ::Running against Firestore tip-of-tree" matrix_platform="Desktop" matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-14") else - matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${{github.event.inputs.platforms}}" --apis ${apis} ) - matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${{github.event.inputs.operating_systems}}") + matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${GITHUB_EVENT_INPUTS_PLATFORMS}" --apis ${apis} ) + matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${GITHUB_EVENT_INPUTS_OPERATING_SYSTEMS}") fi echo "apis=${apis}" >> $GITHUB_OUTPUT echo "matrix_platform=${matrix_platform}" >> $GITHUB_OUTPUT @@ -220,13 +233,13 @@ jobs: # If building against a packaged SDK, consider it as using boringssl, as the packaged SDK uses boringssl under the hood. # This avoids trying to install openssl on the system when compiling against the packaged SDK. # As an added bonus, we ensure that the packaged SDK works even without openssl explicitly installed. - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then - echo "::warning ::Downloading SDK package from previous run: https://github.com/${{github.repository}}/actions/runs/${{ github.event.inputs.test_packaged_sdk }}" + if [[ -n "${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" ]]; then + echo "::warning ::Downloading SDK package from previous run: https://github.com/${{github.repository}}/actions/runs/${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" echo "matrix_ssl=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k ssl_lib -o boringssl )" >> $GITHUB_OUTPUT else - echo "matrix_ssl=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k ssl_lib -o "${{github.event.inputs.desktop_ssl_variants}}" )" >> $GITHUB_OUTPUT + echo "matrix_ssl=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k ssl_lib -o "${GITHUB_EVENT_INPUTS_DESKTOP_SSL_VARIANTS}" )" >> $GITHUB_OUTPUT fi - mobile_test_on=$( python scripts/gha/print_matrix_configuration.py -c -w integration_tests -k mobile_test_on -o "${{github.event.inputs.mobile_test_on}}") + mobile_test_on=$( python scripts/gha/print_matrix_configuration.py -c -w integration_tests -k mobile_test_on -o "${GITHUB_EVENT_INPUTS_MOBILE_TEST_ON}") echo "mobile_test_on=${mobile_test_on}" >> $GITHUB_OUTPUT echo "android_device=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k android_device -t ${mobile_test_on} )" >> $GITHUB_OUTPUT echo "xcode_version=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k xcode_version)" >> $GITHUB_OUTPUT @@ -239,10 +252,13 @@ jobs: #Add the in-progress label and remove any previous labels. python scripts/gha/it_workflow.py --stage start \ --token ${{github.token}} \ - --issue_number ${{steps.set_outputs.outputs.pr_number}} \ - --actor ${{github.actor}} \ - --commit ${{steps.set_outputs.outputs.github_ref}} \ + --issue_number ${STEPS_SET_OUTPUTS_OUTPUTS_PR_NUMBER} \ + --actor ${GITHUB_ACTOR} \ + --commit ${STEPS_SET_OUTPUTS_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + STEPS_SET_OUTPUTS_OUTPUTS_PR_NUMBER: ${{steps.set_outputs.outputs.pr_number}} + STEPS_SET_OUTPUTS_OUTPUTS_GITHUB_REF: ${{steps.set_outputs.outputs.github_ref}} build_desktop: name: build-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }} @@ -324,10 +340,17 @@ jobs: shell: bash env: CCACHE_DIR: ${{ github.workspace }}/ccache_dir + GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK: ${{ github.event.inputs.test_packaged_sdk }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} + GITHUB_EVENT_SCHEDULE: ${{ github.event.schedule }} + GITHUB_EVENT_INPUTS_FIRESTORE_DEP_SOURCE: ${{ github.event.inputs.firestore_dep_source }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} run: | python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" declare -a additional_flags - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" ]]; then # Building integration tests against a packaged SDK. mkdir downloaded_sdk unzip -q firebase_cpp_sdk.zip -d downloaded_sdk/ @@ -337,30 +360,34 @@ jobs: # # When building the SDK from source, the default SSL is openssl. # To build using boringssl, a cmake flag must be added: - if [[ "${{ matrix.ssl_variant }}" == "boringssl" ]]; then + if [[ "${MATRIX_SSL_VARIANT}" == "boringssl" ]]; then additional_flags+=(--cmake_flag=-DFIREBASE_USE_BORINGSSL=ON) fi fi - if [[ "${{ github.event.schedule }}" == "0 11 * * *" ]]; then + if [[ "${GITHUB_EVENT_SCHEDULE}" == "0 11 * * *" ]]; then # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo additional_flags+=(--cmake_flag=-DFIRESTORE_DEP_SOURCE=TIP) - elif [[ "${{ github.event.inputs.firestore_dep_source }}" ]]; then - additional_flags+=(--cmake_flag=-DFIRESTORE_DEP_SOURCE=${{ github.event.inputs.firestore_dep_source }}) + elif [[ "${GITHUB_EVENT_INPUTS_FIRESTORE_DEP_SOURCE}" ]]; then + additional_flags+=(--cmake_flag=-DFIRESTORE_DEP_SOURCE=${GITHUB_EVENT_INPUTS_FIRESTORE_DEP_SOURCE}) fi VERBOSE=1 python scripts/gha/build_testapps.py --p Desktop \ - --t ${{ needs.check_and_prepare.outputs.apis }} \ + --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ --output_directory "${{ github.workspace }}" \ - --artifact_name "desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}" \ + --artifact_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" \ --noadd_timestamp \ --short_output_paths \ --gha_build \ - --arch ${{ matrix.arch }} \ + --arch ${MATRIX_ARCH} \ ${additional_flags[*]} - name: Copy Analytics DLL to test folders (Windows) if: startsWith(matrix.os, 'windows') shell: bash run: | - find "testapps-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}" -name integration_test.exe -exec dirname {} \; | while read dir; do cp analytics/windows/google_analytics.dll "$dir/"; done + find "testapps-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" -name integration_test.exe -exec dirname {} \; | while read dir; do cp analytics/windows/google_analytics.dll "$dir/"; done + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} - name: Upload Desktop Cmake uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} @@ -372,10 +399,14 @@ jobs: if: ${{ !cancelled() }} shell: bash run: | - if [ ! -f build-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log.json ]; then + if [ ! -f build-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log.json ]; then # No summary was created, make a placeholder one. - echo "__SUMMARY_MISSING__" > build-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log.json + echo "__SUMMARY_MISSING__" > build-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log.json fi + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} - name: Upload Desktop integration tests artifact uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} @@ -400,21 +431,29 @@ jobs: if: ${{ needs.check_and_prepare.outputs.pr_number && failure() && !cancelled() }} shell: bash run: | - pushd ${{env.GCS_UPLOAD_DIR}} + pushd ${GCS_UPLOAD_DIR} python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize build results if: ${{ !cancelled() }} shell: bash run: | - cat build-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log - if [[ "${{ job.status }}" != "success" ]]; then + cat build-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} + JOB_STATUS: ${{ job.status }} build_android: name: build-android-${{ matrix.os }} @@ -482,7 +521,7 @@ jobs: run: | python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" declare -a additional_flags - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" ]]; then # Building integration tests against a packaged SDK. mkdir downloaded_sdk cd downloaded_sdk @@ -491,20 +530,26 @@ jobs: additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi python scripts/gha/build_testapps.py --p Android \ - --t ${{ needs.check_and_prepare.outputs.apis }} \ + --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ --output_directory "${{ github.workspace }}" \ - --artifact_name "android-${{ matrix.os }}" \ + --artifact_name "android-${MATRIX_OS}" \ --noadd_timestamp \ --short_output_paths \ --gha_build \ ${additional_flags[*]} + env: + GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK: ${{ github.event.inputs.test_packaged_sdk }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} + MATRIX_OS: ${{ matrix.os }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash run: | - if [ ! -f build-results-android-${{ matrix.os }}.log.json ]; then - echo "__SUMMARY_MISSING__" > build-results-android-${{ matrix.os }}.log.json + if [ ! -f build-results-android-${MATRIX_OS}.log.json ]; then + echo "__SUMMARY_MISSING__" > build-results-android-${MATRIX_OS}.log.json fi + env: + MATRIX_OS: ${{ matrix.os }} - name: Upload Android integration tests artifact uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} @@ -531,18 +576,24 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize build results if: ${{ !cancelled() }} shell: bash run: | - cat build-results-android-${{ matrix.os }}.log - if [[ "${{ job.status }}" != "success" ]]; then + cat build-results-android-${MATRIX_OS}.log + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_OS: ${{ matrix.os }} + JOB_STATUS: ${{ job.status }} build_ios: name: build-ios-${{ matrix.os }} @@ -589,7 +640,7 @@ jobs: run: | python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" declare -a additional_flags - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" ]]; then # Building integration tests against a packaged SDK. mkdir downloaded_sdk cd downloaded_sdk @@ -598,14 +649,18 @@ jobs: additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi python scripts/gha/build_testapps.py --p iOS \ - --t ${{ needs.check_and_prepare.outputs.apis }} \ + --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ --output_directory "${{ github.workspace }}" \ - --ios_sdk ${{ needs.check_and_prepare.outputs.mobile_test_on }} \ + --ios_sdk ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_MOBILE_TEST_ON} \ --artifact_name "ios-${{ matrix.os }}" \ --noadd_timestamp \ --short_output_paths \ --gha_build \ ${additional_flags[*]} + env: + GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK: ${{ github.event.inputs.test_packaged_sdk }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_MOBILE_TEST_ON: ${{ needs.check_and_prepare.outputs.mobile_test_on }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash @@ -639,18 +694,23 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize build results if: ${{ !cancelled() }} shell: bash run: | cat build-results-ios-${{ matrix.os }}.log - if [[ "${{ job.status }}" != "success" ]]; then + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + JOB_STATUS: ${{ job.status }} build_tvos: name: build-tvos-${{ matrix.os }} @@ -697,7 +757,7 @@ jobs: run: | python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" declare -a additional_flags - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK}" ]]; then # Building integration tests against a packaged SDK. mkdir downloaded_sdk cd downloaded_sdk @@ -706,13 +766,16 @@ jobs: additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi python scripts/gha/build_testapps.py --p tvOS \ - --t ${{ needs.check_and_prepare.outputs.apis }} \ + --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ --output_directory "${{ github.workspace }}" \ --artifact_name "tvos-${{ matrix.os }}" \ --noadd_timestamp \ --short_output_paths \ --gha_build \ ${additional_flags[*]} + env: + GITHUB_EVENT_INPUTS_TEST_PACKAGED_SDK: ${{ github.event.inputs.test_packaged_sdk }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash @@ -746,18 +809,23 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize build results if: ${{ !cancelled() }} shell: bash run: | cat build-results-tvos-${{ matrix.os }}.log - if [[ "${{ job.status }}" != "success" ]]; then + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + JOB_STATUS: ${{ job.status }} test_desktop: name: test-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }} @@ -842,21 +910,29 @@ jobs: - name: Run Desktop integration tests env: USE_FIRESTORE_EMULATOR: true + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} shell: bash run: | - if [[ "${{ needs.check_and_prepare.outputs.apis }}" == *"firestore"* ]]; then - firebase emulators:exec --only firestore --project demo-example 'python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}"' + if [[ "${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS}" == *"firestore"* ]]; then + firebase emulators:exec --only firestore --project demo-example 'python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}"' else - python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}" + python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" fi - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash run: | # If testapps do not exist, then it's a build error not test error. - if [ -d "testapps/testapps-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}" ] && [ ! -f testapps/test-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log.json ]; then - mkdir -p testapps && echo "__SUMMARY_MISSING__" > testapps/test-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log.json + if [ -d "testapps/testapps-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" ] && [ ! -f testapps/test-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log.json ]; then + mkdir -p testapps && echo "__SUMMARY_MISSING__" > testapps/test-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log.json fi + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} - name: Upload Desktop test results artifact if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 @@ -876,18 +952,26 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize test results if: ${{ !cancelled() }} shell: bash run: | - cat testapps/test-results-desktop-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.ssl_variant }}.log - if [[ "${{ job.status }}" != "success" ]]; then + cat testapps/test-results-desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}.log + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_OS: ${{ matrix.os }} + MATRIX_ARCH: ${{ matrix.arch }} + MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} + JOB_STATUS: ${{ job.status }} test_android: name: test-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }} @@ -928,8 +1012,10 @@ jobs: - name: Get Device Info id: device-info run: | - echo "device_type=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.android_device }} -get_device_type)" >> $GITHUB_OUTPUT - echo "device=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.android_device }} -get_ftl_device_list)" >> $GITHUB_OUTPUT + echo "device_type=$( python scripts/gha/print_matrix_configuration.py -k ${MATRIX_ANDROID_DEVICE} -get_device_type)" >> $GITHUB_OUTPUT + echo "device=$( python scripts/gha/print_matrix_configuration.py -k ${MATRIX_ANDROID_DEVICE} -get_ftl_device_list)" >> $GITHUB_OUTPUT + env: + MATRIX_ANDROID_DEVICE: ${{ matrix.android_device }} - name: Setup java 11 for test_simulator.py uses: actions/setup-java@v3 with: @@ -941,9 +1027,12 @@ jobs: run: | python scripts/gha/test_simulator.py --testapp_dir testapps \ --test_type "${{ matrix.test_type }}" \ - --android_device "${{ matrix.android_device }}" \ - --logfile_name "android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}" \ + --android_device "${MATRIX_ANDROID_DEVICE}" \ + --logfile_name "android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}" \ --ci + env: + MATRIX_ANDROID_DEVICE: ${{ matrix.android_device }} + MATRIX_BUILD_OS: ${{ matrix.build_os }} - id: ftl_test if: steps.device-info.outputs.device_type == 'ftl' uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 @@ -962,16 +1051,23 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${{ steps.ftl_test.outputs.test_summary }}' \ - --output_path testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log + python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + --output_path testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log + env: + STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} + MATRIX_BUILD_OS: ${{ matrix.build_os }} + MATRIX_ANDROID_DEVICE: ${{ matrix.android_device }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash run: | # If testapps do not exist, then it's a build error not test error. - if [ -d "testapps/testapps-android-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log.json" ]; then - mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log.json" + if [ -d "testapps/testapps-android-${MATRIX_BUILD_OS}" ] && [ ! -f "testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log.json" ]; then + mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log.json" fi + env: + MATRIX_BUILD_OS: ${{ matrix.build_os }} + MATRIX_ANDROID_DEVICE: ${{ matrix.android_device }} - name: Upload Android test results artifact if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 @@ -1005,18 +1101,25 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize test results if: ${{ !cancelled() }} shell: bash run: | - cat "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log" - if [[ "${{ job.status }}" != "success" ]]; then + cat "testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log" + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_BUILD_OS: ${{ matrix.build_os }} + MATRIX_ANDROID_DEVICE: ${{ matrix.android_device }} + JOB_STATUS: ${{ job.status }} test_ios: name: test-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }} @@ -1060,8 +1163,10 @@ jobs: - name: Device Info id: device-info run: | - echo "device_type=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.ios_device }} -get_device_type)" >> $GITHUB_OUTPUT - echo "device=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.ios_device }} -get_ftl_device_list)" >> $GITHUB_OUTPUT + echo "device_type=$( python scripts/gha/print_matrix_configuration.py -k ${MATRIX_IOS_DEVICE} -get_device_type)" >> $GITHUB_OUTPUT + echo "device=$( python scripts/gha/print_matrix_configuration.py -k ${MATRIX_IOS_DEVICE} -get_ftl_device_list)" >> $GITHUB_OUTPUT + env: + MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - name: Set up Node (18) uses: actions/setup-node@v3 with: @@ -1114,9 +1219,11 @@ jobs: run: | python scripts/gha/test_simulator.py --testapp_dir testapps \ --test_type "${{ matrix.test_type }}" \ - --ios_device "${{ matrix.ios_device }}" \ - --logfile_name "ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}" \ + --ios_device "${MATRIX_IOS_DEVICE}" \ + --logfile_name "ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}" \ --ci + env: + MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - id: ftl_test if: steps.device-info.outputs.device_type == 'ftl' uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 @@ -1135,16 +1242,21 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${{ steps.ftl_test.outputs.test_summary }}' \ - --output_path testapps/test-results-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}.log + python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + --output_path testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log + env: + STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} + MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash run: | # If testapps do not exist, then it's a build error not test error. - if [ -d "testapps/testapps-ios-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}.log.json" ]; then - mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}.log.json" + if [ -d "testapps/testapps-ios-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log.json" ]; then + mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log.json" fi + env: + MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - name: Delete keychain (macOS Simulator) if: ${{ always() && runner.os == 'macOS' && steps.device-info.outputs.device_type == 'virtual' }} shell: bash @@ -1180,18 +1292,24 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize test results if: ${{ !cancelled() }} shell: bash run: | - cat "testapps/test-results-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}.log" - if [[ "${{ job.status }}" != "success" ]]; then + cat "testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log" + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} + JOB_STATUS: ${{ job.status }} test_tvos: name: test-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }} @@ -1274,17 +1392,21 @@ jobs: timeout-minutes: 120 run: | python scripts/gha/test_simulator.py --testapp_dir testapps \ - --tvos_device "${{ matrix.tvos_device }}" \ - --logfile_name "tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }}" \ + --tvos_device "${MATRIX_TVOS_DEVICE}" \ + --logfile_name "tvos-${{ matrix.build_os }}-${MATRIX_TVOS_DEVICE}" \ --ci + env: + MATRIX_TVOS_DEVICE: ${{ matrix.tvos_device }} - name: Prepare results summary artifact if: ${{ !cancelled() }} shell: bash run: | # If testapps do not exist, then it's a build error not test error. - if [ -d "testapps/testapps-tvos-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }}.log.json" ]; then - mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }}.log.json" + if [ -d "testapps/testapps-tvos-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-tvos-${{ matrix.build_os }}-${MATRIX_TVOS_DEVICE}.log.json" ]; then + mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-tvos-${{ matrix.build_os }}-${MATRIX_TVOS_DEVICE}.log.json" fi + env: + MATRIX_TVOS_DEVICE: ${{ matrix.tvos_device }} - name: Delete keychain (macOS Simulator) if: ${{ always() && runner.os == 'macOS' && steps.device-info.outputs.device_type == 'virtual' }} shell: bash @@ -1320,18 +1442,24 @@ jobs: run: | python scripts/gha/it_workflow.py --stage progress \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize test results if: ${{ !cancelled() }} shell: bash run: | - cat "testapps/test-results-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }}.log" - if [[ "${{ job.status }}" != "success" ]]; then + cat "testapps/test-results-tvos-${{ matrix.build_os }}-${MATRIX_TVOS_DEVICE}.log" + if [[ "${JOB_STATUS}" != "success" ]]; then exit 1 fi + env: + MATRIX_TVOS_DEVICE: ${{ matrix.tvos_device }} + JOB_STATUS: ${{ job.status }} summarize_results: name: "summarize-results" @@ -1368,36 +1496,45 @@ jobs: run: | python scripts/gha/it_workflow.py --stage end \ --token ${{github.token}} \ - --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --issue_number ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER}\ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} \ - --new_token ${{steps.generate-token.outputs.token}} + --new_token ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} + env: + NEEDS_CHECK_AND_PREPARE_OUTPUTS_PR_NUMBER: ${{needs.check_and_prepare.outputs.pr_number}} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{steps.generate-token.outputs.token}} - name: Update Daily Report if: needs.check_and_prepare.outputs.trigger == 'scheduled_trigger' shell: bash run: | - if [[ "${{ github.event.inputs.test_pull_request }}" == "nightly-packaging" ]]; then + if [[ "${GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST}" == "nightly-packaging" ]]; then additional_flags=(--build_against sdk) else - if [[ "${{ github.event.schedule }}" == "0 11 * * *" ]]; then + if [[ "${GITHUB_EVENT_SCHEDULE}" == "0 11 * * *" ]]; then # at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo additional_flags=(--build_against tip) else additional_flags=(--build_against repo) fi fi - if [[ "${{ needs.check_and_prepare.outputs.apis }}" == "firestore" ]]; then + if [[ "${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS}" == "firestore" ]]; then additional_flags+=(--build_apis firestore) else additional_flags+=(--build_apis all_except_firestore) fi python scripts/gha/it_workflow.py --stage report \ --token ${{github.token}} \ - --actor ${{github.actor}} \ - --commit ${{needs.check_and_prepare.outputs.github_ref}} \ + --actor ${GITHUB_ACTOR} \ + --commit ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF} \ --run_id ${{github.run_id}} \ ${additional_flags[*]} + env: + GITHUB_EVENT_INPUTS_TEST_PULL_REQUEST: ${{ github.event.inputs.test_pull_request }} + GITHUB_EVENT_SCHEDULE: ${{ github.event.schedule }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} + NEEDS_CHECK_AND_PREPARE_OUTPUTS_GITHUB_REF: ${{needs.check_and_prepare.outputs.github_ref}} - name: Summarize results into GitHub log run: python scripts/gha/summarize_test_results.py --dir test_results --github_log @@ -1426,8 +1563,10 @@ jobs: - name: Retry failed tests run: | echo "::warning ::Attempting to retry failed tests" - python scripts/gha/trigger_workflow.py -t ${{ steps.generate-token.outputs.token }} \ + python scripts/gha/trigger_workflow.py -t ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} \ -w retry-test-failures.yml \ -p run_id ${{ github.run_id }} \ -s 10 \ -A + env: + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/retry-test-failures.yml b/.github/workflows/retry-test-failures.yml index bc14e4e907..89650725c6 100644 --- a/.github/workflows/retry-test-failures.yml +++ b/.github/workflows/retry-test-failures.yml @@ -41,4 +41,7 @@ jobs: - name: Run test failure retry script run: | - python scripts/gha/retry_test_failures.py --token '${{ steps.generate-token.outputs.token }}' --run_id '${{ github.event.inputs.run_id }}' + python scripts/gha/retry_test_failures.py --token '${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN}' --run_id '${GITHUB_EVENT_INPUTS_RUN_ID}' + env: + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} + GITHUB_EVENT_INPUTS_RUN_ID: ${{ github.event.inputs.run_id }} diff --git a/.github/workflows/reviewer-roulette.yml b/.github/workflows/reviewer-roulette.yml index 8388bd06e7..8472397015 100644 --- a/.github/workflows/reviewer-roulette.yml +++ b/.github/workflows/reviewer-roulette.yml @@ -22,7 +22,7 @@ jobs: - name: Get PR reviews # Put the JSON string for all the PR's completed reviews into env.PR_REVIEWS run: | - url="${{ github.event.pull_request.url }}/reviews" + url="${GITHUB_EVENT_PULL_REQUEST_URL}/reviews" echo "${url}" response=$(curl -s -X GET \ -H 'Accept: application/vnd.github.v3+json' \ @@ -32,6 +32,8 @@ jobs: echo "PR_REVIEWS<> $GITHUB_ENV echo "${response}" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV + env: + GITHUB_EVENT_PULL_REQUEST_URL: ${{ github.event.pull_request.url }} - name: Create reviewer list id: get-reviewers @@ -41,7 +43,7 @@ jobs: # completed reviews. requested_reviewers='${{ join(github.event.pull_request.requested_reviewers.*.login, ' ') }} ' completed_reviewers='${{ join(fromJSON(env.PR_REVIEWS).*.user.login, ' ') }} ' - author='${{ github.event.pull_request.user.login }}' + author='${GITHUB_EVENT_PULL_REQUEST_USER_LOGIN}' echo "Requested reviewers: ${requested_reviewers}" echo "Completed reviewers: ${completed_reviewers}" echo "Author: ${author}" @@ -68,6 +70,8 @@ jobs: if [[ "${reviewer_list}" == "[]" ]]; then echo "::warning ::No reviewers available" fi + env: + GITHUB_EVENT_PULL_REQUEST_USER_LOGIN: ${{ github.event.pull_request.user.login }} - name: Choose random reviewer if: ${{ steps.get-reviewers.outputs.reviewer_list != '[]' }} diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index b36c5ebd1e..d2ab1b710c 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -65,8 +65,8 @@ jobs: - name: Run update script run: | - if [[ ${{ github.event.inputs.updateiOS }} -eq 1 ]]; then - if [[ ${{ github.event.inputs.updateAndroid }} -eq 1 ]]; then + if [[ ${GITHUB_EVENT_INPUTS_UPDATEIOS} -eq 1 ]]; then + if [[ ${GITHUB_EVENT_INPUTS_UPDATEANDROID} -eq 1 ]]; then # Update both echo "Updating all dependencies" python scripts/update_android_ios_dependencies.py --logfile=${UPDATE_LOGFILE} @@ -155,7 +155,7 @@ jobs: done fi rm -rf ${ziptmp} - elif [[ ${{ github.event.inputs.updateAndroid }} -eq 1 ]]; then + elif [[ ${GITHUB_EVENT_INPUTS_UPDATEANDROID} -eq 1 ]]; then # Update Android only echo "Updating Android dependencies only" python scripts/update_android_ios_dependencies.py --skip_ios --logfile=${UPDATE_LOGFILE} @@ -166,6 +166,9 @@ jobs: fi touch ${UPDATE_LOGFILE} # In case it wasn't generated before cat ${UPDATE_LOGFILE} + env: + GITHUB_EVENT_INPUTS_UPDATEIOS: ${{ github.event.inputs.updateiOS }} + GITHUB_EVENT_INPUTS_UPDATEANDROID: ${{ github.event.inputs.updateAndroid }} - name: Push branch if there are changes id: push-branch @@ -190,15 +193,15 @@ jobs: date_str=$(date "+%a %b %d %Y") commit_title="Update ${CHOSEN_DEPS} dependencies - ${date_str}" commit_body= - if [[ -n '${{ github.event.inputs.comment }}' ]]; then + if [[ -n '${GITHUB_EVENT_INPUTS_COMMENT}' ]]; then # If a comment was provided, start with that instead of blank. - commit_body='${{ github.event.inputs.comment }} + commit_body='${GITHUB_EVENT_INPUTS_COMMENT} ' fi commit_body="${commit_body}$(cat ${UPDATE_LOGFILE_PROCESSED}) - > Created by [${{github.workflow}} workflow]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID)." + > Created by [${GITHUB_WORKFLOW} workflow]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID)." git config user.email "firebase-workflow-trigger-bot@google.com" git config user.name "firebase-workflow-trigger-bot" git config core.commentChar "%" # so we can use # in git commit messages @@ -211,12 +214,16 @@ jobs: # Push branch git push --set-upstream origin "${NEW_BRANCH}" # Create pull request - pr_number=$(python scripts/gha/create_pull_request.py --token ${{ steps.generate-token.outputs.token }} --head "${NEW_BRANCH}" --base "${{ github.event.inputs.baseBranch }}" --title "${commit_title}" --body "${commit_body}") + pr_number=$(python scripts/gha/create_pull_request.py --token ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} --head "${NEW_BRANCH}" --base "${GITHUB_EVENT_INPUTS_BASEBRANCH}" --title "${commit_title}" --body "${commit_body}") echo "created_pr_number=${pr_number}" >> $GITHUB_OUTPUT else echo "::warning ::No changes detected, won't create pull request." echo "branch_pushed=0" >> $GITHUB_OUTPUT fi + env: + GITHUB_EVENT_INPUTS_COMMENT: ${{ github.event.inputs.comment }} + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} + GITHUB_EVENT_INPUTS_BASEBRANCH: ${{ github.event.inputs.baseBranch }} - name: Set test trigger label. uses: actions-ecosystem/action-add-labels@v1 diff --git a/.github/workflows/update-feature-branches.yml b/.github/workflows/update-feature-branches.yml index 746c87eda6..0a0674c635 100644 --- a/.github/workflows/update-feature-branches.yml +++ b/.github/workflows/update-feature-branches.yml @@ -37,8 +37,8 @@ jobs: id: get-branches run: | branch_pattern='origin/${{ env.defaultBranchPattern }}' - if [[ -n '${{ github.event.inputs.branch_patterns }}' ]]; then - branch_pattern=origin/$(echo '${{ github.event.inputs.branch_patterns }}' | sed 's| | origin/|g') + if [[ -n '${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}' ]]; then + branch_pattern=origin/$(echo '${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}' | sed 's| | origin/|g') fi git remote update echo "Branch pattern: ${branch_pattern}" @@ -55,6 +55,8 @@ jobs: fi echo "::warning ::Branch list: [${branch_list}]" echo "branch_list=[${branch_list}]" >> $GITHUB_OUTPUT + env: + GITHUB_EVENT_INPUTS_BRANCH_PATTERNS: ${{ github.event.inputs.branch_patterns }} create_merge_prs: name: create-merge-pr-${{ matrix.branch_name }} @@ -102,14 +104,14 @@ jobs: git config core.commentChar "%" # so we can use # in git commit messages main_branch='${{ env.defaultMainBranch }}' - if [[ -n '${{ github.event.inputs.main_branch }}' ]]; then - main_branch='${{ github.event.inputs.main_branch }}' + if [[ -n '${GITHUB_EVENT_INPUTS_MAIN_BRANCH}' ]]; then + main_branch='${GITHUB_EVENT_INPUTS_MAIN_BRANCH}' fi # Attempt a merge, then check if any files changed. git merge --no-commit --no-ff "origin/${main_branch}" || true - if git diff --quiet ${{ matrix.branch_name }}; then + if git diff --quiet ${MATRIX_BRANCH_NAME}; then # No merge necessary. - echo "::warning ::No merge needed for ${{ matrix.branch_name }}, won't create pull request." + echo "::warning ::No merge needed for ${MATRIX_BRANCH_NAME}, won't create pull request." echo "created_pr_number=0" >> $GITHUB_OUTPUT exit 0 fi @@ -119,16 +121,20 @@ jobs: date_str=$(date "+%b %d, %Y") - pr_title="Automatic merge of ${main_branch} into ${{ matrix.branch_name }} - ${date_str}" - pr_body="Automatic merge of ${main_branch} into ${{ matrix.branch_name }}. + pr_title="Automatic merge of ${main_branch} into ${MATRIX_BRANCH_NAME} - ${date_str}" + pr_body="Automatic merge of ${main_branch} into ${MATRIX_BRANCH_NAME}. - > Created on ${date_str} by [${{github.workflow}} workflow]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID). + > Created on ${date_str} by [${GITHUB_WORKFLOW} workflow]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID). " git checkout main git checkout -b "${NEW_BRANCH}" git push --set-upstream origin "${NEW_BRANCH}" - pr_number=$(python scripts/gha/create_pull_request.py --token ${{ steps.generate-token.outputs.token }} --base "${{ matrix.branch_name }}" --head "${NEW_BRANCH}" --title "${pr_title}" --body "${pr_body}") + pr_number=$(python scripts/gha/create_pull_request.py --token ${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN} --base "${MATRIX_BRANCH_NAME}" --head "${NEW_BRANCH}" --title "${pr_title}" --body "${pr_body}") echo "created_pr_number=${pr_number}" >> $GITHUB_OUTPUT + env: + GITHUB_EVENT_INPUTS_MAIN_BRANCH: ${{ github.event.inputs.main_branch }} + MATRIX_BRANCH_NAME: ${{ matrix.branch_name }} + STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} - name: Set test trigger label. uses: actions-ecosystem/action-add-labels@v1 From f22b6fd8a90e446056fee2ec22d56f6f264ad4ed Mon Sep 17 00:00:00 2001 From: a-maurice Date: Wed, 18 Feb 2026 13:51:13 -0800 Subject: [PATCH 2/7] Try cleaning the input lists --- .github/workflows/integration_tests.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 3f3c9ec05d..70ff74eaed 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -370,8 +370,9 @@ jobs: elif [[ "${GITHUB_EVENT_INPUTS_FIRESTORE_DEP_SOURCE}" ]]; then additional_flags+=(--cmake_flag=-DFIRESTORE_DEP_SOURCE=${GITHUB_EVENT_INPUTS_FIRESTORE_DEP_SOURCE}) fi + CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"") VERBOSE=1 python scripts/gha/build_testapps.py --p Desktop \ - --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ + --t ${CLEAN_APIS} \ --output_directory "${{ github.workspace }}" \ --artifact_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" \ --noadd_timestamp \ @@ -529,8 +530,9 @@ jobs: cd .. additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi + CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"") python scripts/gha/build_testapps.py --p Android \ - --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ + --t ${CLEAN_APIS} \ --output_directory "${{ github.workspace }}" \ --artifact_name "android-${MATRIX_OS}" \ --noadd_timestamp \ @@ -648,8 +650,9 @@ jobs: cd .. additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi + CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"") python scripts/gha/build_testapps.py --p iOS \ - --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ + --t ${CLEAN_APIS} \ --output_directory "${{ github.workspace }}" \ --ios_sdk ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_MOBILE_TEST_ON} \ --artifact_name "ios-${{ matrix.os }}" \ @@ -765,8 +768,9 @@ jobs: cd .. additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi + CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"") python scripts/gha/build_testapps.py --p tvOS \ - --t ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} \ + --t ${CLEAN_APIS} \ --output_directory "${{ github.workspace }}" \ --artifact_name "tvos-${{ matrix.os }}" \ --noadd_timestamp \ From ac2afbe2e00589d1009c95a58f895a1d6248f265 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Wed, 18 Feb 2026 16:23:02 -0800 Subject: [PATCH 3/7] Update integration_tests.yml --- .github/workflows/integration_tests.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 70ff74eaed..8f5293924d 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -651,10 +651,11 @@ jobs: additional_flags+=(--packaged_sdk downloaded_sdk/firebase_cpp_sdk) fi CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"") + CLEAN_MOBILE_TEST_ON=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_MOBILE_TEST_ON} | tr -d "'" | tr -d "\"") python scripts/gha/build_testapps.py --p iOS \ --t ${CLEAN_APIS} \ --output_directory "${{ github.workspace }}" \ - --ios_sdk ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_MOBILE_TEST_ON} \ + --ios_sdk ${CLEAN_MOBILE_TEST_ON} \ --artifact_name "ios-${{ matrix.os }}" \ --noadd_timestamp \ --short_output_paths \ @@ -1055,7 +1056,7 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ --output_path testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log env: STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} @@ -1246,7 +1247,7 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ --output_path testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log env: STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} From 54f73cb4a1a4afe625357f7e370d4bd9c0861605 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Wed, 18 Feb 2026 18:30:55 -0800 Subject: [PATCH 4/7] Try stripping the ftl result json --- .github/workflows/integration_tests.yml | 4 ++-- scripts/gha/read_ftl_test_result.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 8f5293924d..f3abf2da8e 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -1056,7 +1056,7 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ + python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ --output_path testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log env: STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} @@ -1247,7 +1247,7 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ + python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ --output_path testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log env: STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} diff --git a/scripts/gha/read_ftl_test_result.py b/scripts/gha/read_ftl_test_result.py index 3f35170144..b2583e5be5 100644 --- a/scripts/gha/read_ftl_test_result.py +++ b/scripts/gha/read_ftl_test_result.py @@ -56,7 +56,7 @@ def main(argv): if len(argv) > 1: raise app.UsageError("Too many command-line arguments.") - test_result = json.loads(FLAGS.test_result) + test_result = json.loads(FLAGS.test_result.strip("'")) tests = [] for app in test_result.get("apps"): app_path = app.get("testapp_path") From 57254f5e79531443b193daf57c270699dfa686d7 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Wed, 18 Feb 2026 23:27:10 -0800 Subject: [PATCH 5/7] Update read_ftl_test_result.py --- scripts/gha/read_ftl_test_result.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/gha/read_ftl_test_result.py b/scripts/gha/read_ftl_test_result.py index b2583e5be5..8c9aa645ef 100644 --- a/scripts/gha/read_ftl_test_result.py +++ b/scripts/gha/read_ftl_test_result.py @@ -56,6 +56,9 @@ def main(argv): if len(argv) > 1: raise app.UsageError("Too many command-line arguments.") + print("=-=-=-=-=") + print(FLAGS.test_result) + print("=-=-=-=-=") test_result = json.loads(FLAGS.test_result.strip("'")) tests = [] for app in test_result.get("apps"): From 7ef6da6974e36d2976164d7f00971476f6e867f1 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 19 Feb 2026 11:14:45 -0800 Subject: [PATCH 6/7] Update integration_tests.yml --- .github/workflows/integration_tests.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index f3abf2da8e..4f3eaf986b 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -919,12 +919,13 @@ jobs: MATRIX_OS: ${{ matrix.os }} MATRIX_ARCH: ${{ matrix.arch }} MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} + LOGFILE_NAME: "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" shell: bash run: | if [[ "${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS}" == *"firestore"* ]]; then - firebase emulators:exec --only firestore --project demo-example 'python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}"' + firebase emulators:exec --only firestore --project demo-example "python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name ${LOGFILE_NAME}" else - python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" + python scripts/gha/desktop_tester.py --testapp_dir testapps --logfile_name ${LOGFILE_NAME} fi - name: Prepare results summary artifact if: ${{ !cancelled() }} @@ -1056,7 +1057,7 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + python scripts/gha/read_ftl_test_result.py --test_result "${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}" \ --output_path testapps/test-results-android-${MATRIX_BUILD_OS}-${MATRIX_ANDROID_DEVICE}-${{ matrix.test_type }}.log env: STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} @@ -1247,10 +1248,10 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result '${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}' \ + python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ --output_path testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log env: - STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} + STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: '${{ steps.ftl_test.outputs.test_summary }}' MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - name: Prepare results summary artifact if: ${{ !cancelled() }} From b91c4c2d7956078e26f0e083484e5533f5822e10 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Thu, 19 Feb 2026 14:36:37 -0800 Subject: [PATCH 7/7] Fix single quote problem --- .github/workflows/integration_tests.yml | 9 +++------ .github/workflows/retry-test-failures.yml | 2 +- .github/workflows/reviewer-roulette.yml | 2 +- .github/workflows/update-dependencies.yml | 6 +++--- .github/workflows/update-feature-branches.yml | 8 ++++---- scripts/gha/read_ftl_test_result.py | 5 +---- 6 files changed, 13 insertions(+), 19 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 4f3eaf986b..19f74f620d 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -916,10 +916,7 @@ jobs: env: USE_FIRESTORE_EMULATOR: true NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }} - MATRIX_OS: ${{ matrix.os }} - MATRIX_ARCH: ${{ matrix.arch }} - MATRIX_SSL_VARIANT: ${{ matrix.ssl_variant }} - LOGFILE_NAME: "desktop-${MATRIX_OS}-${MATRIX_ARCH}-${MATRIX_SSL_VARIANT}" + LOGFILE_NAME: "desktop-${{matrix.os}}-${{matrix.arch}}-${{matrix.ssl_variant}}" shell: bash run: | if [[ "${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS}" == *"firestore"* ]]; then @@ -1248,10 +1245,10 @@ jobs: if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }} shell: bash run: | - python scripts/gha/read_ftl_test_result.py --test_result ${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY} \ + python scripts/gha/read_ftl_test_result.py --test_result "${STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY}" \ --output_path testapps/test-results-ios-${{ matrix.build_os }}-${MATRIX_IOS_DEVICE}-${{ matrix.test_type }}.log env: - STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: '${{ steps.ftl_test.outputs.test_summary }}' + STEPS_FTL_TEST_OUTPUTS_TEST_SUMMARY: ${{ steps.ftl_test.outputs.test_summary }} MATRIX_IOS_DEVICE: ${{ matrix.ios_device }} - name: Prepare results summary artifact if: ${{ !cancelled() }} diff --git a/.github/workflows/retry-test-failures.yml b/.github/workflows/retry-test-failures.yml index 89650725c6..a5e79306b0 100644 --- a/.github/workflows/retry-test-failures.yml +++ b/.github/workflows/retry-test-failures.yml @@ -41,7 +41,7 @@ jobs: - name: Run test failure retry script run: | - python scripts/gha/retry_test_failures.py --token '${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN}' --run_id '${GITHUB_EVENT_INPUTS_RUN_ID}' + python scripts/gha/retry_test_failures.py --token "${STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN}" --run_id "${GITHUB_EVENT_INPUTS_RUN_ID}" env: STEPS_GENERATE_TOKEN_OUTPUTS_TOKEN: ${{ steps.generate-token.outputs.token }} GITHUB_EVENT_INPUTS_RUN_ID: ${{ github.event.inputs.run_id }} diff --git a/.github/workflows/reviewer-roulette.yml b/.github/workflows/reviewer-roulette.yml index 8472397015..a23d173780 100644 --- a/.github/workflows/reviewer-roulette.yml +++ b/.github/workflows/reviewer-roulette.yml @@ -43,7 +43,7 @@ jobs: # completed reviews. requested_reviewers='${{ join(github.event.pull_request.requested_reviewers.*.login, ' ') }} ' completed_reviewers='${{ join(fromJSON(env.PR_REVIEWS).*.user.login, ' ') }} ' - author='${GITHUB_EVENT_PULL_REQUEST_USER_LOGIN}' + author="${GITHUB_EVENT_PULL_REQUEST_USER_LOGIN}" echo "Requested reviewers: ${requested_reviewers}" echo "Completed reviewers: ${completed_reviewers}" echo "Author: ${author}" diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index d2ab1b710c..2f2ea7fc99 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -193,11 +193,11 @@ jobs: date_str=$(date "+%a %b %d %Y") commit_title="Update ${CHOSEN_DEPS} dependencies - ${date_str}" commit_body= - if [[ -n '${GITHUB_EVENT_INPUTS_COMMENT}' ]]; then + if [[ -n "${GITHUB_EVENT_INPUTS_COMMENT}" ]]; then # If a comment was provided, start with that instead of blank. - commit_body='${GITHUB_EVENT_INPUTS_COMMENT} + commit_body="${GITHUB_EVENT_INPUTS_COMMENT} - ' + " fi commit_body="${commit_body}$(cat ${UPDATE_LOGFILE_PROCESSED}) diff --git a/.github/workflows/update-feature-branches.yml b/.github/workflows/update-feature-branches.yml index 0a0674c635..e6b5b37f50 100644 --- a/.github/workflows/update-feature-branches.yml +++ b/.github/workflows/update-feature-branches.yml @@ -37,8 +37,8 @@ jobs: id: get-branches run: | branch_pattern='origin/${{ env.defaultBranchPattern }}' - if [[ -n '${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}' ]]; then - branch_pattern=origin/$(echo '${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}' | sed 's| | origin/|g') + if [[ -n "${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}" ]]; then + branch_pattern=origin/$(echo "${GITHUB_EVENT_INPUTS_BRANCH_PATTERNS}" | sed 's| | origin/|g') fi git remote update echo "Branch pattern: ${branch_pattern}" @@ -104,8 +104,8 @@ jobs: git config core.commentChar "%" # so we can use # in git commit messages main_branch='${{ env.defaultMainBranch }}' - if [[ -n '${GITHUB_EVENT_INPUTS_MAIN_BRANCH}' ]]; then - main_branch='${GITHUB_EVENT_INPUTS_MAIN_BRANCH}' + if [[ -n "${GITHUB_EVENT_INPUTS_MAIN_BRANCH}" ]]; then + main_branch="${GITHUB_EVENT_INPUTS_MAIN_BRANCH}" fi # Attempt a merge, then check if any files changed. git merge --no-commit --no-ff "origin/${main_branch}" || true diff --git a/scripts/gha/read_ftl_test_result.py b/scripts/gha/read_ftl_test_result.py index 8c9aa645ef..3f35170144 100644 --- a/scripts/gha/read_ftl_test_result.py +++ b/scripts/gha/read_ftl_test_result.py @@ -56,10 +56,7 @@ def main(argv): if len(argv) > 1: raise app.UsageError("Too many command-line arguments.") - print("=-=-=-=-=") - print(FLAGS.test_result) - print("=-=-=-=-=") - test_result = json.loads(FLAGS.test_result.strip("'")) + test_result = json.loads(FLAGS.test_result) tests = [] for app in test_result.get("apps"): app_path = app.get("testapp_path")