chore: Building Amplify-Package once and doing test-without-building … #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test the Amplify Package | |
on: | |
- push | |
permissions: | |
contents: read | |
actions: write | |
jobs: | |
build-amplify-swift: | |
name: Build for ${{ matrix.platform }} | |
runs-on: macos-13 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [iOS, macOS, tvOS, watchOS] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 #v3.5.3 | |
with: | |
persist-credentials: false | |
- 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: 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 restore the build cache from main | |
id: build-cache | |
timeout-minutes: 4 | |
continue-on-error: true | |
uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ${{ github.workspace }}/Build | |
key: Amplify-${{ matrix.platform }}-cache-main | |
- name: Build Amplify-Package | |
id: build-package | |
continue-on-error: true | |
uses: ./.github/composite_actions/run_xcodebuild | |
with: | |
scheme: Amplify-Package | |
destination: ${{ steps.platform.outputs.destination }} | |
sdk: ${{ steps.platform.outputs.sdk }} | |
xcode_path: /Applications/Xcode_14.3.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 build cache | |
uses: actions/cache/save@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ${{ github.workspace }}/Build | |
key: Amplify-${{ matrix.platform }}-cache-${{ github.ref_name }} | |
run-unit-tests: | |
name: ${{ matrix.scheme }} Unit Tests | |
needs: [build-amplify-swift] | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [iOS, macOS, tvOS, watchOS] | |
scheme: [ | |
{ name: Amplify, reportCoverage: true }, | |
{ name: AWSPluginsCore, reportCoverage: true }, | |
{ name: AWSAPIPlugin, reportCoverage: true }, | |
{ name: AWSCloudWatchLoggingPlugin, reportCoverage: true }, | |
{ name: AWSCognitoAuthPlugin, reportCoverage: true }, | |
{ name: AWSDataStorePlugin, reportCoverage: true }, | |
{ name: AWSLocationGeoPlugin, reportCoverage: true }, | |
{ name: AWSPredictionsPlugin, reportCoverage: true }, | |
{ name: AWSPinpointAnalyticsPlugin, reportCoverage: true }, | |
{ name: AWSPinpointPushNotificationsPlugin, reportCoverage: true }, | |
{ name: AWSS3StoragePlugin, reportCoverage: true }, | |
{ name: CoreMLPredictionsPlugin, reportCoverage: true }, | |
{ name: InternalAWSPinpointUnitTests, reportCoverage: false }, | |
] | |
uses: ./.github/workflows/run_unit_tests.yml | |
with: | |
scheme: ${{ matrix.scheme.name }} | |
platform: ${{ matrix.platform }} | |
xcode_version: '14.3' | |
generate_coverage_report: ${{ matrix.platform == 'iOS' && matrix.scheme.reportCoverage }} | |
build_cache_key: Amplify-${{ matrix.platform }}-cache-${{ github.ref_name }} | |
test_without_building: true | |
report-coverage: | |
name: ${{ matrix.file.scheme }} Coverage Report | |
needs: [run-unit-tests] | |
strategy: | |
fail-fast: false | |
matrix: | |
file: [ | |
{ scheme: Amplify, flags: 'Amplify,unit_tests' }, | |
{ scheme: AWSPluginsCore, flags: 'AWSPluginsCore,unit_tests' }, | |
{ scheme: AWSAPIPlugin, flags: 'API_plugin_unit_test,unit_tests' }, | |
{ scheme: AWSCloudWatchLoggingPlugin, flags: 'Logging_plugin_unit_test,unit_tests' }, | |
{ scheme: AWSCognitoAuthPlugin, flags: 'Auth_plugin_unit_test,unit_tests' }, | |
{ scheme: AWSDataStorePlugin, flags: 'DataStore_plugin_unit_test,unit_tests' }, | |
{ scheme: AWSLocationGeoPlugin, flags: 'Geo_plugin_unit_test,unit_tests' }, | |
{ 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' } | |
] | |
uses: ./.github/workflows/upload_coverage_report.yml | |
with: | |
scheme: ${{ matrix.file.scheme }} | |
flags: ${{ matrix.file.flags }} | |
delete-package-cache: | |
if: github.ref_name != 'main' | |
name: Delete ${{ matrix.platform }} cache | |
runs-on: ubuntu-latest | |
needs: [run-unit-tests] | |
continue-on-error: true | |
env: | |
GH_TOKEN: ${{ github.token }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [iOS, macOS, tvOS, watchOS] | |
steps: | |
- run: | | |
gh cache delete Amplify-${{ matrix.platform }}-cache-${{ github.ref_name }} | |
shell: bash | |
unit-test-pass-confirmation: | |
runs-on: ubuntu-latest | |
name: Confirm Passing Unit Tests | |
if: ${{ !cancelled() }} | |
needs: [ run-unit-tests ] | |
env: | |
EXIT_CODE: ${{ contains(needs.*.result, 'failure') && 1 || 0 }} | |
steps: | |
- run: exit $EXIT_CODE |