Skip to content

ci(dependabot): weekly grouped updates and shared auto-merge for minor and patch - #106

Merged
singlerider merged 7 commits into
devfrom
ci/dependabot-weekly-automerge
Oct 22, 2026
Merged

singlerider merged 7 commits into
devfrom
ci/dependabot-weekly-automerge

Conversation

@singlerider

@singlerider singlerider commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Supersedes #97, reopened from an upstream branch.

Refs blacklanternsecurity/bbot-enterprise#141.

Change

  • .github/dependabot.yml: cargo, uv, github-actions each run weekly against dev, grouped into one minor/patch PR and one major PR per ecosystem.
  • cargo now also scans /benchmark, which has its own Cargo.toml and Cargo.lock.
  • .github/workflows/dependabot-auto-merge.yml is a caller stub for the shared blacklanternsecurity/CLA/.github/workflows/dependabot-auto-merge.yml (public repo, so public callers can reach it), pinned by SHA to CLA main. On non-major Dependabot PRs the shared workflow waits for every other check on the head commit, refuses on fail or cancel, then runs gh pr merge --squash --match-head-commit. The caller grants checks: read. No per-repo copy of the logic.
  • Trigger is pull_request, not pull_request_target. Dependabot branches are same-repo, so the privileged context is unnecessary.

Depends on

  • Pinned to blacklanternsecurity/CLA main at ad6e7d7 (CLA#7). The earlier e532142 pin filtered its own check by workflow name, which GitHub reports as the file path off the default branch, so the job waited on itself until the 3h timeout.
  • dev currently requires 1 approving review, so the merge step is refused until dev matches the approved publishing policy (D11: pull request plus passing CI, 0 approvals), tracked in blacklanternsecurity/.github-config#16. Bot auto-merge into dev on CI alone is open decision D10 there.

Validation

$ uvx check-jsonschema --builtin-schema vendor.dependabot .github/dependabot.yml
ok -- validation done
$ uvx --from actionlint-py actionlint .github/workflows/dependabot-auto-merge.yml && echo ok
ok
$ uvx zizmor --offline .github/workflows/dependabot-auto-merge.yml
No findings to report. Good job! (1 suppressed)

Individual dependabot PRs pile up faster than one engineer can review
them and go stale until they conflict (bbot-enterprise#141).

Every ecosystem now runs weekly against dev and opens at most two
grouped PRs: one for minor and patch bumps, one for majors. A
pull_request_target workflow enables auto-merge (squash) on the
minor/patch group so it lands once required checks pass. Majors still
need a human.
The auto-merge job was a byte-identical copy in ten repositories. It now
calls dependabot-auto-merge.yml in blacklanternsecurity/.github, pinned
by SHA, so the fetch-metadata pin and merge policy live in one place.

The trigger moves from pull_request_target to pull_request. Dependabot
branches live in this repository, so the privileged target context was
never needed and zizmor flags it as a dangerous trigger.

The cargo ecosystem also scans /benchmark, which carries its own
Cargo.toml and Cargo.lock that were previously never updated.
blacklanternsecurity/.github is private, so public repositories cannot
call reusable workflows from it and the run failed as a workflow file
issue. The shared workflow lives in blacklanternsecurity/CLA, which is
public and already hosts cla-reusable.yml.
dev carries no required checks (#139), so gh pr merge --auto would merge
immediately rather than on green. The shared workflow now waits for
every other check on the head commit, refuses on failure or cancel, and
merges with --match-head-commit. The caller grants checks: read so it can
read check state.
Aligns with the SHA the other shared CLA workflows are pinned to. The
auto-merge workflow is unchanged between the two commits.
…-automerge

# Conflicts:
#	.github/dependabot.yml
@singlerider singlerider added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Oct 20, 2026
@singlerider singlerider self-assigned this Oct 20, 2026
@singlerider
singlerider requested review from en0f and liquidsec October 20, 2026 15:08
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

RadixTarget Benchmark Results

100000 networks per table, 100000 lookups, median of 5 runs (seed 1337).

Benchmark dev (ms) ci/dependabot-weekly-automerge (ms) Change
IPv4 insert 34.98 34.23 -2.1%
IPv4 lookup 32.57 31.60 -3.0%
IPv6 insert 84.95 83.96 -1.2%
IPv6 lookup 64.49 64.16 -0.5%

Change is in time taken: negative is faster.

@codecov-commenter

codecov-commenter commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100%. Comparing base (dcdf8ad) to head (ec4b232).
⚠️ Report is 2 commits behind head on dev.

Additional details and impacted files
@@         Coverage Diff         @@
##            dev   #106   +/-   ##
===================================
  Coverage   100%   100%           
===================================
  Files         3      3           
  Lines       605    605           
===================================
  Hits        605    605           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

en0f
en0f previously approved these changes Oct 20, 2026

@liquidsec liquidsec left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@singlerider

Blocking: the pinned SHA (e532142) never merges anything. It filters out its own check by workflow name, but when the caller isn't on the default branch GitHub reports that name as the file path, so the job waits on itself until the 3h timeout. This is happening on cloudcheck's Dependabot PRs now. Please re-pin to CLA main, ad6e7d77546f99f569e51085a0e7aad496e23b9c (CLA#7). That also fixes e532142 not being on main, despite what the description says.

Nit: the "Depends on" and "CI" sections of the description are out of date now that CLA#3 has merged.

The e532142 pin filtered its own check by workflow name. Off the
default branch GitHub reports that name as the file path, so the job
waited on itself until the 3h timeout and never merged. CLA#7 drops
the check by run id instead, and is on CLA main.
@singlerider

Copy link
Copy Markdown
Contributor Author

@liquidsec re-pinned to CLA main at ad6e7d7 (CLA#7) in ec4b232. Description updated: Depends on and CI sections now match the merged CLA state.

@singlerider
singlerider requested a review from liquidsec October 21, 2026 11:25

@liquidsec liquidsec left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approved, but I believe this wont actually work until dev no longer has review requirement.

@singlerider
singlerider merged commit 4b628bf into dev Oct 22, 2026
19 checks passed
@singlerider
singlerider deleted the ci/dependabot-weekly-automerge branch October 22, 2026 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants