name: CI on: push: branches: [main] pull_request: branches: [main] jobs: preflight: name: License Header and Formatting Checks runs-on: ubuntu-latest container: image: swift:6.0-jammy steps: - name: "Checkout repository" uses: actions/checkout@v4 - name: Mark the workspace as safe run: git config --global --add safe.directory ${GITHUB_WORKSPACE} - name: "Install protoc" run: apt update && apt install -y protobuf-compiler - name: "Formatting, License Headers, and Generated Code check" run: | ./dev/sanity.sh unit-tests: strategy: fail-fast: false matrix: include: - image: swiftlang/swift:nightly-jammy # No TSAN because of: https://github.com/apple/swift/issues/59068 # swift-test-flags: "--sanitize=thread" - image: swift:6.0-jammy # No TSAN because of: https://github.com/apple/swift/issues/59068 # swift-test-flags: "--sanitize=thread" name: Build and Test on ${{ matrix.image }} runs-on: ubuntu-latest container: image: ${{ matrix.image }} steps: - uses: actions/checkout@v4 - name: 🔧 Build run: swift build ${{ matrix.swift-build-flags }} timeout-minutes: 20 - name: 🧪 Test run: swift test ${{ matrix.swift-test-flags }} timeout-minutes: 20 performance-tests: strategy: fail-fast: false matrix: include: - image: swiftlang/swift:nightly-jammy swift-version: 'main' - image: swift:6.0-jammy swift-version: '6.0' name: Performance Tests on ${{ matrix.image }} runs-on: ubuntu-latest container: image: ${{ matrix.image }} steps: - uses: actions/checkout@v4 - name: Install jemalloc for benchmarking run: apt update && apt-get install -y libjemalloc-dev timeout-minutes: 20 - name: Run Benchmarks working-directory: "./IntegrationTests/Benchmarks" run: swift package benchmark baseline check --no-progress --check-absolute-path Thresholds/${{ matrix.swift-version }}/ timeout-minutes: 20 examples: strategy: fail-fast: false matrix: include: - image: swiftlang/swift:nightly-jammy - image: swift:6.0-jammy name: Build examples using ${{ matrix.image }} runs-on: ubuntu-latest container: image: ${{ matrix.image }} steps: - uses: actions/checkout@v4 - name: Build examples run: ./dev/build-examples.sh