ci: add Mergify merge queue and simplify CI#78
Conversation
- Add merge queue (squash method) with CI check requirements - Auto-queue release-plz and dependabot PRs - Queue regular PRs on approval (>= 1 review) - Remove changes job and path-filter conditionals so all CI checks always run, eliminating skipped-check complexity - Simplify merge_protections now that checks never skip - Keep merge_protections as safety net against queue bypass Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Summary by CodeRabbit
WalkthroughRemoves path-based change detection and gating from CI, making quality, test, test-cross-platform, and coverage jobs run unconditionally (or depend only on their direct predecessor). Adds explicit Mergify queue rules and flattens CI success_conditions. Deletes the CodeQL workflow and tweaks cargo-deny invocation to use the default config. Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
Merge ProtectionsYour pull request matches the following merge protections and will not be merged until they are valid. 🟢 📃 Configuration Change RequirementsWonderful, this rule succeeded.Mergify configuration change
🟢 CI must passWonderful, this rule succeeded.All CI checks must pass or be legitimately skipped (path filtering). Matrix job names differ between running and skipped states, so the test-cross-platform rule uses an and/or pattern to handle both.
🟢 Do not merge outdated PRsWonderful, this rule succeeded.Make sure PRs are within 10 commits of the base branch before merging
|
There was a problem hiding this comment.
Pull request overview
This PR modernizes the CI/CD pipeline by introducing a Mergify merge queue and removing path-based conditional execution. The changes eliminate the complexity of handling skipped vs. running checks by ensuring all CI jobs run unconditionally, making the Mergify configuration simpler and more reliable.
Changes:
- Added Mergify merge queue with automatic queueing for approved PRs, release-plz PRs, and dependabot PRs
- Removed the
changesjob and all path-filter conditionals from CI workflow - Simplified
merge_protectionsto require straightforward check success without fallback logic for skipped checks
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.mergify.yml |
Added queue_rules for merge queue configuration and pull_request_rules for auto-queueing; simplified merge_protections to remove check-skipped fallback logic |
.github/workflows/ci.yml |
Removed changes job and all conditional execution based on path filters; updated job dependencies to only depend on test where needed |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
🧪 CI InsightsHere's what we observed from your CI run for a20b421. 🟢 All jobs passed!But CI Insights is watching 👀 |
- Fix security workflow: use deny.toml (deny.ci.toml never existed, causing all license checks to fail with default deny-all config) - Remove advanced CodeQL workflow in favor of standard GitHub default code scanning setup (configured via repo settings) Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.mergify.yml (1)
23-37: Consider addingdo-not-mergelabel exclusion to auto-queue rules.The "Queue PRs when approved" rule (line 18) includes
label != do-not-merge, but the release-plz and dependabot auto-queue rules don't. If someone adds ado-not-mergelabel to a dependabot/release-plz PR to temporarily block it, the PR would still enter the queue.This may be intentional (automated PRs typically don't need manual blocking), but for consistency you could add the label check.
💡 Optional: Add do-not-merge exclusion
- name: Auto-queue release-plz PRs conditions: - base = main - "head ~= ^release-plz-" + - label != do-not-merge actions: queue: name: default - name: Auto-queue dependabot PRs conditions: - base = main - author = dependabot[bot] + - label != do-not-merge actions: queue: name: default
#79) ## Summary - Add Mergify merge queue with auto-queue rules for approved, release-plz, and dependabot PRs - Remove `changes` job and all path-filter conditionals from CI -- all jobs run unconditionally - Remove advanced CodeQL workflow in favor of GitHub default code scanning - Fix `cargo deny check` to use default config (was referencing non-existent `deny.ci.toml`) - Add `label != do-not-merge` exclusion to all auto-queue rules - Add auto-update rule to keep open PRs rebased against main - Auto-approve dependabot PRs and disable dependabot's own rebase-strategy (Mergify handles it) - Add DCO remediation commit config for contributor-friendly sign-off recovery **Note:** The diff appears larger than expected because PR #78 was merged and the branch was deleted before additional commits were pushed to the same branch name. ## Post-merge steps - [x] Add `Mergify Merge Protections` as required status check in branch protection ## Test plan - [x] Mergify config validates (Configuration changed check passes) - [ ] CI jobs run unconditionally (no path filtering) - [ ] Merge queue processes PRs correctly (PRs #80-84 confirm this) - [ ] Auto-update rule keeps PRs current with main - [ ] DCO check passes with remediation config --------- Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
## 🤖 New release
* `libmagic-rs`: 0.1.1 -> 0.2.0 (⚠ API breaking changes)
### ⚠ `libmagic-rs` breaking changes
```text
--- failure enum_unit_variant_changed_kind: An enum unit variant changed kind ---
Description:
A public enum's exhaustive unit variant has changed to a different kind of enum variant, breaking possible instantiations and patterns.
ref: https://doc.rust-lang.org/reference/items/enumerations.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_unit_variant_changed_kind.ron
Failed in:
variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84
variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84
variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84
--- failure enum_variant_added: enum variant added on exhaustive enum ---
Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_variant_added.ron
Failed in:
variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177
variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177
variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_parameter_count_changed.ron
Failed in:
libmagic_rs::evaluator::types::read_byte now takes 3 parameters instead of 2, in /tmp/.tmpchbzmC/libmagic-rs/src/evaluator/types.rs:79
```
<details><summary><i><b>Changelog</b></i></summary><p>
<blockquote>
## [0.2.0] - 2026-03-01
### Features
- **parser**: Implement comparison operators
([#104](#104))
### Miscellaneous Tasks
- **Mergify**: Add outdated PR protection
([#75](#75))
- Add Mergify merge queue and simplify CI
([#78](#78))
- Mergify merge queue, dependabot integration, and CI simplification
([#79](#79))
- **release**: Add regex for version bumping based on commit types
<!-- generated by git-cliff -->
</blockquote>
</p></details>
---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Summary
changesjob and all path-filter conditionals from CI -- all checks always run now, eliminating the skipped-check name mismatch complexitymerge_protectionsto straightcheck-success(no morecheck-skippedfallbacks)After merging
Test plan
🤖 Generated with Claude Code