Skip to content

CI: collapse ios-packaging matrix to a single both-managers job#4839

Merged
shai-almog merged 1 commit into
masterfrom
ci-ios-matrix-collapse
Apr 30, 2026
Merged

CI: collapse ios-packaging matrix to a single both-managers job#4839
shai-almog merged 1 commit into
masterfrom
ci-ios-matrix-collapse

Conversation

@liannacasper
Copy link
Copy Markdown
Collaborator

Summary

The pods-only and spm-only matrix entries in ios-packaging.yml are proper subsets of the both entry, which exercises CocoaPods and Swift Package Manager in a single Xcode project. Each dependency manager pathway runs end-to-end in the both configuration, so dropping the two narrower entries loses no real coverage.

This cuts the workflow from 3 sequential macOS jobs (~130 min wall-clock when the runner queue is saturated) down to 1 job (~35 min).

Changes

  • Removed the matrix; inlined the both config's IOS_DEPENDENCY_ARGS directly on the job.
  • Renamed the job from packaging-matrix to packaging.
  • Removed the if: matrix.packaging.name == 'both' guard on the native iOS notification tests step — with a single config it always runs.
  • Simplified artifact name from ios-packaging-<entry> to ios-packaging.

Coverage analysis

Pathway Covered before Covered after
CocoaPods integration (Podfile gen, pod install, pod-only Xcode project) pods-only + both both
SPM integration (Package.swift gen, SPM resolution, SPM-only Xcode project) spm-only + both both
CocoaPods + SPM coexistence both both
Native iOS notification XCTests only both always

The only thing strictly lost: a hypothetical bug that fires only when the other dependency manager is absent (e.g., something that breaks when no Podfile is present). That's a niche failure mode for a project that supports both managers; if it ever bites, scripts-ios.yml (which builds with no extra deps) would catch the no-Podfile-no-SPM variant.

Expected savings

  • Per PR: ~95 macOS-min saved (was ~130 wall-clock with serialized matrix; now ~35).
  • Cost: removes ~10 min of redundant work per matrix run, freeing macOS runner slots for other workflows queued behind it.

Test plan

  • Workflow parses (verified locally with yaml.safe_load).
  • First run on this PR completes successfully end-to-end with dependencyManager=both.
  • Native iOS notification tests still run (previously they were gated to both).
  • Artifact uploads under name ios-packaging.

🤖 Generated with Claude Code

The pods-only and spm-only matrix entries are proper subsets of the
both entry, which exercises CocoaPods AND Swift Package Manager in
a single Xcode project. Each dependency manager pathway runs end to
end in the both configuration, so dropping the two narrower entries
loses no real coverage but cuts the workflow from 3 sequential macOS
jobs (~130 min wall clock when the runner queue is saturated) to one
(~35 min).

The native iOS notification tests step was previously gated to the
both entry only; with a single job remaining the conditional is
removed and the step always runs.

Job renamed from packaging-matrix to packaging since there's no
matrix anymore. Artifact name simplified from ios-packaging-<entry>
to ios-packaging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

✅ Continuous Quality Report

Test & Coverage

Static Analysis

  • SpotBugs [Report archive]
    • ByteCodeTranslator: 0 findings (no issues)
    • android: 0 findings (no issues)
    • codenameone-maven-plugin: 0 findings (no issues)
    • core-unittests: 0 findings (no issues)
    • ios: 0 findings (no issues)
  • PMD: 0 findings (no issues) [Report archive]
  • Checkstyle: 0 findings (no issues) [Report archive]

Generated automatically by the PR CI workflow.

@shai-almog shai-almog merged commit 340b7ca into master Apr 30, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants