diff --git a/.github/composite_actions/get_platform_parameters/action.yml b/.github/composite_actions/get_platform_parameters/action.yml index d007eca053..0fc0945e11 100644 --- a/.github/composite_actions/get_platform_parameters/action.yml +++ b/.github/composite_actions/get_platform_parameters/action.yml @@ -28,11 +28,17 @@ runs: XCODE_VERSION=${{ inputs.xcode_version }} case $XCODE_VERSION in - 14.3|15.0) ;; + 14.0.1|14.3|15.0) ;; *) echo "Unsupported Xcode version: $XCODE_VERSION"; exit 1 ;; esac DESTINATION_MAPPING='{ + "14.0.1": { + "iOS": "platform=iOS Simulator,name=iPhone 14,OS=16.0", + "tvOS": "platform=tvOS Simulator,name=Apple TV 4K (2nd generation),OS=16.0", + "watchOS": "platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=9.0", + "macOS": "platform=macOS,arch=x86_64" + }, "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", diff --git a/.github/workflows/build_amplify_swift.yml b/.github/workflows/build_amplify_swift.yml index bfefc79014..d2975c4a82 100644 --- a/.github/workflows/build_amplify_swift.yml +++ b/.github/workflows/build_amplify_swift.yml @@ -6,6 +6,18 @@ on: type: string required: true + xcode-version: + type: string + default: '14.3' + + os-runner: + type: string + default: 'macos-13' + + cacheable: + type: boolean + default: true + permissions: contents: read actions: write @@ -13,7 +25,7 @@ permissions: jobs: build-amplify-swift: name: Build Amplify-Package | ${{ inputs.platform }} - runs-on: macos-13 + runs-on: ${{ inputs.os-runner }} steps: - name: Checkout repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1 @@ -25,10 +37,11 @@ jobs: uses: ./.github/composite_actions/get_platform_parameters with: platform: ${{ inputs.platform }} - xcode_version: '14.3' - + xcode_version: ${{ inputs.xcode-version }} + - name: Attempt to use the dependencies cache id: dependencies-cache + if: inputs.cacheable timeout-minutes: 4 continue-on-error: true uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 @@ -40,6 +53,7 @@ jobs: - name: Attempt to restore the build cache from main id: build-cache + if: inputs.cacheable timeout-minutes: 4 continue-on-error: true uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 @@ -55,20 +69,20 @@ jobs: scheme: Amplify-Package destination: ${{ steps.platform.outputs.destination }} sdk: ${{ steps.platform.outputs.sdk }} - xcode_path: /Applications/Xcode_14.3.app + xcode_path: /Applications/Xcode_${{ inputs.xcode-version }}.app 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: Save the dependencies cache in main - if: steps.dependencies-cache.outputs.cache-hit != 'true' && github.ref_name == 'main' + if: inputs.cacheable && steps.dependencies-cache.outputs.cache-hit != 'true' && github.ref_name == 'main' uses: actions/cache/save@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 with: path: ~/Library/Developer/Xcode/DerivedData/Amplify key: ${{ steps.dependencies-cache.outputs.cache-primary-key }} - + - name: Delete the old build cache - if: steps.build-cache.outputs.cache-hit && github.ref_name == 'main' + if: inputs.cacheable && steps.build-cache.outputs.cache-hit && github.ref_name == 'main' env: GH_TOKEN: ${{ github.token }} continue-on-error: true @@ -76,7 +90,7 @@ jobs: gh cache delete ${{ steps.build-cache.outputs.cache-primary-key }} - name: Save the build cache - if: github.ref_name == 'main' + if: inputs.cacheable && github.ref_name == 'main' uses: actions/cache/save@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 with: path: ${{ github.workspace }}/Build diff --git a/.github/workflows/build_minimum_supported_swift_platforms.yml b/.github/workflows/build_minimum_supported_swift_platforms.yml new file mode 100644 index 0000000000..a86f8b99b0 --- /dev/null +++ b/.github/workflows/build_minimum_supported_swift_platforms.yml @@ -0,0 +1,50 @@ +name: Build with Minimum Supported Xcode Versions +on: + workflow_dispatch: + push: + branches: + - main + +permissions: + contents: read + actions: write + +jobs: + build-amplify-with-minimum-supported-xcode: + name: Build Amplify Swift for ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + include: + - os-runner: macos-12 + xcode-version: 14.0.1 + platform: iOS + + - os-runner: macos-12 + xcode-version: 14.0.1 + platform: macOS + + - os-runner: macos-12 + xcode-version: 14.0.1 + platform: tvOS + + - os-runner: macos-12 + xcode-version: 14.0.1 + platform: watchOS + + uses: ./.github/workflows/build_amplify_swift.yml + with: + os-runner: ${{ matrix.os-runner }} + xcode-version: ${{ matrix.xcode-version }} + platform: ${{ matrix.platform }} + cacheable: false + + confirm-pass: + runs-on: ubuntu-latest + name: Confirm Passing Build Steps + if: ${{ !cancelled() }} + needs: [ build-amplify-with-minimum-supported-xcode ] + env: + EXIT_CODE: ${{ contains(needs.*.result, 'failure') && 1 || 0 }} + steps: + - run: exit $EXIT_CODE