IEP-1616 CI unification
Description
Consolidated CI build jobs into a single file, reducing code duplication.
Fixes # (IEP-1616)
Type of change
Please delete options that are not relevant.
- New feature (non-breaking change which adds functionality)
How has this been tested?
Test Configuration:
- ESP-IDF Version:
- OS (Windows,Linux and macOS):
Dependent components impacted by this PR:
CI build and publish jobs
Checklist
- [ ] PR Self Reviewed
- [ ] Applied Code formatting
- [ ] Added Documentation
- [ ] Added Unit Test
- [ ] Verified on all platforms - Windows,Linux and macOS
Summary by CodeRabbit
-
New Features
- macOS releases now include automated code signing and DMG packaging for easier installation.
-
Chores
- CI reworked to a macOS-first build-and-publish pipeline with multi-platform artifact uploads and explicit version extraction.
- Per-OS matrix test execution and standardized test-report publishing for clearer test results.
- CI tooling updated (Java, Python, Maven) and build flow modernized.
-
Removed
- Legacy standalone Windows CI workflow eliminated.
Walkthrough
Replaces the single CI workflow with a macOS-focused build_and_publish_macos job (artifact versioning, codesign, DMG creation, multi-OS artifact uploads) and a matrix-driven build_and_test job for per-OS tests and reports; removes the previous Windows-only workflow and updates GH Actions/tool versions and runners.
Changes
| Cohort / File(s) | Summary |
|---|---|
macOS-centric CI refactor .github/workflows/ci.yml |
Replaces monolithic build with two jobs: build_and_publish_macos (uses actions/checkout@v4, Python 3.11, Maven 3.9.6, JDK 21; extracts version, codesigns macOS bundles, creates DMGs, uploads update-site and platform artifacts) and build_and_test (matrix-driven per-OS test runners, per-OS workspace paths and test-report naming, centralized Maven test run and test-report publishing). |
Windows workflow removal .github/workflows/ci_windows.yml |
Deletes the prior Windows-only workflow that checked out repo and tools, set up Python/Maven/JDK, ran mvn verify, and published JUnit reports; its duties moved into the new matrixed CI in ci.yml. |
Sequence Diagram(s)
sequenceDiagram
autonumber
participant Dev as Push/PR
participant GH as GitHub Actions
participant Mac as build_and_publish_macos
participant Sign as Codesign & DMG
participant Store as Artifact storage
participant Matrix as build_and_test (matrix)
Dev->>GH: push / open PR
GH->>Mac: start macOS publish job
Mac->>Mac: checkout@v4 → setup Python/Maven/JDK → mvn package
Mac->>Mac: extract version from built artifacts
Mac->>Sign: import signing certs → codesign bundles → create DMGs
Sign->>Store: upload update-site + platform artifacts + DMGs
note over GH,Matrix: parallel per-OS test matrix (linux/windows/mac)
GH->>Matrix: start matrix jobs
Matrix->>Matrix: checkout → setup per-OS tools → mvn verify (tests) with per-OS workspace
Matrix->>Store: publish per-OS test reports (dynamic names)
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
- espressif/idf-eclipse-plugin#1290 — Edits the Windows CI workflow and JDK/setup-java updates (overlaps with removal/replacement of Windows workflow).
- espressif/idf-eclipse-plugin#1283 — Aligns project/tooling to Java 21 (matches JDK 21 usage in the new CI).
- espressif/idf-eclipse-plugin#1048 — Changes around artifact upload/action versioning (related to new artifact publishing steps).
Suggested reviewers
- kolipakakondal
- alirana01
- AndriiFilippov
Poem
I’m a rabbit in the CI glen,
I hop through jobs and sign again,
DMGs gleam and artifacts fly,
Tests bound across each OS sky,
A tiny hop — the pipelines grin. 🐇✨
Pre-merge checks and finishing touches
✅ Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Docstring Coverage | ✅ Passed | No functions found in the changes. Docstring coverage check skipped. |
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title Check | ✅ Passed | The title “IEP-1616 CI unification” concisely captures the main change of unifying continuous integration workflows and ties it back to the relevant ticket. It is brief, clear, and directly reflects the substantive modifications in the CI configuration files without unnecessary detail. Therefore, it meets the criteria for a focused and informative pull request title. |
✨ Finishing touches
- [ ] 📝 Generate Docstrings
🧪 Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
IEP-1616
[!TIP]
👮 Agentic pre-merge checks are now available in preview!
Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
- Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
- Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.
Please see the documentation for more information.
Example:
reviews: pre_merge_checks: custom_checks: - name: "Undocumented Breaking Changes" mode: "warning" instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).Please share your feedback with us on this Discord post.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.