Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: kickoff release #3717

Merged
merged 9 commits into from
May 22, 2024
1 change: 1 addition & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ codecov:

coverage:
status:
patch: off
project:
default:
threshold: 1%
66 changes: 41 additions & 25 deletions .github/composite_actions/get_platform_parameters/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ outputs:
destination:
description: "The destination associated with the given platform and Xcode version"
value: ${{ steps.get-destination.outputs.destination }}
device:
description: "The device name used in the destination"
value: ${{ steps.get-destination.outputs.device }}
sdk:
description: "The SDK associated with the given platform"
value: ${{ steps.get-sdk.outputs.sdk }}
Expand All @@ -38,23 +41,16 @@ runs:

- id: get-xcode-version
run: |
LATEST_XCODE_VERSION=14.3.1
MINIMUM_XCODE_VERSION_IOS_MAC=14.1.0
MINIMUM_XCODE_VERSION_WATCH_TV=14.3.1
LATEST_XCODE_VERSION=15.3.0
MINIMUM_XCODE_VERSION=15.0.1

INPUT_XCODE_VERSION=${{ inputs.xcode_version }}

case $INPUT_XCODE_VERSION in
latest)
XCODE_VERSION=$LATEST_XCODE_VERSION ;;
minimum)
INPUT_PLATFORM=${{ inputs.platform }}
case $INPUT_PLATFORM in
iOS|macOS)
XCODE_VERSION=$MINIMUM_XCODE_VERSION_IOS_MAC ;;
tvOS|watchOS)
XCODE_VERSION=$MINIMUM_XCODE_VERSION_WATCH_TV ;;
esac ;;
XCODE_VERSION=$MINIMUM_XCODE_VERSION ;;
*)
XCODE_VERSION=$INPUT_XCODE_VERSION ;;
esac
Expand All @@ -68,23 +64,42 @@ runs:
INPUT_DESTINATION='${{ inputs.destination }}'
INPUT_XCODE_VERSION=${{ inputs.xcode_version }}

DESTINATION_MAPPING='{
"minimum": {
"iOS": "platform=iOS Simulator,name=iPhone 14,OS=16.1",
"tvOS": "platform=tvOS Simulator,name=Apple TV 4K (2nd generation),OS=16.1",
"watchOS": "platform=watchOS Simulator,name=Apple Watch Series 8 (45mm),OS=9.1",
"macOS": "platform=macOS,arch=x86_64"
},
"latest": {
"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"
}
}'
case $INPUT_PLATFORM/$INPUT_XCODE_VERSION in
iOS/latest)
DEVICE="iPhone 15"
OS_VERSION="17.4"
;;
iOS/*)
DEVICE="iPhone 14"
OS_VERSION="17.0.1"
;;
tvOS/latest)
DEVICE="Apple TV 4K (3rd generation)"
OS_VERSION="17.4"
;;
tvOS/*)
DEVICE="Apple TV 4K (3rd generation)"
OS_VERSION="17.0"
;;
watchOS/latest)
DEVICE="Apple Watch Series 9 (45mm)"
OS_VERSION="10.4"
;;
watchOS/*)
DEVICE="Apple Watch Series 8 (45mm)"
OS_VERSION="10.0"
;;
esac

DESTINATION_MAPPING="{
\"iOS\": \"platform=iOS Simulator,name=$DEVICE,OS=$OS_VERSION\",
\"tvOS\": \"platform=tvOS Simulator,name=$DEVICE,OS=$OS_VERSION\",
\"watchOS\": \"platform=watchOS Simulator,name=$DEVICE,OS=$OS_VERSION\",
\"macOS\": \"platform=macOS,arch=arm64\"
}"

if [ -z "$INPUT_DESTINATION" ]; then
DESTINATION=$(echo $DESTINATION_MAPPING | jq -r ".\"$INPUT_XCODE_VERSION\".$INPUT_PLATFORM")
DESTINATION=$(echo $DESTINATION_MAPPING | jq -r ".$INPUT_PLATFORM")
else
DESTINATION=$INPUT_DESTINATION
fi
Expand All @@ -94,6 +109,7 @@ runs:
exit 1
fi
echo "destination=$DESTINATION" >> $GITHUB_OUTPUT
echo "device=$DEVICE" >> $GITHUB_OUTPUT
shell: bash

- id: get-sdk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
uses: ./.github/workflows/build_scheme.yml
with:
scheme: Amplify-Build
os-runner: ${{ (matrix.platform == 'tvOS' || matrix.platform == 'watchOS') && 'macos-13' || 'macos-12' }}
os-runner: 'macos-latest'
xcode-version: 'minimum'
platform: ${{ matrix.platform }}
save_build_cache: false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_scheme.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:

os-runner:
type: string
default: 'macos-13'
default: 'macos-latest'

save_build_cache:
type: boolean
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ jobs:
strategy:
matrix:
include:
- os: macos-13
xcode-version: 14.3.1
device: iPhone 14 Pro
version: 16.4
- os: macos-12
xcode-version: 14.1
device: iPhone 13 Pro
version: 16.1
- os: macos-latest
xcode-version: 15.3.0
device: iPhone 15
version: 17.4
- os: macos-latest
xcode-version: 15.0.1
device: iPhone 14
version: 17.0.1
name: Canary Test - Xcode ${{ matrix.xcode-version }}
runs-on: ${{ matrix.os }}
steps:
Expand All @@ -39,7 +39,7 @@ jobs:
run: amplify init --quickstart --frontend ios

- name: Setup Ruby
uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 # v1.152.0
uses: ruby/setup-ruby@22fdc77bf4148f810455b226c90fb81b5cbc00a7 # v1.171.0
with:
ruby-version: '3.2.1'
bundler-cache: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/integ_test_push_notifications.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ permissions:
jobs:
push-notification-integration-tests:
name: ${{ matrix.platform }} Tests | PushNotificationHostApp
runs-on: macos-13
runs-on: macos-latest
timeout-minutes: 30
environment: IntegrationTest
strategy:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release_kickoff.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Creates a PR to push main to release branch to kick-off the release workflow
name: Release Amplify iOS
name: Release Amplify iOS

on:
workflow_dispatch:
Expand All @@ -10,7 +10,7 @@ permissions:
jobs:
release:
name: Release
runs-on: macos-12
runs-on: macos-latest

steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/run_integration_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
inputs:
os-runner:
type: string
default: 'macos-13'
default: 'macos-latest'
scheme:
description: 'The scheme to run the tests'
required: true
Expand All @@ -17,7 +17,7 @@ on:
required: false
type: string
xcode_version:
description: 'The verion of Xcode used to run these tests'
description: 'The version of Xcode used to run these tests'
default: 'latest'
type: string
destination:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/run_unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,17 @@ on:
required: false
type: string
default: '-test-iterations 3 -retry-tests-on-failure'
os-runner:
description: 'runs-on input'
type: string

permissions:
contents: read

jobs:
unit-tests:
name: ${{ inputs.platform }} Tests | ${{ inputs.scheme }}
runs-on: macos-13
runs-on: ${{ inputs.os-runner }}
timeout-minutes: ${{ inputs.timeout-minutes }}
steps:
- name: Checkout repository
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/run_unit_tests_platforms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ on:
required: false
type: string
default: '-test-iterations 3 -retry-tests-on-failure'
os-runner:
description: 'runs-on input'
type: string
default: 'macos-latest'

permissions:
contents: read
Expand All @@ -43,4 +47,5 @@ jobs:
platform: ${{ matrix.platform }}
generate_coverage_report: ${{ github.event_name != 'workflow_dispatch' && matrix.platform == 'iOS' && inputs.generate_coverage_report }}
timeout-minutes: ${{ inputs.timeout-minutes }}
test_iterations_flags: ${{ inputs.test_iterations_flags }}
test_iterations_flags: ${{ inputs.test_iterations_flags }}
os-runner: ${{ inputs.os-runner }}
12 changes: 6 additions & 6 deletions .github/workflows/stress_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ concurrency:

jobs:
prepare-for-test:
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
outputs:
destination: ${{ steps.platform.outputs.destination }}
Expand All @@ -40,7 +40,7 @@ jobs:

auth-stress-test:
needs: prepare-for-test
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
env:
DESTINATION: ${{ needs.prepare-for-test.outputs.destination }}
Expand Down Expand Up @@ -71,7 +71,7 @@ jobs:

geo-stress-test:
needs: prepare-for-test
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
env:
DESTINATION: ${{ needs.prepare-for-test.outputs.destination }}
Expand Down Expand Up @@ -102,7 +102,7 @@ jobs:

storage-stress-test:
needs: prepare-for-test
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
env:
DESTINATION: ${{ needs.prepare-for-test.outputs.destination }}
Expand Down Expand Up @@ -133,7 +133,7 @@ jobs:

datastore-stress-test:
needs: prepare-for-test
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
env:
DESTINATION: ${{ needs.prepare-for-test.outputs.destination }}
Expand Down Expand Up @@ -164,7 +164,7 @@ jobs:

graphql-api-stress-test:
needs: prepare-for-test
runs-on: macos-13
runs-on: macos-latest
environment: IntegrationTest
env:
DESTINATION: ${{ needs.prepare-for-test.outputs.destination }}
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/unit_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@ jobs:
AWSPredictionsPlugin,
AWSPinpointAnalyticsPlugin,
AWSPinpointPushNotificationsPlugin,
AWSS3StoragePlugin,
CoreMLPredictionsPlugin
AWSS3StoragePlugin
]
uses: ./.github/workflows/run_unit_tests_platforms.yml
with:
Expand All @@ -96,8 +95,7 @@ jobs:
{ scheme: AWSPredictionsPlugin, flags: 'Predictions_plugin_unit_test,unit_tests' },
{ scheme: AWSPinpointAnalyticsPlugin, flags: 'Analytics_plugin_unit_test,unit_tests' },
{ scheme: AWSPinpointPushNotificationsPlugin, flags: 'PushNotifications_plugin_unit_test,unit_tests' },
{ scheme: AWSS3StoragePlugin, flags: 'Storage_plugin_unit_test,unit_tests' },
{ scheme: CoreMLPredictionsPlugin, flags: 'CoreMLPredictions_plugin_unit_test,unit_tests' }
{ scheme: AWSS3StoragePlugin, flags: 'Storage_plugin_unit_test,unit_tests' }
]
uses: ./.github/workflows/upload_coverage_report.yml
with:
Expand Down
8 changes: 3 additions & 5 deletions Amplify/Core/Support/AmplifyAsyncSequence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,16 @@ public typealias WeakAmplifyAsyncSequenceRef<Element> = WeakRef<AmplifyAsyncSequ

public class AmplifyAsyncSequence<Element: Sendable>: AsyncSequence, Cancellable {
public typealias Iterator = AsyncStream<Element>.Iterator
private var asyncStream: AsyncStream<Element>! = nil
private var continuation: AsyncStream<Element>.Continuation! = nil
private let asyncStream: AsyncStream<Element>
private let continuation: AsyncStream<Element>.Continuation
private var parent: Cancellable?

public private(set) var isCancelled: Bool = false

public init(parent: Cancellable? = nil,
bufferingPolicy: AsyncStream<Element>.Continuation.BufferingPolicy = .unbounded) {
self.parent = parent
asyncStream = AsyncStream<Element>(Element.self, bufferingPolicy: bufferingPolicy) { continuation in
self.continuation = continuation
}
(asyncStream, continuation) = AsyncStream.makeStream(of: Element.self, bufferingPolicy: bufferingPolicy)
}

public func makeAsyncIterator() -> Iterator {
Expand Down
8 changes: 3 additions & 5 deletions Amplify/Core/Support/AmplifyAsyncThrowingSequence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,16 @@ public typealias WeakAmplifyAsyncThrowingSequenceRef<Element> = WeakRef<AmplifyA

public class AmplifyAsyncThrowingSequence<Element: Sendable>: AsyncSequence, Cancellable {
public typealias Iterator = AsyncThrowingStream<Element, Error>.Iterator
private var asyncStream: AsyncThrowingStream<Element, Error>! = nil
private var continuation: AsyncThrowingStream<Element, Error>.Continuation! = nil
private let asyncStream: AsyncThrowingStream<Element, Error>
private let continuation: AsyncThrowingStream<Element, Error>.Continuation
private var parent: Cancellable?

public private(set) var isCancelled: Bool = false

public init(parent: Cancellable? = nil,
bufferingPolicy: AsyncThrowingStream<Element, Error>.Continuation.BufferingPolicy = .unbounded) {
self.parent = parent
asyncStream = AsyncThrowingStream(Element.self, bufferingPolicy: bufferingPolicy, { continuation in
self.continuation = continuation
})
(asyncStream, continuation) = AsyncThrowingStream.makeStream(of: Element.self, bufferingPolicy: bufferingPolicy)
}

public func makeAsyncIterator() -> Iterator {
Expand Down
7 changes: 3 additions & 4 deletions Amplify/Core/Support/TaskQueue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@ import Foundation
/// A helper for executing asynchronous work serially.
public class TaskQueue<Success> {
typealias Block = @Sendable () async -> Void
private var streamContinuation: AsyncStream<Block>.Continuation!
private let streamContinuation: AsyncStream<Block>.Continuation

public init() {
let stream = AsyncStream<Block>.init { continuation in
streamContinuation = continuation
}
let (stream, continuation) = AsyncStream.makeStream(of: Block.self)
self.streamContinuation = continuation

Task {
for await block in stream {
Expand Down
1 change: 1 addition & 0 deletions Amplify/DevMenu/AmplifyDevMenu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import UIKit

/// Presents a developer menu using the provided `DevMenuPresentationContextProvider`
/// upon notification from a `TriggerRecognizer`. Default recognizer is a `LongPressGestureRecognizer`
@MainActor
public final class AmplifyDevMenu: DevMenuBehavior, TriggerDelegate {

weak var devMenuPresentationContextProvider: DevMenuPresentationContextProvider?
Expand Down
Loading
Loading