rfc: Conformance to Identifiable protocol #69
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: "CI Tests (Xcode 16.1)" | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
env: | |
XCODE_VERSION: "16.1" | |
jobs: | |
changes: | |
runs-on: ubuntu-latest | |
outputs: | |
ios: ${{ steps.filter.outputs.ios }} | |
codegen: ${{ steps.filter.outputs.codegen }} | |
pagination: ${{ steps.filter.outputs.pagination }} | |
tuist: ${{ steps.filter.outputs.tuist }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
filters: | | |
ios: | |
- 'apollo-ios/**' | |
- 'Tests/ApolloInternalTestHelpers/**' | |
- 'Tests/ApolloTests/**' | |
codegen: | |
- 'apollo-ios-codegen/**' | |
- 'Tests/ApolloCodegenInternalTestHelpers/**' | |
- 'Tests/ApolloCodegenTests/**' | |
- 'Tests/CodegenCLITests/**' | |
- 'Tests/CodegenIntegrationTests/**' | |
- 'Tests/TestCodeGenConfigurations/**' | |
pagination: | |
- 'apollo-ios-pagination/**' | |
- 'Tests/ApolloInternalTestHelpers/**' | |
- 'apollo-ios/**' | |
tuist: | |
- '.tuist-version' | |
tuist-generation: | |
runs-on: macos-15 | |
needs: [changes] | |
if: ${{ needs.changes.outputs.ios == 'true' || needs.changes.outputs.codegen == 'true' || needs.changes.outputs.pagination == 'true' || needs.changes.outputs.tuist == 'true' }} | |
timeout-minutes: 8 | |
name: Run Tuist Generation | |
steps: | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
- name: Run Tuist Generation | |
uses: ./.github/actions/run-tuist-generation | |
- name: Cache Build Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./ApolloDev.xcodeproj | |
./ApolloDev.xcworkspace | |
./Derived/* | |
key: ${{ github.run_id }}-dependencies | |
run-swift-builds: | |
runs-on: macos-15 | |
timeout-minutes: 15 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- package: apollo-ios | |
- package: apollo-ios-codegen | |
- package: apollo-ios-pagination | |
name: Run swift build for SPM packages | |
steps: | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
- name: Run Swift Build | |
shell: bash | |
run: | | |
cd ${{ matrix.package }} && swift build | |
build-and-unit-test: | |
runs-on: macos-15 | |
needs: [tuist-generation, changes] | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# macOS_current | |
- destination: platform=macOS,arch=x86_64 | |
scheme: ApolloTests | |
test-plan: Apollo-CITestPlan | |
name: Apollo Unit Tests - macOS | |
run-js-tests: false | |
should-run: ${{ needs.changes.outputs.ios }} | |
# Codegen CLI Test | |
- destination: platform=macOS,arch=x86_64 | |
scheme: CodegenCLITests | |
test-plan: CodegenCLITestPlan | |
name: Codegen CLI Unit Tests - macOS | |
run-js-tests: false | |
should-run: ${{ needs.changes.outputs.codegen }} | |
# CodegenLib Test | |
- destination: platform=macOS,arch=x86_64 | |
scheme: ApolloCodegenTests | |
test-plan: Apollo-Codegen-CITestPlan | |
name: Codegen Lib Unit Tests - macOS | |
run-js-tests: true | |
should-run: ${{ needs.changes.outputs.codegen }} | |
# ApolloPagination Tests | |
- destination: platform=macOS,arch=x86_64 | |
scheme: ApolloPaginationTests | |
test-plan: Apollo-PaginationTestPlan | |
name: ApolloPagination Unit Tests - macOS | |
run-js-tests: false | |
should-run: ${{ needs.changes.outputs.pagination }} | |
name: ${{ matrix.name }} | |
steps: | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
- name: Retrieve Build Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./ApolloDev.xcodeproj | |
./ApolloDev.xcworkspace | |
./Derived/* | |
key: ${{ github.run_id }}-dependencies | |
fail-on-cache-miss: true | |
- name: Build and Test | |
if: ${{ matrix.should-run == true || matrix.should-run == 'true' }} | |
id: build-and-test | |
uses: ./.github/actions/build-and-run-unit-tests | |
with: | |
destination: ${{ matrix.destination }} | |
scheme: ${{ matrix.scheme }} | |
test-plan: ${{ matrix.test-plan }} | |
- name: Run-JS-Tests | |
if: ${{ matrix.run-js-tests == true }} | |
shell: bash | |
working-directory: apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/ | |
run: | | |
npm install && npm test | |
- name: Save xcodebuild logs | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.name }}-logs | |
path: | | |
DerivedData/Logs/Build | |
- name: Save crash logs | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.name }}-crashes | |
path: | | |
~/Library/Logs/DiagnosticReports | |
- name: Zip Result Bundle | |
if: ${{ failure() }} | |
shell: bash | |
working-directory: TestResults | |
run: | | |
zip -r ResultBundle.zip ResultBundle.xcresult | |
- name: Save test results | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.name }}-results | |
path: | | |
TestResults/ResultBundle.zip | |
# CodegenTestConfigurations removed because source is not compatible with Sendable yet. |