From 2604241a75bf96fe1185e0abb4f7cf905a697d42 Mon Sep 17 00:00:00 2001 From: Sebastian Villena <97059974+ruisebas@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:42:37 -0400 Subject: [PATCH 1/3] chore: Adding caching and retries to Integration Tests workflows (#3339) --- .../get_platform_parameters/action.yml | 60 +++++++ .github/workflows/integ_test.yml | 36 +---- .github/workflows/integ_test_analytics.yml | 105 +++--------- .github/workflows/integ_test_api.yml | 34 ++-- .../workflows/integ_test_api_functional.yml | 105 +++--------- .../integ_test_api_graphql_auth_directive.yml | 75 +++------ .../workflows/integ_test_api_graphql_iam.yml | 75 +++------ .../integ_test_api_graphql_lambda_auth.yml | 105 +++--------- .../integ_test_api_graphql_lazy_load.yml | 75 +++------ .../integ_test_api_graphql_user_pool.yml | 75 +++------ .github/workflows/integ_test_api_rest_iam.yml | 105 +++--------- .../integ_test_api_rest_user_pool.yml | 75 +++------ .github/workflows/integ_test_auth.yml | 140 ++++------------ .github/workflows/integ_test_datastore.yml | 32 +--- .../integ_test_datastore_auth_cognito.yml | 111 +++---------- .../integ_test_datastore_auth_iam.yml | 111 +++---------- .../workflows/integ_test_datastore_base.yml | 111 +++---------- .../workflows/integ_test_datastore_cpk.yml | 111 +++---------- .../integ_test_datastore_lazy_load.yml | 111 +++---------- .../integ_test_datastore_multi_auth.yml | 111 +++---------- .github/workflows/integ_test_datastore_v2.yml | 111 +++---------- .github/workflows/integ_test_geo.yml | 107 +++--------- .github/workflows/integ_test_logging.yml | 105 +++--------- .github/workflows/integ_test_predictions.yml | 120 +++----------- .../integ_test_push_notifications.yml | 153 ++++++++---------- .github/workflows/integ_test_storage.yml | 105 +++--------- .github/workflows/run_integration_tests.yml | 122 ++++++++++++++ .gitignore | 6 - .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 113 ------------- 46 files changed, 697 insertions(+), 2663 deletions(-) create mode 100644 .github/composite_actions/get_platform_parameters/action.yml create mode 100644 .github/workflows/run_integration_tests.yml delete mode 100644 AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/.github/composite_actions/get_platform_parameters/action.yml b/.github/composite_actions/get_platform_parameters/action.yml new file mode 100644 index 0000000000..d007eca053 --- /dev/null +++ b/.github/composite_actions/get_platform_parameters/action.yml @@ -0,0 +1,60 @@ +name: 'Get the build parameters for a given platform' +inputs: + platform: + description: 'The name of the platform. Valid values are iOS, tvOS, watchOS and macOS' + required: true + type: string + xcode_version: + description: 'The version of Xcode. Valid values are 14.3 and 15.0' + required: true + type: string +outputs: + destination: + description: "The destination associated with the given platform and Xcode version" + value: ${{ steps.platform.outputs.destination }} + sdk: + description: "The SDK associated with the given platform" + value: ${{ steps.platform.outputs.sdk }} +runs: + using: "composite" + steps: + - id: platform + run: | + PLATFORM=${{ inputs.platform }} + case $PLATFORM in + iOS|tvOS|watchOS|macOS) ;; + *) echo "Unsupported platform: $PLATFORM"; exit 1 ;; + esac + + XCODE_VERSION=${{ inputs.xcode_version }} + case $XCODE_VERSION in + 14.3|15.0) ;; + *) echo "Unsupported Xcode version: $XCODE_VERSION"; exit 1 ;; + esac + + DESTINATION_MAPPING='{ + "14.3": { + "iOS": "platform=iOS Simulator,name=iPhone 14,OS=16.4", + "tvOS": "platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=16.4", + "watchOS": "platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=9.4", + "macOS": "platform=macOS,arch=x86_64" + }, + "15.0": { + "iOS": "platform=iOS Simulator,name=iPhone 15,OS=latest", + "tvOS": "platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest", + "watchOS": "platform=watchOS Simulator,name=Apple Watch Series 9 (45mm),OS=latest", + "macOS": "platform=macOS,arch=x86_64" + } + }' + + SDK_MAPPING='{ + "iOS": "iphonesimulator", + "tvOS": "appletvsimulator", + "watchOS": "watchsimulator", + "macOS": "macosx" + }' + + echo "destination=$(echo $DESTINATION_MAPPING | jq -r ."\"$XCODE_VERSION\"".$PLATFORM)" >> $GITHUB_OUTPUT + echo "sdk=$(echo $SDK_MAPPING | jq -r .$PLATFORM)" >> $GITHUB_OUTPUT + shell: bash + diff --git a/.github/workflows/integ_test.yml b/.github/workflows/integ_test.yml index e1e08c6b41..fb89cceacb 100644 --- a/.github/workflows/integ_test.yml +++ b/.github/workflows/integ_test.yml @@ -1,12 +1,6 @@ name: Integration Tests on: workflow_dispatch: - workflow_call: - inputs: - identifier: - required: true - type: string - push: branches: [main] @@ -19,53 +13,37 @@ concurrency: cancel-in-progress: ${{ github.ref_name != 'main'}} jobs: - prepare-for-test: - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Verify copy resources - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: NA - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - analytics-test: - needs: prepare-for-test + name: Analytics Integration Tests uses: ./.github/workflows/integ_test_analytics.yml secrets: inherit push-notifications-test: - needs: prepare-for-test + name: Push Notifications Integration Tests uses: ./.github/workflows/integ_test_push_notifications.yml secrets: inherit predictions-test: - needs: prepare-for-test + name: Predictions Integration Tests uses: ./.github/workflows/integ_test_predictions.yml secrets: inherit auth-test: - needs: prepare-for-test + name: Auth Integration Tests uses: ./.github/workflows/integ_test_auth.yml secrets: inherit geo-test: - needs: prepare-for-test + name: Geo Integration Tests uses: ./.github/workflows/integ_test_geo.yml secrets: inherit storage-test: - needs: prepare-for-test + name: Storage Integration Tests uses: ./.github/workflows/integ_test_storage.yml secrets: inherit logging-test: - needs: prepare-for-test + name: Logging Integration Tests uses: ./.github/workflows/integ_test_logging.yml secrets: inherit diff --git a/.github/workflows/integ_test_analytics.yml b/.github/workflows/integ_test_analytics.yml index 8dccaee2d8..f88d59e0ce 100644 --- a/.github/workflows/integ_test_analytics.yml +++ b/.github/workflows/integ_test_analytics.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - analytics-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: analytics - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Analytics/Tests/AnalyticsHostApp - scheme: AWSPinpointAnalyticsPluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=latest' - xcode_path: '/Applications/Xcode_14.3.app' - - analytics-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: analytics - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Analytics/Tests/AnalyticsHostApp - scheme: AWSPinpointAnalyticsPluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - analytics-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: analytics - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Analytics/Tests/AnalyticsHostApp - scheme: AWSPinpointAnalyticsPluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + analytics-integration-tests: + name: Analytics Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSPinpointAnalyticsPluginIntegrationTestsWatch' || 'AWSPinpointAnalyticsPluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSPinpointAnalyticsPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Analytics/Tests/AnalyticsHostApp + xcode_version: '14.3' + resource_subfolder: analytics + timeout-minutes: 30 + secrets: inherit diff --git a/.github/workflows/integ_test_api.yml b/.github/workflows/integ_test_api.yml index f4966eeccd..eee3d88d0a 100644 --- a/.github/workflows/integ_test_api.yml +++ b/.github/workflows/integ_test_api.yml @@ -10,66 +10,50 @@ permissions: concurrency: group: ${{ github.head_ref || github.run_id }} - cancel-in-progress: true + cancel-in-progress: ${{ github.ref_name != 'main'}} jobs: - prepare-for-test: - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Verify copy resources - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: NA - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - functional-test: - needs: prepare-for-test + name: Functional Tests uses: ./.github/workflows/integ_test_api_functional.yml secrets: inherit graphql-user-pool-test: if: ${{ false }} - needs: prepare-for-test + name: GraphQL | User Pool Tests uses: ./.github/workflows/integ_test_api_graphql_user_pool.yml secrets: inherit graphql-auth-directive-test: if: ${{ false }} - needs: prepare-for-test + name: GraphQL | Auth Directive Tests uses: ./.github/workflows/integ_test_api_graphql_auth_directive.yml secrets: inherit graphql-iam-test: if: ${{ false }} - needs: prepare-for-test + name: GraphQL | IAM Tests uses: ./.github/workflows/integ_test_api_graphql_iam.yml secrets: inherit graphql-lambda-auth-test: - needs: prepare-for-test + name: GraphQL | Lambda Tests uses: ./.github/workflows/integ_test_api_graphql_lambda_auth.yml secrets: inherit graphql-lazy-load-test: if: ${{ false }} - needs: prepare-for-test + name: GraphQL | Lazy Load Tests uses: ./.github/workflows/integ_test_api_graphql_lazy_load.yml secrets: inherit rest-user-pool-test: if: ${{ false }} - needs: prepare-for-test + name: REST | User Pool Tests uses: ./.github/workflows/integ_test_api_rest_user_pool.yml secrets: inherit rest-iam-test: - needs: prepare-for-test + name: REST | IAM Tests uses: ./.github/workflows/integ_test_api_rest_iam.yml secrets: inherit diff --git a/.github/workflows/integ_test_api_functional.yml b/.github/workflows/integ_test_api_functional.yml index ac1db905ed..c8874243fe 100644 --- a/.github/workflows/integ_test_api_functional.yml +++ b/.github/workflows/integ_test_api_functional.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - api-functional-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginFunctionalTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-functional-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginFunctionalTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - api-functional-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginFunctionalTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-functional-tests: + name: API Integration Tests | Functional + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSAPIPluginFunctionalTestsWatch' || 'AWSAPIPluginFunctionalTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_graphql_auth_directive.yml b/.github/workflows/integ_test_api_graphql_auth_directive.yml index 22f1fc95be..46ff30d925 100644 --- a/.github/workflows/integ_test_api_graphql_auth_directive.yml +++ b/.github/workflows/integ_test_api_graphql_auth_directive.yml @@ -19,59 +19,22 @@ permissions: contents: read jobs: - api-graphql-auth-directive-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLAuthDirectiveTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-graphql-auth-directive-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLAuthDirectiveTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' \ No newline at end of file + api-graphql-auth-directive-tests: + name: API Integration Tests | GraphQL Auth Directive + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AWSAPIPluginGraphQLAuthDirectiveTests + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_graphql_iam.yml b/.github/workflows/integ_test_api_graphql_iam.yml index c5cdfa6082..94dccec965 100644 --- a/.github/workflows/integ_test_api_graphql_iam.yml +++ b/.github/workflows/integ_test_api_graphql_iam.yml @@ -19,59 +19,22 @@ permissions: contents: read jobs: - api-graphql-iam-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLIAMTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-graphql-iam-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLIAMTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-graphql-iam-tests: + name: API Integration Tests | GraphQL IAM + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AWSAPIPluginGraphQLIAMTests + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_graphql_lambda_auth.yml b/.github/workflows/integ_test_api_graphql_lambda_auth.yml index 5ed3b0cda9..f1f699f851 100644 --- a/.github/workflows/integ_test_api_graphql_lambda_auth.yml +++ b/.github/workflows/integ_test_api_graphql_lambda_auth.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - api-graphql-lambda-auth-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLLambdaAuthTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-graphql-lambda-auth-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLLambdaAuthTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - api-graphql-lambda-auth-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLLambdaAuthTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-graphql-lambda-auth-tests: + name: API Integration Tests | GraphQL Lambda + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSAPIPluginGraphQLLambdaAuthTestsWatch' || 'AWSAPIPluginGraphQLLambdaAuthTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_graphql_lazy_load.yml b/.github/workflows/integ_test_api_graphql_lazy_load.yml index e731ebe3f0..332e71eec5 100644 --- a/.github/workflows/integ_test_api_graphql_lazy_load.yml +++ b/.github/workflows/integ_test_api_graphql_lazy_load.yml @@ -19,59 +19,22 @@ permissions: contents: read jobs: - api-lazy-load-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginLazyLoadTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-lazy-load-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginLazyLoadTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-lazy-load-tests: + name: API Integration Tests | GraphQL Lazy Load + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AWSAPIPluginLazyLoadTests + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_graphql_user_pool.yml b/.github/workflows/integ_test_api_graphql_user_pool.yml index 75944dc9ca..e3f10fd1eb 100644 --- a/.github/workflows/integ_test_api_graphql_user_pool.yml +++ b/.github/workflows/integ_test_api_graphql_user_pool.yml @@ -19,59 +19,22 @@ permissions: contents: read jobs: - api-graphql-user-pool-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLUserPoolTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-graphql-user-pool-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginGraphQLUserPoolTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-graphql-user-pool-tests: + name: API Integration Tests | GraphQL User Pool + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AWSAPIPluginGraphQLUserPoolTests + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/integ_test_api_rest_iam.yml b/.github/workflows/integ_test_api_rest_iam.yml index 125c884f2c..aa3b203b3f 100644 --- a/.github/workflows/integ_test_api_rest_iam.yml +++ b/.github/workflows/integ_test_api_rest_iam.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - api-rest-iam-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginRESTIAMTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-rest-iam-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginRESTIAMTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - api-rest-iam-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginRESTIAMTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + api-rest-iam-tests: + name: API Integration Tests | REST IAM + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSAPIPluginRESTIAMTestsWatch' || 'AWSAPIPluginRESTIAMTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_api_rest_user_pool.yml b/.github/workflows/integ_test_api_rest_user_pool.yml index 186c457baa..c88f87099b 100644 --- a/.github/workflows/integ_test_api_rest_user_pool.yml +++ b/.github/workflows/integ_test_api_rest_user_pool.yml @@ -19,59 +19,22 @@ permissions: contents: read jobs: - api-rest-user-pool-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginRESTUserPoolTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - api-rest-user-pool-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: api - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/API/Tests/APIHostApp - scheme: AWSAPIPluginRESTUserPoolTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' \ No newline at end of file + api-rest-user-pool-tests: + name: API Integration Tests | REST User Pool + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AWSAPIPluginRESTUserPoolTests + platform: ${{ matrix.platform }} + build_cache_key: AWSAPIPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/API/Tests/APIHostApp + xcode_version: '14.3' + resource_subfolder: api + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_auth.yml b/.github/workflows/integ_test_auth.yml index 277335edca..fef7e2c13a 100644 --- a/.github/workflows/integ_test_auth.yml +++ b/.github/workflows/integ_test_auth.yml @@ -29,114 +29,36 @@ permissions: contents: read jobs: - auth-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: auth - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Auth/Tests/AuthHostApp/ - scheme: AuthIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - auth-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: auth - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Auth/Tests/AuthHostApp/ - scheme: AuthIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - auth-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: auth - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Auth/Tests/AuthHostApp/ - scheme: AuthIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + auth-integration-tests: + name: Auth Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AuthIntegrationTestsWatch' || 'AuthIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSCognitoAuthPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Auth/Tests/AuthHostApp/ + xcode_version: '14.3' + resource_subfolder: auth + timeout-minutes: 30 + secrets: inherit auth-ui-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.hostedui-ios }} - runs-on: macos-12 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: auth - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Auth/Tests/AuthHostedUIApp/ - scheme: AuthHostedUIApp + if: ${{ inputs.hostedui-ios != 'false' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: AuthHostedUIApp + platform: iOS + build_cache_key: AWSCognitoAuthPlugin-iOS-latest-build-main + project_path: ./AmplifyPlugins/Auth/Tests/AuthHostedUIApp/ + xcode_version: '14.3' + resource_subfolder: auth + timeout-minutes: 30 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore.yml b/.github/workflows/integ_test_datastore.yml index 462f28e700..1cd2063062 100644 --- a/.github/workflows/integ_test_datastore.yml +++ b/.github/workflows/integ_test_datastore.yml @@ -10,56 +10,40 @@ permissions: concurrency: group: ${{ github.head_ref || github.run_id }} - cancel-in-progress: true + cancel-in-progress: ${{ github.ref_name != 'main'}} jobs: - prepare-for-test: - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Verify copy resources - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: NA - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - datastore-base-test: - needs: prepare-for-test + name: Base Tests uses: ./.github/workflows/integ_test_datastore_base.yml secrets: inherit datastore-auth-iam-test: - needs: prepare-for-test + name: Auth IAM Tests uses: ./.github/workflows/integ_test_datastore_auth_iam.yml secrets: inherit datastore-cpk-test: - needs: prepare-for-test + name: CPK Tests uses: ./.github/workflows/integ_test_datastore_cpk.yml secrets: inherit datastore-lazy-load-test: - needs: prepare-for-test + name: Lazy Load Tests uses: ./.github/workflows/integ_test_datastore_lazy_load.yml secrets: inherit datastore-multi-auth-test: - needs: prepare-for-test + name: Multi Auth Tests uses: ./.github/workflows/integ_test_datastore_multi_auth.yml secrets: inherit datastore-transformer-v2-test: - needs: prepare-for-test + name: Transformer V2 Tests uses: ./.github/workflows/integ_test_datastore_v2.yml secrets: inherit datastore-auth-cognito-test: - needs: prepare-for-test + name: Auth Cognito Tests uses: ./.github/workflows/integ_test_datastore_auth_cognito.yml secrets: inherit diff --git a/.github/workflows/integ_test_datastore_auth_cognito.yml b/.github/workflows/integ_test_datastore_auth_cognito.yml index 8da62dc393..7ed891f883 100644 --- a/.github/workflows/integ_test_datastore_auth_cognito.yml +++ b/.github/workflows/integ_test_datastore_auth_cognito.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-auth-cognito-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthCognitoTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-auth-cognito-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthCognitoTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-auth-cognito-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthCognitoTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-auth-cognito-tests: + name: DataStore Integration Tests | Auth Cognito + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginAuthCognitoTestsWatch' || 'AWSDataStorePluginAuthCognitoTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_auth_iam.yml b/.github/workflows/integ_test_datastore_auth_iam.yml index 568834765e..3b2f4af585 100644 --- a/.github/workflows/integ_test_datastore_auth_iam.yml +++ b/.github/workflows/integ_test_datastore_auth_iam.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-auth-iam-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthIAMTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-auth-iam-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthIAMTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-auth-iam-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginAuthIAMTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-auth-iam-tests: + name: DataStore Integration Tests | Auth IAM + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginAuthIAMTestsWatch' || 'AWSDataStorePluginAuthIAMTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_base.yml b/.github/workflows/integ_test_datastore_base.yml index ba45454837..06c51f8785 100644 --- a/.github/workflows/integ_test_datastore_base.yml +++ b/.github/workflows/integ_test_datastore_base.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-test-base-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-test-base-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-test-base-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-tests: + name: DataStore Integration Tests | Base + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginIntegrationTestsWatch' || 'AWSDataStorePluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_cpk.yml b/.github/workflows/integ_test_datastore_cpk.yml index 1f48780ee7..8e97bb1e07 100644 --- a/.github/workflows/integ_test_datastore_cpk.yml +++ b/.github/workflows/integ_test_datastore_cpk.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-cpk-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginCPKTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-cpk-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginCPKTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-cpk-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginCPKTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' \ No newline at end of file + datastore-integration-cpk-tests: + name: DataStore Integration Tests | CPK + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginCPKTestsWatch' || 'AWSDataStorePluginCPKTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_lazy_load.yml b/.github/workflows/integ_test_datastore_lazy_load.yml index ab0e5f8cff..388d28f1d2 100644 --- a/.github/workflows/integ_test_datastore_lazy_load.yml +++ b/.github/workflows/integ_test_datastore_lazy_load.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-lazy-load-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginLazyLoadTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-lazy-load-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginLazyLoadTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-lazy-load-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginLazyLoadTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-lazy-load-tests: + name: DataStore Integration Tests | Lazy Load + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginLazyLoadTestsWatch' || 'AWSDataStorePluginLazyLoadTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_multi_auth.yml b/.github/workflows/integ_test_datastore_multi_auth.yml index 93fc522563..e8900c4f24 100644 --- a/.github/workflows/integ_test_datastore_multi_auth.yml +++ b/.github/workflows/integ_test_datastore_multi_auth.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-multi-auth-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginMultiAuthTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-multi-auth-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginMultiAuthTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-multi-auth-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginMultiAuthTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-multi-auth-tests: + name: DataStore Integration Tests | Multi Auth + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginMultiAuthTestsWatch' || 'AWSDataStorePluginMultiAuthTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_datastore_v2.yml b/.github/workflows/integ_test_datastore_v2.yml index 262a8a6aaa..f842b38c13 100644 --- a/.github/workflows/integ_test_datastore_v2.yml +++ b/.github/workflows/integ_test_datastore_v2.yml @@ -24,94 +24,23 @@ permissions: contents: read jobs: - datastore-integration-v2-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginV2Tests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-v2-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginV2Tests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' - - datastore-integration-v2-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - timeout-minutes: 60 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: datastore - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp - scheme: AWSDataStorePluginV2TestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' - other_flags: '-test-iterations 3 -retry-tests-on-failure' + datastore-integration-v2-tests: + name: DataStore Integration Tests | Transformer V2 + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSDataStorePluginV2TestsWatch' || 'AWSDataStorePluginV2Tests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSDataStorePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/DataStore/Tests/DataStoreHostApp + xcode_version: '14.3' + resource_subfolder: datastore + timeout-minutes: 120 + secrets: inherit diff --git a/.github/workflows/integ_test_geo.yml b/.github/workflows/integ_test_geo.yml index 4ba3bcf0e6..7effa17ab9 100644 --- a/.github/workflows/integ_test_geo.yml +++ b/.github/workflows/integ_test_geo.yml @@ -1,4 +1,4 @@ -name: Integration Test | Geo +name: Integration Tests | Geo on: workflow_dispatch: inputs: @@ -24,88 +24,23 @@ permissions: contents: read jobs: - geo-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: geo - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Geo/Tests/GeoHostApp/ - scheme: AWSLocationGeoPluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - geo-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: geo - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Geo/Tests/GeoHostApp/ - scheme: AWSLocationGeoPluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - geo-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: geo - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Geo/Tests/GeoHostApp/ - scheme: AWSLocationGeoPluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + geo-integration-tests: + name: Geo Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSLocationGeoPluginIntegrationTestsWatch' || 'AWSLocationGeoPluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSLocationGeoPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Geo/Tests/GeoHostApp/ + xcode_version: '14.3' + resource_subfolder: geo + timeout-minutes: 30 + secrets: inherit diff --git a/.github/workflows/integ_test_logging.yml b/.github/workflows/integ_test_logging.yml index 738a5bcf75..770b87a2fb 100644 --- a/.github/workflows/integ_test_logging.yml +++ b/.github/workflows/integ_test_logging.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - logging-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: logging - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Logging/Tests/AWSCloudWatchLoggingPluginHostApp - scheme: AWSCloudWatchLoggingPluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - logging-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: logging - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Logging/Tests/AWSCloudWatchLoggingPluginHostApp - scheme: AWSCloudWatchLoggingPluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - logging-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: logging - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Logging/Tests/AWSCloudWatchLoggingPluginHostApp - scheme: AWSCloudWatchLoggingPluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 9 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_15.0.app' + logging-integration-tests: + name: Logging Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSCloudWatchLoggingPluginIntegrationTestsWatch' || 'AWSCloudWatchLoggingPluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSCloudWatchLoggingPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Logging/Tests/AWSCloudWatchLoggingPluginHostApp + xcode_version: ${{ matrix.platform == 'watchOS' && '15.0' || '14.3' }} + resource_subfolder: logging + timeout-minutes: 45 + secrets: inherit diff --git a/.github/workflows/integ_test_predictions.yml b/.github/workflows/integ_test_predictions.yml index b661a77541..a555d2d43b 100644 --- a/.github/workflows/integ_test_predictions.yml +++ b/.github/workflows/integ_test_predictions.yml @@ -24,103 +24,23 @@ permissions: contents: read jobs: - predictions-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - continue-on-error: true - timeout-minutes: 30 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: predictions - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: List the copied configurations - run: ls ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Predictions/Tests/PredictionsHostApp - scheme: AWSPredictionsPluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - predictions-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - continue-on-error: true - timeout-minutes: 30 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: predictions - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: List the copied configurations - run: ls ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Predictions/Tests/PredictionsHostApp - scheme: AWSPredictionsPluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - predictions-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - continue-on-error: true - timeout-minutes: 30 - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: predictions - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }} - - - name: List the copied configurations - run: ls ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Predictions/Tests/PredictionsHostApp - scheme: AWSPredictionsPluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + predictions-integration-tests: + name: Predictions Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSPredictionsPluginIntegrationTestsWatch' || 'AWSPredictionsPluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSPredictionsPlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Predictions/Tests/PredictionsHostApp + xcode_version: '14.3' + resource_subfolder: predictions + timeout-minutes: 30 + secrets: inherit diff --git a/.github/workflows/integ_test_push_notifications.yml b/.github/workflows/integ_test_push_notifications.yml index 242b28667c..0cbc663f54 100644 --- a/.github/workflows/integ_test_push_notifications.yml +++ b/.github/workflows/integ_test_push_notifications.yml @@ -24,72 +24,68 @@ permissions: contents: read jobs: - push-notification-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} + push-notification-integration-tests: + name: ${{ matrix.platform }} Tests | PushNotificationHostApp runs-on: macos-13 - timeout-minutes: 45 + timeout-minutes: 30 environment: IntegrationTest + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 #v3.5.3 with: persist-credentials: false - - - name: Make directory + + - name: Get build parameters for ${{ matrix.platform}} + id: platform + uses: ./.github/composite_actions/get_platform_parameters + with: + platform: ${{ matrix.platform }} + xcode_version: '14.3' + + - name: Create the test configuration directory run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - name: Copy integration test resouces + - name: Download the Integration Test configurations uses: ./.github/composite_actions/download_test_configuration with: resource_subfolder: push-notification aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} aws_region: ${{ secrets.AWS_REGION }} aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} + destination: ~/.aws-amplify/amplify-ios/testconfiguration/ - name: Set up node uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c with: node-version: 16.x - - name: Run Local Server - run: | - cd ./AmplifyPlugins/Notifications/Push/Tests/PushNotificationHostApp/LocalServer - npm install - npm start & - shell: bash - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test + - name: Attempt to use the dependencies cache + id: dependencies-cache + timeout-minutes: 4 + continue-on-error: true + uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 with: - project_path: ./AmplifyPlugins/Notifications/Push/Tests/PushNotificationHostApp - scheme: PushNotificationHostApp - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - push-notification-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - timeout-minutes: 30 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b + path: ~/Library/Developer/Xcode/DerivedData/Amplify + key: amplify-packages-${{ hashFiles('Package.resolved') }} + restore-keys: | + amplify-packages- + + - name: Attempt to use the provided build cache + id: build-cache + timeout-minutes: 4 + continue-on-error: true + uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: push-notification - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Set up node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c - with: - node-version: 16.x + path: ${{ github.workspace }}/Build + key: AWSPinpointPushNotificationsPlugin-${{ matrix.platform }}-latest-build-main - name: Run Local Server run: | @@ -98,53 +94,32 @@ jobs: npm start & shell: bash - - name: Run Integration test + - name: Run ${{ matrix.platform }} Integration Tests + id: run-tests + continue-on-error: true uses: ./.github/composite_actions/run_xcodebuild_test with: + scheme: ${{ matrix.platform == 'watchOS' && 'PushNotificationWatchTests' || 'PushNotificationHostApp' }} + destination: ${{ steps.platform.outputs.destination }} + sdk: ${{ steps.platform.outputs.sdk }} + xcode_path: /Applications/Xcode_14.3.app project_path: ./AmplifyPlugins/Notifications/Push/Tests/PushNotificationHostApp - scheme: PushNotificationHostApp - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=16.4 - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - push-notification-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - timeout-minutes: 30 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: push-notification - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Set up node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c - with: - node-version: 16.x - - - name: Run Local Server - run: | - cd ./AmplifyPlugins/Notifications/Push/Tests/PushNotificationHostApp/LocalServer - npm install - npm start & - shell: bash - - - name: Run Integration test + generate_coverage: false + cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify + derived_data_path: ${{ github.workspace }}/Build + disable_package_resolution: ${{ steps.dependencies-cache.outputs.cache-hit }} + + - name: Retry ${{ matrix.platform }} Integration Tests + if: steps.run-tests.outcome=='failure' + id: retry-tests uses: ./.github/composite_actions/run_xcodebuild_test with: + scheme: ${{ matrix.platform == 'watchOS' && 'PushNotificationWatchTests' || 'PushNotificationHostApp' }} + destination: ${{ steps.platform.outputs.destination }} + sdk: ${{ steps.platform.outputs.sdk }} + xcode_path: /Applications/Xcode_14.3.app project_path: ./AmplifyPlugins/Notifications/Push/Tests/PushNotificationHostApp - scheme: PushNotificationWatchTests - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=9.4 - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + generate_coverage: false + cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify + derived_data_path: ${{ github.workspace }}/Build + disable_package_resolution: true \ No newline at end of file diff --git a/.github/workflows/integ_test_storage.yml b/.github/workflows/integ_test_storage.yml index 7e00e05529..af7e50b00f 100644 --- a/.github/workflows/integ_test_storage.yml +++ b/.github/workflows/integ_test_storage.yml @@ -24,88 +24,23 @@ permissions: contents: read jobs: - storage-integration-test-iOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.ios }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: storage - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Storage/Tests/StorageHostApp/ - scheme: AWSS3StoragePluginIntegrationTests - destination: 'platform=iOS Simulator,name=iPhone 14,OS=16.4' - xcode_path: '/Applications/Xcode_14.3.app' - - storage-integration-test-tvOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.tvos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: storage - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Storage/Tests/StorageHostApp/ - scheme: AWSS3StoragePluginIntegrationTests - destination: platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest - sdk: appletvsimulator - xcode_path: '/Applications/Xcode_14.3.app' - - storage-integration-test-watchOS: - if: ${{ github.event_name != 'workflow_dispatch' || inputs.watchos }} - runs-on: macos-13 - environment: IntegrationTest - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b - with: - persist-credentials: false - - - name: Make directory - run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ - - - name: Copy integration test resouces - uses: ./.github/composite_actions/download_test_configuration - with: - resource_subfolder: storage - aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - aws_region: ${{ secrets.AWS_REGION }} - aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} - - - name: Run Integration test - uses: ./.github/composite_actions/run_xcodebuild_test - with: - project_path: ./AmplifyPlugins/Storage/Tests/StorageHostApp/ - scheme: AWSS3StoragePluginIntegrationTestsWatch - destination: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=latest - sdk: watchsimulator - xcode_path: '/Applications/Xcode_14.3.app' + storage-integration-tests: + name: Storage Integration Tests + strategy: + fail-fast: false + matrix: + platform: [iOS, tvOS, watchOS] + exclude: + - platform: ${{ github.event.inputs.ios == 'false' && 'iOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.tvos == 'false' && 'tvOS' || 'Dummy' }} + - platform: ${{ github.event.inputs.watchos == 'false' && 'watchOS' || 'Dummy' }} + uses: ./.github/workflows/run_integration_tests.yml + with: + scheme: ${{ matrix.platform == 'watchOS' && 'AWSS3StoragePluginIntegrationTestsWatch' || 'AWSS3StoragePluginIntegrationTests' }} + platform: ${{ matrix.platform }} + build_cache_key: AWSS3StoragePlugin-${{ matrix.platform }}-latest-build-main + project_path: ./AmplifyPlugins/Storage/Tests/StorageHostApp/ + xcode_version: '14.3' + resource_subfolder: storage + timeout-minutes: 30 + secrets: inherit diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml new file mode 100644 index 0000000000..a96200bc3b --- /dev/null +++ b/.github/workflows/run_integration_tests.yml @@ -0,0 +1,122 @@ +name: Run tests for the given parameters +on: + workflow_call: + inputs: + scheme: + description: 'The scheme to run the tests' + required: true + type: string + platform: + description: 'The platform in which to run these tests' + required: true + type: string + project_path: + required: false + type: string + xcode_version: + description: 'The verion of Xcode used to run these tests' + required: true + type: string + resource_subfolder: + required: true + type: string + timeout-minutes: + description: 'The timeout for each execution' + required: false + type: number + default: 30 + build_cache_key: + description: 'The key used to retrieve the build cache' + required: true + type: string + +permissions: + id-token: write + contents: read + +jobs: + integration-tests: + name: ${{ inputs.platform }} Tests | ${{ inputs.scheme }} + runs-on: macos-13 + if: inputs.platform != 'macOS' # macOS is not supported for Integration Tests + timeout-minutes: ${{ inputs.timeout-minutes }} + environment: IntegrationTest + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 #v3.5.3 + with: + persist-credentials: false + + - name: Get build parameters for ${{ inputs.platform}} + id: platform + uses: ./.github/composite_actions/get_platform_parameters + with: + platform: ${{ inputs.platform }} + xcode_version: ${{ inputs.xcode_version }} + + - name: Create the test configuration directory + run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ + + - name: Download the Integration Test configurations + uses: ./.github/composite_actions/download_test_configuration + with: + resource_subfolder: ${{ inputs.resource_subfolder }} + aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws_region: ${{ secrets.AWS_REGION }} + aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} + destination: ~/.aws-amplify/amplify-ios/testconfiguration/ + + - name: Attempt to use the dependencies cache + id: dependencies-cache + timeout-minutes: 4 + continue-on-error: true + uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + with: + path: ~/Library/Developer/Xcode/DerivedData/Amplify + key: amplify-packages-${{ hashFiles('Package.resolved') }} + restore-keys: | + amplify-packages- + + - name: Attempt to use the provided build cache + id: build-cache + timeout-minutes: 4 + continue-on-error: true + uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 + with: + path: ${{ github.workspace }}/Build + key: ${{ inputs.build_cache_key }} + + - name: Run ${{ inputs.platform }} Integration Tests + id: run-tests + continue-on-error: true + uses: ./.github/composite_actions/run_xcodebuild_test + with: + scheme: ${{ inputs.scheme }} + destination: ${{ steps.platform.outputs.destination }} + sdk: ${{ steps.platform.outputs.sdk }} + xcode_path: /Applications/Xcode_${{ inputs.xcode_version }}.app + project_path: ${{ inputs.project_path }} + generate_coverage: false + cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify + derived_data_path: ${{ github.workspace }}/Build + disable_package_resolution: ${{ steps.dependencies-cache.outputs.cache-hit }} + test_without_building: false + other_flags: -test-iterations 3 -retry-tests-on-failure + + - name: Retry ${{ inputs.platform }} Integration Tests + if: steps.run-tests.outcome=='failure' + id: retry-tests + uses: ./.github/composite_actions/run_xcodebuild_test + with: + scheme: ${{ inputs.scheme }} + destination: ${{ steps.platform.outputs.destination }} + sdk: ${{ steps.platform.outputs.sdk }} + xcode_path: /Applications/Xcode_${{ inputs.xcode_version }}.app + project_path: ${{ inputs.project_path }} + generate_coverage: false + cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify + derived_data_path: ${{ github.workspace }}/Build + disable_package_resolution: true + # Only attempt to test without building when we are not using any cache. + test_without_building: ${{ !steps.build-cache.outputs.cache-hit }} + other_flags: -test-iterations 3 -retry-tests-on-failure diff --git a/.gitignore b/.gitignore index ee2ee74060..3eb2a64f4c 100644 --- a/.gitignore +++ b/.gitignore @@ -16,12 +16,6 @@ Thumbs.db *.xcworkspace/ !.swiftpm/xcode/package.xcworkspace -!AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace -!AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace -!AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace -!AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace -!AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace -!AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace Amplify.xcodeproj/xcuserdata Amplify.xcworkspace/xcuserdata xcuserdata diff --git a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 681d2bacf7..0000000000 --- a/AmplifyPlugins/API/Tests/APIHostApp/APIHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "c7ec93dcbbcd8abc90c74203937f207a7fcaa611", - "version" : "3.1.1" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift", - "state" : { - "revision" : "6feec6c3787877807aa9a00fad09591b96752376", - "version" : "0.6.1" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "24bae88a2391fe75da8a940a544d1ef6441f5321", - "version" : "0.13.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "3b123999de19bf04905bc1dfdb76f817b0f2cc00", - "version" : "2.1.2" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "a23ded2c91df9156628a6996ab4f347526f17b6b", - "version" : "2.1.2" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/smithy-swift", - "state" : { - "revision" : "7b28da158d92cd06a3549140d43b8fbcf64a94a6", - "version" : "0.15.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "532d8b529501fb73a2455b179e0bbb6d49b652ed", - "version" : "1.5.3" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "b1e944cbd0ef33787b13f639a5418d55b3bed501", - "version" : "0.17.1" - } - } - ], - "version" : 2 -} diff --git a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 6203f7a6b6..0000000000 --- a/AmplifyPlugins/Analytics/Tests/AnalyticsHostApp/AnalyticsHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "b036e83716789c13a3480eeb292b70caa54114f2", - "version" : "3.1.0" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift", - "state" : { - "revision" : "997904873945e074aaf5c51ea968d9a84684525a", - "version" : "0.13.0" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "ace826dbfe96e7e3103fe7f45f815b8a590bcf21", - "version" : "0.26.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "3b123999de19bf04905bc1dfdb76f817b0f2cc00", - "version" : "2.1.2" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "a23ded2c91df9156628a6996ab4f347526f17b6b", - "version" : "2.1.2" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/smithy-lang/smithy-swift", - "state" : { - "revision" : "eed3f3d8e5aa704fcd60bb227b0fc89bf3328c42", - "version" : "0.30.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "32e8d724467f8fe623624570367e3d50c5638e46", - "version" : "1.5.2" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "80b4a1646399b8e4e0ce80711653476a85bd5e37", - "version" : "0.17.0" - } - } - ], - "version" : 2 -} diff --git a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 574dbfb6b0..0000000000 --- a/AmplifyPlugins/Auth/Tests/AuthHostApp/AuthHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "3de274c68a3cb60c8aec18b5bc0a8c07860219cd", - "version" : "3.0.0" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift.git", - "state" : { - "revision" : "997904873945e074aaf5c51ea968d9a84684525a", - "version" : "0.13.0" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "ace826dbfe96e7e3103fe7f45f815b8a590bcf21", - "version" : "0.26.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "35f9e770f54ce62dd8526470f14c6e137cef3eea", - "version" : "2.1.1" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "c21f7bab5ca8eee0a9998bbd17ca1d0eb45d4688", - "version" : "2.1.0" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/smithy-lang/smithy-swift", - "state" : { - "revision" : "eed3f3d8e5aa704fcd60bb227b0fc89bf3328c42", - "version" : "0.30.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "f504716c27d2e5d4144fa4794b12129301d17729", - "version" : "1.0.3" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "6fe203dc33195667ce1759bf0182975e4653ba1c", - "version" : "1.4.4" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "80b4a1646399b8e4e0ce80711653476a85bd5e37", - "version" : "0.17.0" - } - } - ], - "version" : 2 -} diff --git a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index f284cdc5c9..0000000000 --- a/AmplifyPlugins/DataStore/Tests/DataStoreHostApp/DataStoreHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "b036e83716789c13a3480eeb292b70caa54114f2", - "version" : "3.1.0" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift.git", - "state" : { - "revision" : "6feec6c3787877807aa9a00fad09591b96752376", - "version" : "0.6.1" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "24bae88a2391fe75da8a940a544d1ef6441f5321", - "version" : "0.13.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "3b123999de19bf04905bc1dfdb76f817b0f2cc00", - "version" : "2.1.2" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "a23ded2c91df9156628a6996ab4f347526f17b6b", - "version" : "2.1.2" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/smithy-swift.git", - "state" : { - "revision" : "7b28da158d92cd06a3549140d43b8fbcf64a94a6", - "version" : "0.15.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "32e8d724467f8fe623624570367e3d50c5638e46", - "version" : "1.5.2" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "b1e944cbd0ef33787b13f639a5418d55b3bed501", - "version" : "0.17.1" - } - } - ], - "version" : 2 -} diff --git a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index b5ef45f2f1..0000000000 --- a/AmplifyPlugins/Geo/Tests/GeoHostApp/GeoHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "b036e83716789c13a3480eeb292b70caa54114f2", - "version" : "3.1.0" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift.git", - "state" : { - "revision" : "6feec6c3787877807aa9a00fad09591b96752376", - "version" : "0.6.1" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "24bae88a2391fe75da8a940a544d1ef6441f5321", - "version" : "0.13.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "35f9e770f54ce62dd8526470f14c6e137cef3eea", - "version" : "2.1.1" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "c21f7bab5ca8eee0a9998bbd17ca1d0eb45d4688", - "version" : "2.1.0" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/smithy-swift.git", - "state" : { - "revision" : "7b28da158d92cd06a3549140d43b8fbcf64a94a6", - "version" : "0.15.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "32e8d724467f8fe623624570367e3d50c5638e46", - "version" : "1.5.2" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "b1e944cbd0ef33787b13f639a5418d55b3bed501", - "version" : "0.17.1" - } - } - ], - "version" : 2 -} diff --git a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a625..0000000000 --- a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 603f949096..0000000000 --- a/AmplifyPlugins/Storage/Tests/StorageHostApp/StorageHostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,113 +0,0 @@ -{ - "pins" : [ - { - "identity" : "amplify-swift-utils-notifications", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/amplify-swift-utils-notifications.git", - "state" : { - "revision" : "f970384ad1035732f99259255cd2f97564807e41", - "version" : "1.1.0" - } - }, - { - "identity" : "aws-appsync-realtime-client-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/aws-amplify/aws-appsync-realtime-client-ios.git", - "state" : { - "revision" : "b036e83716789c13a3480eeb292b70caa54114f2", - "version" : "3.1.0" - } - }, - { - "identity" : "aws-crt-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-crt-swift.git", - "state" : { - "revision" : "997904873945e074aaf5c51ea968d9a84684525a", - "version" : "0.13.0" - } - }, - { - "identity" : "aws-sdk-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/awslabs/aws-sdk-swift.git", - "state" : { - "revision" : "ace826dbfe96e7e3103fe7f45f815b8a590bcf21", - "version" : "0.26.0" - } - }, - { - "identity" : "cwlcatchexception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlCatchException.git", - "state" : { - "revision" : "3b123999de19bf04905bc1dfdb76f817b0f2cc00", - "version" : "2.1.2" - } - }, - { - "identity" : "cwlpreconditiontesting", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state" : { - "revision" : "a23ded2c91df9156628a6996ab4f347526f17b6b", - "version" : "2.1.2" - } - }, - { - "identity" : "smithy-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/smithy-lang/smithy-swift", - "state" : { - "revision" : "eed3f3d8e5aa704fcd60bb227b0fc89bf3328c42", - "version" : "0.30.0" - } - }, - { - "identity" : "sqlite.swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/stephencelis/SQLite.swift.git", - "state" : { - "revision" : "5f5ad81ac0d0a0f3e56e39e646e8423c617df523", - "version" : "0.13.2" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections", - "state" : { - "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2", - "version" : "1.0.4" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "32e8d724467f8fe623624570367e3d50c5638e46", - "version" : "1.5.2" - } - }, - { - "identity" : "xmlcoder", - "kind" : "remoteSourceControl", - "location" : "https://github.com/MaxDesiatov/XMLCoder.git", - "state" : { - "revision" : "80b4a1646399b8e4e0ce80711653476a85bd5e37", - "version" : "0.17.0" - } - } - ], - "version" : 2 -} From d4b957d5bf268096117b2aece892ffb4fd88b0f0 Mon Sep 17 00:00:00 2001 From: Abhash Kumar Singh Date: Fri, 3 Nov 2023 13:34:49 -0700 Subject: [PATCH 2/3] fix(datastore): multi auth rule for read subscription (#3316) * fix(datastore): multi auth rule for read subscription * Address review comments --- .../Model/Internal/Schema/AuthRule.swift | 4 +++ .../Auth/AWSAuthModeStrategy.swift | 33 ++++++++++++++++--- .../Auth/AuthModeStrategyTests.swift | 31 ++++++++++++++--- ...omingAsyncSubscriptionEventPublisher.swift | 6 ++-- 4 files changed, 62 insertions(+), 12 deletions(-) diff --git a/Amplify/Categories/DataStore/Model/Internal/Schema/AuthRule.swift b/Amplify/Categories/DataStore/Model/Internal/Schema/AuthRule.swift index 5c5027aff2..8a5c6b4aeb 100644 --- a/Amplify/Categories/DataStore/Model/Internal/Schema/AuthRule.swift +++ b/Amplify/Categories/DataStore/Model/Internal/Schema/AuthRule.swift @@ -68,3 +68,7 @@ public struct AuthRule { self.operations = operations } } + +extension AuthRule: Hashable { + +} diff --git a/AmplifyPlugins/Core/AWSPluginsCore/Auth/AWSAuthModeStrategy.swift b/AmplifyPlugins/Core/AWSPluginsCore/Auth/AWSAuthModeStrategy.swift index a1355ced5a..1f3edd8786 100644 --- a/AmplifyPlugins/Core/AWSPluginsCore/Auth/AWSAuthModeStrategy.swift +++ b/AmplifyPlugins/Core/AWSPluginsCore/Auth/AWSAuthModeStrategy.swift @@ -42,6 +42,8 @@ public protocol AuthModeStrategy: AnyObject { init() func authTypesFor(schema: ModelSchema, operation: ModelOperation) async -> AWSAuthorizationTypeIterator + + func authTypesFor(schema: ModelSchema, operations: [ModelOperation]) async -> AWSAuthorizationTypeIterator } /// AuthorizationType iterator with an extra `count` property used @@ -93,6 +95,11 @@ public class AWSDefaultAuthModeStrategy: AuthModeStrategy { operation: ModelOperation) -> AWSAuthorizationTypeIterator { return AWSAuthorizationTypeIterator(withValues: []) } + + public func authTypesFor(schema: ModelSchema, + operations: [ModelOperation]) -> AWSAuthorizationTypeIterator { + return AWSAuthorizationTypeIterator(withValues: []) + } } // MARK: - AWSMultiAuthModeStrategy @@ -188,19 +195,35 @@ public class AWSMultiAuthModeStrategy: AuthModeStrategy { /// - Returns: an iterator for the applicable auth rules public func authTypesFor(schema: ModelSchema, operation: ModelOperation) async -> AWSAuthorizationTypeIterator { - var applicableAuthRules = schema.authRules - .filter(modelOperation: operation) + return await authTypesFor(schema: schema, operations: [operation]) + } + + /// Returns the union of authorization types for the provided schema for the given list of operations + /// - Parameters: + /// - schema: model schema + /// - operations: model operations + /// - Returns: an iterator for the applicable auth rules + public func authTypesFor(schema: ModelSchema, + operations: [ModelOperation]) async -> AWSAuthorizationTypeIterator { + var sortedRules = operations + .flatMap { schema.authRules.filter(modelOperation: $0) } + .reduce(into: [AuthRule](), { array, rule in + if !array.contains(rule) { + array.append(rule) + } + }) .sorted(by: AWSMultiAuthModeStrategy.comparator) - + // if there isn't a user signed in, returns only public or custom rules if let authDelegate = authDelegate, await !authDelegate.isUserLoggedIn() { - applicableAuthRules = applicableAuthRules.filter { rule in + sortedRules = sortedRules.filter { rule in return rule.allow == .public || rule.allow == .custom } } - let applicableAuthTypes = applicableAuthRules.map { + let applicableAuthTypes = sortedRules.map { AWSMultiAuthModeStrategy.authTypeFor(authRule: $0) } return AWSAuthorizationTypeIterator(withValues: applicableAuthTypes) } + } diff --git a/AmplifyPlugins/Core/AWSPluginsCoreTests/Auth/AuthModeStrategyTests.swift b/AmplifyPlugins/Core/AWSPluginsCoreTests/Auth/AuthModeStrategyTests.swift index 12ecb27a6d..304aac6add 100644 --- a/AmplifyPlugins/Core/AWSPluginsCoreTests/Auth/AuthModeStrategyTests.swift +++ b/AmplifyPlugins/Core/AWSPluginsCoreTests/Auth/AuthModeStrategyTests.swift @@ -88,9 +88,9 @@ class AuthModeStrategyTests: XCTestCase { let authMode = AWSMultiAuthModeStrategy() let delegate = UnauthenticatedUserDelegate() authMode.authDelegate = delegate - + var authTypesIterator = await authMode.authTypesFor(schema: ModelWithOwnerAndPublicAuth.schema, - operation: .create) + operation: .create) XCTAssertEqual(authTypesIterator.count, 1) XCTAssertEqual(authTypesIterator.next(), .apiKey) } @@ -101,7 +101,7 @@ class AuthModeStrategyTests: XCTestCase { func testMultiAuthPriorityWithCustomStrategy() async { let authMode = AWSMultiAuthModeStrategy() var authTypesIterator = await authMode.authTypesFor(schema: ModelWithCustomStrategy.schema, - operation: .create) + operation: .create) XCTAssertEqual(authTypesIterator.count, 3) XCTAssertEqual(authTypesIterator.next(), .function) XCTAssertEqual(authTypesIterator.next(), .amazonCognitoUserPools) @@ -117,12 +117,35 @@ class AuthModeStrategyTests: XCTestCase { authMode.authDelegate = delegate var authTypesIterator = await authMode.authTypesFor(schema: ModelWithCustomStrategy.schema, - operation: .create) + operation: .create) XCTAssertEqual(authTypesIterator.count, 2) XCTAssertEqual(authTypesIterator.next(), .function) XCTAssertEqual(authTypesIterator.next(), .awsIAM) } + // Given: multi-auth strategy and a model schema without auth provider + // When: auth types are requested with multiple operation + // Then: default values based on the auth strategy should be returned + func testMultiAuthShouldReturnDefaultAuthTypesForMultipleOperation() async { + let authMode = AWSMultiAuthModeStrategy() + var authTypesIterator = await authMode.authTypesFor(schema: ModelNoProvider.schema, operations: [.read, .create]) + XCTAssertEqual(authTypesIterator.count, 2) + XCTAssertEqual(authTypesIterator.next(), .amazonCognitoUserPools) + XCTAssertEqual(authTypesIterator.next(), .apiKey) + } + + // Given: multi-auth strategy and a model schema with auth provider + // When: auth types are requested with multiple operation + // Then: auth rule for public access should be returned + func testMultiAuthReturnDefaultAuthTypesForMultipleOperationWithProvider() async { + let authMode = AWSMultiAuthModeStrategy() + let delegate = UnauthenticatedUserDelegate() + authMode.authDelegate = delegate + var authTypesIterator = await authMode.authTypesFor(schema: ModelNoProvider.schema, operations: [.read, .create]) + XCTAssertEqual(authTypesIterator.count, 1) + XCTAssertEqual(authTypesIterator.next(), .apiKey) + } + } // MARK: - Test models diff --git a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/SubscriptionSync/IncomingAsyncSubscriptionEventPublisher.swift b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/SubscriptionSync/IncomingAsyncSubscriptionEventPublisher.swift index 301e5534b8..c45ba79650 100644 --- a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/SubscriptionSync/IncomingAsyncSubscriptionEventPublisher.swift +++ b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/SubscriptionSync/IncomingAsyncSubscriptionEventPublisher.swift @@ -73,7 +73,7 @@ final class IncomingAsyncSubscriptionEventPublisher: AmplifyCancellable { // onCreate operation let onCreateValueListener = onCreateValueListenerHandler(event:) let onCreateAuthTypeProvider = await authModeStrategy.authTypesFor(schema: modelSchema, - operation: .create) + operations: [.create, .read]) self.onCreateValueListener = onCreateValueListener self.onCreateOperation = RetryableGraphQLSubscriptionOperation( requestFactory: IncomingAsyncSubscriptionEventPublisher.apiRequestFactoryFor( @@ -94,7 +94,7 @@ final class IncomingAsyncSubscriptionEventPublisher: AmplifyCancellable { // onUpdate operation let onUpdateValueListener = onUpdateValueListenerHandler(event:) let onUpdateAuthTypeProvider = await authModeStrategy.authTypesFor(schema: modelSchema, - operation: .update) + operations: [.update, .read]) self.onUpdateValueListener = onUpdateValueListener self.onUpdateOperation = RetryableGraphQLSubscriptionOperation( requestFactory: IncomingAsyncSubscriptionEventPublisher.apiRequestFactoryFor( @@ -115,7 +115,7 @@ final class IncomingAsyncSubscriptionEventPublisher: AmplifyCancellable { // onDelete operation let onDeleteValueListener = onDeleteValueListenerHandler(event:) let onDeleteAuthTypeProvider = await authModeStrategy.authTypesFor(schema: modelSchema, - operation: .delete) + operations: [.delete, .read]) self.onDeleteValueListener = onDeleteValueListener self.onDeleteOperation = RetryableGraphQLSubscriptionOperation( requestFactory: IncomingAsyncSubscriptionEventPublisher.apiRequestFactoryFor( From 46b65635ccec472784cc7b94cea1e428c16ac498 Mon Sep 17 00:00:00 2001 From: Harsh <6162866+harsh62@users.noreply.github.com> Date: Tue, 7 Nov 2023 12:02:18 -0500 Subject: [PATCH 3/3] chore: Adding xcprivacy file to all targets (#3343) * adding privacy info * update privacy info for individual targets * updating README.md to describe the usage of required reason API's * updating read me * Update README.md Co-authored-by: Sebastian Villena <97059974+ruisebas@users.noreply.github.com> * Update README.md Co-authored-by: Sebastian Villena <97059974+ruisebas@users.noreply.github.com> * Update README.md --------- Co-authored-by: Sebastian Villena <97059974+ruisebas@users.noreply.github.com> --- Amplify/Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 17 +++++++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 17 +++++++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 17 +++++++ .../Resources/PrivacyInfo.xcprivacy | 17 +++++++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ .../Resources/PrivacyInfo.xcprivacy | 8 +++ Package.swift | 51 ++++++++++++++++--- README.md | 12 +++++ 15 files changed, 197 insertions(+), 6 deletions(-) create mode 100644 Amplify/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy create mode 100644 AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy diff --git a/Amplify/Resources/PrivacyInfo.xcprivacy b/Amplify/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/Amplify/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..0c69ba3b3a --- /dev/null +++ b/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..0c69ba3b3a --- /dev/null +++ b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..0c69ba3b3a --- /dev/null +++ b/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..0c69ba3b3a --- /dev/null +++ b/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..74f8af8564 --- /dev/null +++ b/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyAccessedAPITypes + + + diff --git a/Package.swift b/Package.swift index e03c21866e..2fa9b9a4e8 100644 --- a/Package.swift +++ b/Package.swift @@ -23,6 +23,9 @@ let amplifyTargets: [Target] = [ exclude: [ "Info.plist", "Categories/DataStore/Model/Temporal/README.md" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .target( @@ -34,6 +37,9 @@ let amplifyTargets: [Target] = [ path: "AmplifyPlugins/Core/AWSPluginsCore", exclude: [ "Info.plist" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .target( @@ -116,6 +122,9 @@ let apiTargets: [Target] = [ exclude: [ "Info.plist", "AWSAPIPlugin.md" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .testTarget( @@ -157,7 +166,10 @@ let authTargets: [Target] = [ .product(name: "AWSCognitoIdentityProvider", package: "aws-sdk-swift"), .product(name: "AWSCognitoIdentity", package: "aws-sdk-swift") ], - path: "AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin" + path: "AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin", + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .target( name: "libtommathAmplify", @@ -198,6 +210,9 @@ let dataStoreTargets: [Target] = [ exclude: [ "Info.plist", "Sync/MutationSync/OutgoingMutationQueue/SyncMutationToCloudOperation.mmd" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .testTarget( @@ -224,6 +239,9 @@ let storageTargets: [Target] = [ path: "AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin", exclude: [ "Resources/Info.plist" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .testTarget( @@ -251,6 +269,9 @@ let geoTargets: [Target] = [ path: "AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin", exclude: [ "Resources/Info.plist" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .testTarget( @@ -279,7 +300,10 @@ let internalPinpointTargets: [Target] = [ .product(name: "AWSPinpoint", package: "aws-sdk-swift"), .product(name: "AmplifyUtilsNotifications", package: "amplify-swift-utils-notifications") ], - path: "AmplifyPlugins/Internal/Sources/InternalAWSPinpoint" + path: "AmplifyPlugins/Internal/Sources/InternalAWSPinpoint", + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .testTarget( name: "InternalAWSPinpointUnitTests", @@ -298,7 +322,10 @@ let analyticsTargets: [Target] = [ dependencies: [ .target(name: "InternalAWSPinpoint") ], - path: "AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin" + path: "AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin", + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .testTarget( name: "AWSPinpointAnalyticsPluginUnitTests", @@ -316,7 +343,10 @@ let pushNotificationsTargets: [Target] = [ dependencies: [ .target(name: "InternalAWSPinpoint") ], - path: "AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin" + path: "AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin", + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .testTarget( name: "AWSPinpointPushNotificationsPluginUnitTests", @@ -343,7 +373,10 @@ let predictionsTargets: [Target] = [ .product(name: "AWSTranslate", package: "aws-sdk-swift") ], path: "AmplifyPlugins/Predictions/AWSPredictionsPlugin", - exclude: [] + exclude: [], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .testTarget( name: "AWSPredictionsPluginUnitTests", @@ -359,6 +392,9 @@ let predictionsTargets: [Target] = [ path: "AmplifyPlugins/Predictions/CoreMLPredictionsPlugin", exclude: [ "Resources/Info.plist" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") ] ), .testTarget( @@ -380,7 +416,10 @@ let loggingTargets: [Target] = [ .target(name: "AWSPluginsCore"), .product(name: "AWSCloudWatchLogs", package: "aws-sdk-swift"), ], - path: "AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin" + path: "AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin", + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] ), .testTarget( name: "AWSCloudWatchLoggingPluginTests", diff --git a/README.md b/README.md index 1111369176..68e101a6ce 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,18 @@ do { } ``` +## Describing use of required reason API + +As required by the Apple App Store, we provide the new `PrivacyInfo.xcprivacy` file for describing use of required reason API, see [Describing use of required reason API +](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). You can also export the privacy report after archiving your App in Xcode, see [Create your app’s privacy report](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests#4239187). + +The following Amplify targets have been identified to be using the [User defaults APIs](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278401): + +* `AWSCognitoAuthPlugin` +* `AWSDataStorePlugin` +* `AWSCloudWatchLoggingPlugin` +* `InternalAWSPinpoint` + ## Reporting Bugs/Feature Requests [![Open Bugs](https://img.shields.io/github/issues/aws-amplify/amplify-swift/bug?color=d73a4a&label=bugs)](https://github.com/aws-amplify/amplify-swift/issues?q=is%3Aissue+is%3Aopen+label%3Abug)