diff --git a/.github/workflows/swift-build-and-test-samples.yml b/.github/workflows/swift-build-and-test-samples.yml index 0cc601740..d288a285b 100644 --- a/.github/workflows/swift-build-and-test-samples.yml +++ b/.github/workflows/swift-build-and-test-samples.yml @@ -14,3 +14,4 @@ jobs: test-path: ./Scripts/build_and_test_samples job-name: Build & Test Sample Apps setup-storefront-env: true + artifact-name: swift-sample-builds-xcresult diff --git a/.github/workflows/swift-test-package.yml b/.github/workflows/swift-test-package.yml index 9929a362a..b4d51d368 100644 --- a/.github/workflows/swift-test-package.yml +++ b/.github/workflows/swift-test-package.yml @@ -13,3 +13,4 @@ jobs: with: test-path: ./Scripts/xcode_run test ShopifyCheckoutKit-Package job-name: Run Package Tests + artifact-name: swift-package-tests-xcresult diff --git a/.github/workflows/swift-test-workflow.yml b/.github/workflows/swift-test-workflow.yml index e6e330af6..6e2ad66ae 100644 --- a/.github/workflows/swift-test-workflow.yml +++ b/.github/workflows/swift-test-workflow.yml @@ -8,6 +8,9 @@ on: required: false type: string default: Run + artifact-name: + required: true + type: string setup-storefront-env: required: false type: boolean @@ -84,3 +87,13 @@ jobs: - name: Run Tests run: ${{ inputs.test-path }} + + - name: Upload xcresult bundle + if: failure() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ inputs.artifact-name }} + path: .xcresults/ + if-no-files-found: warn + include-hidden-files: true + retention-days: 7 diff --git a/.gitignore b/.gitignore index 2f382e802..d8a3bc797 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ node_modules/ # Swift / Xcode / SwiftPM .build/ .swiftpm/ +.xcresults/ xcuserdata/ platforms/swift/Samples/**/*.xcodeproj/ platforms/react-native/test/rct-integration-app/*.xcodeproj/ diff --git a/platforms/swift/Scripts/xcode_run b/platforms/swift/Scripts/xcode_run index e80845f26..93f78b58a 100755 --- a/platforms/swift/Scripts/xcode_run +++ b/platforms/swift/Scripts/xcode_run @@ -43,6 +43,14 @@ if [[ "$SCHEME" == "ShopifyCheckoutKit-Package" && "$ACTION" == *"build"* && "$A xcodebuild_cmd="$xcodebuild_cmd SWIFT_TREAT_WARNINGS_AS_ERRORS=YES" fi +if [[ "$CI" == "true" && ( "$ACTION" == *"build"* || "$ACTION" == *"test"* ) ]]; then + result_bundle_dir="$(cd "$SCRIPT_DIR/../../.." && pwd)/.xcresults" + result_bundle_path="$result_bundle_dir/$SCHEME.xcresult" + rm -rf "$result_bundle_path" + mkdir -p "$result_bundle_dir" + xcodebuild_cmd="$xcodebuild_cmd -resultBundlePath \"$result_bundle_path\"" +fi + # Package.swift lives at the monorepo root. For SwiftPM package schemes # (Xcode's auto-generated "-Package" suffix), cd up to the directory that # contains it before invoking xcodebuild — xcodebuild discovers SwiftPM