diff --git a/.github/workflows/firebaseai.yml b/.github/workflows/firebaseai.yml index 2b719a9fc41..1924ecbf2a0 100644 --- a/.github/workflows/firebaseai.yml +++ b/.github/workflows/firebaseai.yml @@ -131,6 +131,13 @@ jobs: run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - name: Run IntegrationTests run: scripts/build.sh FirebaseAIIntegration ${{ matrix.target }} + - name: Upload xcodebuild logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: xcodebuild-${{ matrix.target }}-${{ matrix.os }}-${{ matrix.xcode }}.log + path: xcodebuild-*.log + retention-days: 2 pod-lib-lint: # Don't run on private repo unless it is a PR. diff --git a/scripts/build.sh b/scripts/build.sh index 72fa057f65e..b11fba7d804 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -109,12 +109,15 @@ source scripts/check_secrets.sh # If xcodebuild fails with known error codes, retries once. function RunXcodebuild() { echo xcodebuild "$@" + local xcodebuild_args=("$@") + local buildaction="${xcodebuild_args[$# - 1]}" # buildaction is the last arg + local log_filename="xcodebuild-${buildaction}.log" - xcbeautify_cmd=(xcbeautify --renderer github-actions --disable-logging) + local xcbeautify_cmd=(xcbeautify --renderer github-actions --disable-logging) - result=0 - xcodebuild "$@" | tee xcodebuild.log | "${xcbeautify_cmd[@]}" \ - && CheckUnexpectedFailures xcodebuild.log \ + local result=0 + NSUnbufferedIO=YES xcodebuild "$@" 2>&1 | tee "$log_filename" | \ + "${xcbeautify_cmd[@]}" && CheckUnexpectedFailures "$log_filename" \ || result=$? if [[ $result == 65 ]]; then @@ -124,8 +127,8 @@ function RunXcodebuild() { sleep 5 result=0 - xcodebuild "$@" | tee xcodebuild.log | "${xcbeautify_cmd[@]}" \ - && CheckUnexpectedFailures xcodebuild.log \ + NSUnbufferedIO=YES xcodebuild "$@" 2>&1 | tee "$log_filename" | \ + "${xcbeautify_cmd[@]}" && CheckUnexpectedFailures "$log_filename" \ || result=$? fi @@ -505,12 +508,19 @@ case "$product-$platform-$method" in ;; FirebaseAIIntegration-*-*) + # Build + RunXcodebuild \ + -project 'FirebaseAI/Tests/TestApp/VertexAITestApp.xcodeproj' \ + -scheme "VertexAITestApp-SPM" \ + "${xcb_flags[@]}" \ + build + + # Run tests RunXcodebuild \ -project 'FirebaseAI/Tests/TestApp/VertexAITestApp.xcodeproj' \ -scheme "VertexAITestApp-SPM" \ "${xcb_flags[@]}" \ -parallel-testing-enabled NO \ - build \ test ;;