Skip to content

rfc: Conformance to Identifiable protocol #70

rfc: Conformance to Identifiable protocol

rfc: Conformance to Identifiable protocol #70

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.