From 1f7c324077d26a65da0effef9f436be58587131b Mon Sep 17 00:00:00 2001 From: Doug Date: Sun, 28 Sep 2025 16:41:55 +0100 Subject: [PATCH] Update CI to support Compound. --- .github/workflows/compound-ios.yml | 64 ++++++++++++++++++++++++++++++ .swiftlint.yml | 1 + codecov.yml | 4 ++ renovate.json | 6 +++ 4 files changed, 75 insertions(+) create mode 100644 .github/workflows/compound-ios.yml diff --git a/.github/workflows/compound-ios.yml b/.github/workflows/compound-ios.yml new file mode 100644 index 000000000..e6bba4f4c --- /dev/null +++ b/.github/workflows/compound-ios.yml @@ -0,0 +1,64 @@ +# This workflow will build a Swift project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift + +name: Compound + +on: + push: + branches: [ main ] + + pull_request: + +jobs: + tests: + + runs-on: macos-15 + + concurrency: + # Only allow a single run of this workflow on each branch, automatically cancelling older runs. + group: ${{ format('compound-tests-{0}', github.ref) }} + cancel-in-progress: true + + steps: + - uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2 #v1.2.3 + + - name: Configure Xcode 26 + run: sudo xcode-select -s /Applications/Xcode_26.0.app + + - name: Install sourcery + run: brew install sourcery + + - name: Generate preview tests + working-directory: compound-ios + run: sourcery --config Tools/Sourcery/PreviewTestsConfig.yml + + - name: Create simulator + run: xcrun simctl create "iPhone SE 26.0" "iPhone SE (3rd generation)" "com.apple.CoreSimulator.SimRuntime.iOS-26-0" + + - name: Run tests + working-directory: compound-ios + run: set -o pipefail && xcodebuild test -scheme 'Compound' -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone SE 26.0,OS=26.0' -skipPackagePluginValidation -resultBundlePath Logs/CompoundTests.xcresult | xcbeautify --renderer github-actions + + - name: Zip artifacts + if: failure() # We only care about artefacts if the tests fail + working-directory: compound-ios + run: zip -r Logs/CompoundTests.xcresult.zip Logs/CompoundTests.xcresult/ + + - name: Archive artifacts + uses: actions/upload-artifact@v4 + if: failure() # We only care about artefacts if the tests fail + with: + name: test-results + path: compound-ios/Logs/CompoundTests.xcresult.zip + retention-days: 1 + if-no-files-found: ignore + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1 + with: + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + xcode: true + xcode_archive_path: compound-ios/Logs/CompoundTests.xcresult + flags: compound + diff --git a/.swiftlint.yml b/.swiftlint.yml index c2bdbd27e..f613769ea 100755 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -18,6 +18,7 @@ excluded: - "*/Sources/Generated/*" - Tools/Sources # Our command-line tools use a lot of print commands. - Secrets + - compound-ios/Inspector line_length: warning: 250 diff --git a/codecov.yml b/codecov.yml index c3329da67..d8a27e660 100644 --- a/codecov.yml +++ b/codecov.yml @@ -20,6 +20,10 @@ ignore: - "**/*Mock.swift" - "**/*Proxy.swift" - "**/*Protocol.swift" + - "compound-ios/Inspector" + - "compound-ios/Tests" + - "compound-ios/Sources/Previews" + - "compound-ios/Tools" flag_management: default_rules: diff --git a/renovate.json b/renovate.json index db1c22c14..e8aa1dd73 100644 --- a/renovate.json +++ b/renovate.json @@ -7,6 +7,7 @@ "labels" : [ "pr-misc" ], + "ignoreDeps": ["pointfreeco/swift-snapshot-testing"], "packageRules" : [ { "matchManagers": ["github-actions"], @@ -16,6 +17,11 @@ "matchManagers": ["swift", "cocoapods"], "groupName" : "Swift" }, + { + "managers": ["swift", "cocoapods"], + "matchPaths": ["compound-ios/Package.swift"], + "groupName": "Compound" + }, { "matchManagers": ["bundler"], "groupName" : "Ruby"