Skip to content

feat: tie up some loose ends #2735

feat: tie up some loose ends

feat: tie up some loose ends #2735

name: CI
on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:
env:
AWS_SWIFT_SDK_USE_LOCAL_DEPS: 1
jobs:
downstream:
runs-on: ${{ matrix.runner }}
env:
DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer
strategy:
fail-fast: false
matrix:
# This matrix runs tests on iOS sim & Mac, on oldest & newest supported Xcodes
runner:
- macos-12
- macos-13
xcode:
- Xcode_14.0.1
- Xcode_15.1
destination:
- 'platform=iOS Simulator,OS=16.0,name=iPhone 14'
- 'platform=iOS Simulator,OS=17.2,name=iPhone 15'
- 'platform=tvOS Simulator,OS=16.0,name=Apple TV 4K (at 1080p) (2nd generation)'
- 'platform=tvOS Simulator,OS=17.2,name=Apple TV 4K (3rd generation) (at 1080p)'
- 'platform=OS X'
exclude:
# Don't run old macOS with new Xcode
- runner: macos-12
xcode: Xcode_15.1
# Don't run new macOS with old Xcode
- runner: macos-13
xcode: Xcode_14.0.1
# Don't run old iOS/tvOS simulator with new Xcode
- destination: 'platform=iOS Simulator,OS=16.0,name=iPhone 14'
xcode: Xcode_15.1
- destination: 'platform=tvOS Simulator,OS=16.0,name=Apple TV 4K (at 1080p) (2nd generation)'
xcode: Xcode_15.1
# Don't run new iOS/tvOS simulator with old Xcode
- destination: 'platform=iOS Simulator,OS=17.2,name=iPhone 15'
xcode: Xcode_14.0.1
- destination: 'platform=tvOS Simulator,OS=17.2,name=Apple TV 4K (3rd generation) (at 1080p)'
xcode: Xcode_14.0.1
steps:
- name: Checkout smithy-swift
uses: actions/checkout@v3
- name: Select aws-sdk-swift branch
run: |
ORIGINAL_REPO_HEAD_REF="$GITHUB_HEAD_REF" \
DEPENDENCY_REPO_URL="https://github.com/awslabs/aws-sdk-swift.git" \
./scripts/ci_steps/select_dependency_branch.sh
- name: Checkout aws-sdk-swift
uses: actions/checkout@v3
with:
repository: awslabs/aws-sdk-swift
ref: ${{ env.DEPENDENCY_REPO_SHA }}
path: aws-sdk-swift
- name: Move aws-sdk-swift into place
run: mv aws-sdk-swift ..
- name: Cache Gradle
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: 1-${{ runner.os }}-gradle-${{ hashFiles('settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
1-${{ runner.os }}-gradle-${{ hashFiles('settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties') }}
1-${{ runner.os }}-gradle-
- name: Cache Swift
uses: actions/cache@v3
with:
path: |
~/Library/Caches/org.swift.swiftpm
~/.cache/org.swift.swiftpm
key: 1-${{ runner.os }}-${{ matrix.xcode }}-spm-${{ hashFiles('Package.swift') }}
restore-keys: |
1-${{ runner.os }}-${{ matrix.xcode }}-spm-${{ hashFiles('Package.swift') }}
1-${{ runner.os }}-${{ matrix.xcode }}-spm-
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: corretto
java-version: 17
- name: Tools Versions
run: |
cd ../aws-sdk-swift
./scripts/ci_steps/log_tool_versions.sh
- name: Build & Run smithy-swift Kotlin Unit Tests
run: ./gradlew build
- name: Build & Run smithy-swift Swift Unit Tests
timeout-minutes: 15
run: |
set -o pipefail && \
NSUnbufferedIO=YES xcodebuild \
-scheme smithy-swift-Package \
-destination '${{ matrix.destination }}' \
test 2>&1 \
| xcpretty
- name: Prepare aws-sdk-swift Protocol & Unit Tests
run: |
cd ../aws-sdk-swift
./scripts/ci_steps/prepare_protocol_and_unit_tests.sh
- name: Build and Run aws-sdk-swift Protocol & Unit Tests
run: |
cd ../aws-sdk-swift
set -o pipefail && \
NSUnbufferedIO=YES xcodebuild \
-scheme aws-sdk-swift \
-destination '${{ matrix.destination }}' \
test 2>&1 \
| xcpretty
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
swift:
- 5.7-amazonlinux2
- 5.7-focal
- 5.9-amazonlinux2
- 5.9-jammy
container:
image: swift:${{ matrix.swift }}
steps:
- name: Checkout Sources
uses: actions/checkout@v3
- name: Install openssl
run: |
if [ -x "$(command -v apt)" ]; then
apt-get update && apt-get install -y libssl-dev
else
yum install -y openssl-devel which
fi
- name: Cache Gradle
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: 1-${{ runner.os }}-gradle-${{ hashFiles('settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
1-${{ runner.os }}-gradle-${{ hashFiles('settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties') }}
1-${{ runner.os }}-gradle-
- name: Cache Swift
uses: actions/cache@v3
with:
path: |
~/Library/Caches/org.swift.swiftpm
~/.cache/org.swift.swiftpm
key: 1-${{ runner.os }}-${{ matrix.xcode }}-spm-${{ hashFiles('Package.swift') }}
restore-keys: |
1-${{ runner.os }}-${{ matrix.xcode }}-spm-${{ hashFiles('Package.swift') }}
1-${{ runner.os }}-${{ matrix.xcode }}-spm-
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: corretto
java-version: 17
- name: Build & Run Kotlin Unit Tests
run: ./gradlew build
- name: Build & Run Swift Unit Tests
run: swift test