Skip to content

ci: slim PR pipelines to Linux-only for fast feedback#103

Merged
danielmeppiel merged 4 commits intomainfrom
ci/linux-only-pr-pipeline
Feb 25, 2026
Merged

ci: slim PR pipelines to Linux-only for fast feedback#103
danielmeppiel merged 4 commits intomainfrom
ci/linux-only-pr-pipeline

Conversation

@danielmeppiel
Copy link
Collaborator

@danielmeppiel danielmeppiel commented Feb 24, 2026

Summary

Reduces PR CI from 4-platform matrix (linux x86_64, linux arm64, darwin x86_64, darwin arm64) to Linux-only across both ci.yml and ci-integration.yml. Full 4-platform matrix continues to run post-merge via build-release.yml.

Fixes Integration pipeline which would always report failure for non-fork PRs.

Problem

macOS GitHub-hosted runners frequently queue for 20-40+ minutes, making the entire PR pipeline (test → build → integration) take 45+ minutes. Since ci.yml uses needs: [test] and ci-integration.yml triggers via workflow_run, every stage is blocked by the slowest platform.

Solution

Follow the same pattern used by popular multi-platform OSS projects (ripgrep, uv):

Workflow Before After
ci.yml test 4-platform matrix Linux-only
ci.yml build 4-platform matrix Linux-only
ci-integration.yml (all jobs) 4-platform matrix Linux-only
build-release.yml Full 4-platform Unchanged

Rationale:

  • Python unit tests are platform-agnostic — running on macOS adds zero signal
  • Binary packaging (PyInstaller) platform issues are rare and caught immediately on merge to main
  • Integration tests validate binary logic, not platform packaging
  • build-release.yml has workflow_dispatch for manual full-platform runs when needed

Changes

  • .github/workflows/ci.yml: Replaced 4-platform matrix with single ubuntu-24.04 for both test and build jobs
  • .github/workflows/ci-integration.yml: Replaced 4-platform matrix with single ubuntu-24.04 for smoke-test, integration-tests, and release-validation jobs
  • .github/instructions/cicd.instructions.md: Documented platform testing strategy and updated workflow descriptions
  • .github/copilot-instructions.md: Updated project maturity description (microsoft org, 250+ stars, external contributors)

Expected impact

PR feedback time: ~3 min (down from 45+ min with macOS queue)

Copilot AI review requested due to automatic review settings February 24, 2026 21:36
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR optimizes the PR CI/CD pipeline by reducing it from a 4-platform matrix to Linux-only execution, cutting feedback time from 45+ minutes to ~3 minutes. The change addresses macOS runner queue delays (20-40+ min) that were blocking the entire PR pipeline due to sequential job dependencies. The full 4-platform matrix (Linux x86_64/arm64, Darwin x86_64/arm64) continues to run post-merge via build-release.yml, providing comprehensive platform coverage where queue time doesn't impact developer velocity.

Changes:

  • Converted PR workflows to Linux-only (ubuntu-24.04) for fast feedback
  • Maintained full 4-platform matrix in build-release.yml for post-merge validation
  • Updated documentation to reflect platform testing strategy

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
.github/workflows/ci.yml Removed 4-platform matrix from test and build jobs; now runs only on ubuntu-24.04 with single apm-linux-x86_64 artifact
.github/workflows/ci-integration.yml Removed 4-platform matrix from smoke-test, integration-tests, and release-validation jobs; downloads single Linux binary artifact
.github/instructions/cicd.instructions.md Documented Linux-only PR strategy, full platform matrix post-merge approach, and performance rationale
.github/copilot-instructions.md Updated project maturity description (microsoft org, 250+ stars, external contributors)

- ci.yml: replace 4-platform matrix with single ubuntu-24.04 for both
  test and build jobs. Eliminates macOS runner queue delays (20-40+ min).
- ci-integration.yml: match Linux-only for smoke-test, integration-tests,
  and release-validation jobs (downloads single Linux artifact from ci.yml).
- build-release.yml: unchanged — full 4-platform matrix post-merge/release.
- Update cicd.instructions.md to document platform testing strategy.
- Update copilot-instructions.md to reflect project maturity (microsoft org,
  250+ stars, external contributors).
@danielmeppiel danielmeppiel force-pushed the ci/linux-only-pr-pipeline branch from 6231218 to 244808d Compare February 24, 2026 23:01
danielmeppiel and others added 2 commits February 24, 2026 15:05
…nal PRs

GitHub Actions' default success() evaluator walks the transitive
dependency chain. When approve-fork is skipped (expected for internal
PRs), downstream jobs without explicit if conditions inherit the skip
even though smoke-test succeeded.

Add explicit if conditions checking only direct dependency results.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Collaborator

@SebastienDegodez SebastienDegodez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@danielmeppiel danielmeppiel merged commit cffd8b3 into main Feb 25, 2026
5 of 6 checks passed
@danielmeppiel danielmeppiel deleted the ci/linux-only-pr-pipeline branch February 27, 2026 09:41
@danielmeppiel danielmeppiel mentioned this pull request Mar 3, 2026
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.

3 participants