Skip to content

refactor: consolidate CI/CD workflows#495

Open
deanq wants to merge 2 commits intomainfrom
deanq-ae-2779-consolidate-cicd
Open

refactor: consolidate CI/CD workflows#495
deanq wants to merge 2 commits intomainfrom
deanq-ae-2779-consolidate-cicd

Conversation

@deanq
Copy link
Copy Markdown
Member

@deanq deanq commented Apr 10, 2026

Summary

  • Consolidate 5 workflow files into 2 (ci.yml, cd.yml), following the flash-worker pattern
  • Add top-level Makefile so local dev mirrors CI (make test, make quality-check)
  • Add validation gate job as single point to check all quality gates passed
  • Normalize setup-uv to v7 across all jobs
  • Disable notify-workers pending optimization (17 parallel jobs each sleeping 5min)
  • vhs.yml unchanged (manual only)

Before/After

Before After
CI-pytests.yml ci.ymltest job
CI-codeql.yml ci.ymlcodeql job
CI-e2e.yml ci.ymle2e job
CD-publish_to_pypi.yml cd.ymlrelease-please + pypi-publish
CD-test_publish_to_pypi.yml cd.ymltest-publish job

Post-merge

  • Add validation as required status check in branch protection
  • Re-enable notify-workers after optimizing to single job with sequential dispatch

Test plan

  • CI runs on this PR (test, e2e, codeql jobs trigger correctly)
  • Verify no required status checks reference old workflow names
  • Verify make test runs locally
  • After merge: confirm CD triggers on main push

Closes AE-2779

@deanq deanq force-pushed the deanq-ae-2779-consolidate-cicd branch from db0c338 to 7a88b16 Compare April 10, 2026 08:34
Merge 5 scattered workflow files (CI-pytests, CI-codeql, CI-e2e,
CD-publish_to_pypi, CD-test_publish_to_pypi) into 2 consolidated
files (ci.yml, cd.yml). Add Makefile so local dev mirrors CI.

- ci.yml: test + e2e + codeql as parallel quality gates + validation job
- cd.yml: staging TestPyPI + production release-please/PyPI publish
- Makefile: setup, test, build, verify, quality-check targets
- Normalize setup-uv to v7 across all jobs
- Disable notify-workers pending optimization (85min wasted runner time)
- vhs.yml unchanged (manual only, unrelated to pipeline)

Closes AE-2779
@deanq deanq force-pushed the deanq-ae-2779-consolidate-cicd branch from 7a88b16 to 0b3e99b Compare April 10, 2026 08:35
@deanq deanq requested a review from Copilot April 10, 2026 08:36
Copy link
Copy Markdown

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

Consolidates the repository’s GitHub Actions CI/CD configuration into two workflows and introduces a top-level Makefile to align local developer commands with CI execution.

Changes:

  • Replaces multiple CI workflows with a single CI workflow containing test, e2e, codeql, and a validation gate job.
  • Replaces multiple CD workflows with a single CD workflow for TestPyPI (staging) and PyPI publishing (main) via release-please.
  • Adds a root Makefile to standardize setup, test, coverage, build, and package verification commands.

Reviewed changes

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

Show a summary per file
File Description
Makefile Adds standardized local/CI commands (setup, test, test-coverage, build, verify, quality-check).
.github/workflows/ci.yml New consolidated CI workflow with a validation gate over test/e2e/codeql.
.github/workflows/cd.yml New consolidated CD workflow for staging TestPyPI and main PyPI publishing; notify-workers disabled.
.github/workflows/CI-pytests.yml Removed in favor of ci.yml test job.
.github/workflows/CI-e2e.yml Removed in favor of ci.yml e2e job.
.github/workflows/CI-codeql.yml Removed in favor of ci.yml codeql job.
.github/workflows/CD-test_publish_to_pypi.yml Removed in favor of cd.yml test-publish job.
.github/workflows/CD-publish_to_pypi.yml Removed in favor of cd.yml release-please + pypi-publish jobs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Pin UV_PYTHON per matrix entry so uv uses the correct interpreter
- Add always() to pypi-publish so force_publish works when
  release-please is skipped
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