Skip to content

ci: add Mergify merge queue and simplify CI#78

Merged
unclesp1d3r merged 2 commits into
mainfrom
feat/mergify-merge-queue
Feb 15, 2026
Merged

ci: add Mergify merge queue and simplify CI#78
unclesp1d3r merged 2 commits into
mainfrom
feat/mergify-merge-queue

Conversation

@unclesp1d3r
Copy link
Copy Markdown
Member

Summary

  • Add Mergify merge queue with squash merge method and CI check requirements
  • Auto-queue release-plz and dependabot PRs; queue regular PRs on approval
  • Remove changes job and all path-filter conditionals from CI -- all checks always run now, eliminating the skipped-check name mismatch complexity
  • Simplify merge_protections to straight check-success (no more check-skipped fallbacks)

After merging

  • Set "Mergify Merge Protections" as the required status check in branch protection (replacing "CI" if it was set)
  • PRs will auto-enter the merge queue when approved
  • Dependabot and release-plz PRs auto-queue without manual approval

Test plan

  • CI passes on this PR (all jobs run unconditionally)
  • Mergify validates the config (check the "Configuration Change Requirements" status)
  • After merge, verify a dependabot PR auto-enters the queue

🤖 Generated with Claude Code

- 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>
Copilot AI review requested due to automatic review settings February 15, 2026 22:34
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Feb 15, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 15, 2026

Summary by CodeRabbit

  • Chores
    • Simplified CI by removing change-based gating so quality, tests (including cross-platform) and coverage run consistently.
    • Removed the separate CodeQL analysis workflow.
    • Adjusted security checks to use the default policy configuration.
    • Added queue-based PR merge rules with explicit CI success requirements and automated routing for release and dependency PRs.

Walkthrough

Removes 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

Cohort / File(s) Summary
CI workflow (gating removed)
.github/workflows/ci.yml
Deletes the change-detection job and path-filter gating; removes outputs/if conditions and makes quality, test, test-cross-platform, and coverage run unconditionally or only depend on preceding jobs.
Mergify queue & protections
.mergify.yml
Adds queue_rules with a default squash-merge queue and three pull_request_rules (approved, release-plz, dependabot). Replaces nested/or-and success_conditions with a flat list of explicit CI checks; updates merge_protections description accordingly.
CodeQL workflow removed
.github/workflows/codeql.yml
Removes the entire CodeQL analysis workflow (triggers, permissions, and analysis job).
Security check tweak
.github/workflows/security.yml
Changes cargo deny invocation to use the default configuration by removing the explicit --config deny.ci.toml flag.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped through workflows, trimmed each gate,
Now jobs run steady — no more wait.
Queues lined up, checks set straight,
Code cleaned, CI light and great.
Hoppity hop, merge on fate!

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: adding Mergify merge queue and simplifying CI by removing path-filter conditionals and the changes job.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, covering the Mergify queue addition, removal of path-filter conditionals, CI simplification, and post-merge instructions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/mergify-merge-queue

Comment @coderabbitai help to get the list of available commands and usage tips.

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Feb 15, 2026

Merge Protections

Your pull request matches the following merge protections and will not be merged until they are valid.

🟢 📃 Configuration Change Requirements

Wonderful, this rule succeeded.

Mergify configuration change

  • check-success = Configuration changed

🟢 CI must pass

Wonderful, 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.

  • any of:
    • check-success = quality
    • check-skipped = quality
  • any of:
    • check-success = test
    • check-skipped = test
  • any of:
    • all of:
      • check-success = test-cross-platform (macos-latest, macOS)
      • check-success = test-cross-platform (ubuntu-22.04, Linux)
      • check-success = test-cross-platform (ubuntu-latest, Linux)
      • check-success = test-cross-platform (windows-latest, Windows)
    • check-skipped = test-cross-platform
  • any of:
    • check-success = coverage
    • check-skipped = coverage

🟢 Do not merge outdated PRs

Wonderful, this rule succeeded.

Make sure PRs are within 10 commits of the base branch before merging

  • #commits-behind <= 10

@coderabbitai coderabbitai Bot added enhancement New feature or request size:M This PR changes 30-99 lines, ignoring generated files. testing Test infrastructure and coverage labels Feb 15, 2026
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

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 changes job and all path-filter conditionals from CI workflow
  • Simplified merge_protections to 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
Copy link
Copy Markdown

codecov Bot commented Feb 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@unclesp1d3r unclesp1d3r enabled auto-merge (squash) February 15, 2026 22:38
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Feb 15, 2026

🧪 CI Insights

Here'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>
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. size:L This PR changes 100-499 lines, ignoring generated files. labels Feb 15, 2026
@unclesp1d3r unclesp1d3r disabled auto-merge February 15, 2026 22:42
@unclesp1d3r unclesp1d3r enabled auto-merge (squash) February 15, 2026 22:42
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.mergify.yml (1)

23-37: Consider adding do-not-merge label 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 a do-not-merge label 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

@unclesp1d3r unclesp1d3r merged commit 0c928d7 into main Feb 15, 2026
27 checks passed
@unclesp1d3r unclesp1d3r deleted the feat/mergify-merge-queue branch February 15, 2026 22:45
@github-actions github-actions Bot mentioned this pull request Feb 15, 2026
@github-actions github-actions Bot mentioned this pull request Feb 15, 2026
mergify Bot pushed a commit that referenced this pull request Feb 15, 2026
#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>
@github-actions github-actions Bot mentioned this pull request Feb 16, 2026
@github-actions github-actions Bot mentioned this pull request Feb 23, 2026
@github-actions github-actions Bot mentioned this pull request Mar 1, 2026
mergify Bot pushed a commit that referenced this pull request Mar 1, 2026
## 🤖 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>
@coderabbitai coderabbitai Bot mentioned this pull request Apr 10, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:L This PR changes 100-499 lines, ignoring generated files. testing Test infrastructure and coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants