Skip to content

ci: build perf binaries on bamboo - #674

Merged
jdx merged 2 commits into
mainfrom
agent/bamboo-perf-fresh-builds
Aug 2, 2026
Merged

ci: build perf binaries on bamboo#674
jdx merged 2 commits into
mainfrom
agent/bamboo-perf-fresh-builds

Conversation

@jdx

@jdx jdx commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • compile benchmark binaries from scratch inside each disposable Bamboo VM
  • prevent a cached target/ built on Namespace from being measured and labeled as Bamboo
  • document the runner-class integrity requirement beside the build setup

Validation

  • actionlint on the affected performance workflows
  • git diff --check

Generated with AI assistance and manually validated.


Note

Low Risk
Workflow-only change affecting build caching for perf jobs; no application, auth, or data-path changes.

Overview
Perf CI (perf.yml, perf-pr.yml) no longer restores target/ via Swatinem/rust-cache. Benchmark binaries are built from scratch on each disposable bamboo-perf run so instruction counts are not attributed to Bamboo when artifacts were produced on another runner class (e.g. Namespace).

Inline comments were added next to the mise-action step to document that requirement. Regular CI workflows still use rust-cache; only the tak measurement paths changed.

Reviewed by Cursor Bugbot for commit e9ff3de. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Chores
    • Updated performance workflows to compile directly in disposable measurement environments.
    • Removed restoration of cached build artifacts to improve consistency of performance measurements.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The performance workflows no longer restore Rust build artifacts from caches. Comments state that compilation occurs inside the disposable measurement VM to avoid binaries built on a different runner class.

Changes

Performance workflow compilation

Layer / File(s) Summary
Remove cross-runner Rust caches
.github/workflows/perf-pr.yml, .github/workflows/perf.yml
The workflows remove Rust cache steps and document compilation inside the disposable VM.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • jdx/fnox#656: Modifies the same performance workflows and removes their Rust cache steps.

Poem

A rabbit hops where build caches lay,
“Compile in the VM today!”
No borrowed binaries cross the track,
Fresh work goes forward, clean and exact.
Thump, thump! The runners stay in sync.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main CI change: building performance binaries on Bamboo.

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.

❤️ Share

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

@greptile-apps

greptile-apps Bot commented Aug 2, 2026

Copy link
Copy Markdown

Greptile Summary

Removes Rust artifact caching from performance workflows so benchmark binaries are compiled on their disposable Bamboo runners.

  • Disables reuse of cached target/ artifacts in PR performance measurements.
  • Applies the same runner-integrity behavior to scheduled performance measurements.
  • Documents why cross-runner build artifacts would invalidate benchmark attribution.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/workflows/perf-pr.yml Removes optional Rust build caching while preserving the clean release-build and benchmark sequence for PR measurements.
.github/workflows/perf.yml Removes optional Rust build caching while preserving the clean release-build and benchmark sequence for scheduled measurements.

Reviews (2): Last reviewed commit: "Merge branch 'main' into agent/bamboo-pe..." | Re-trigger Greptile

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Instruction counts

benchmark trend instructions Δ wall (min) Δ
schema ▁█▅ 7,063,138 → 7,062,449 -0.01% 3.11 → 3.41ms +9.61%
usage ▁█▄ 10,870,502 → 10,869,860 -0.01% 3.33 → 3.97ms +19.20%

No instruction-count regression above 1.25%.

Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run.

Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.

22bd0a0ba8b5 vs eb05bbfaca85 · measured on the runner, not pushed to the history.

@jdx
jdx enabled auto-merge (squash) August 2, 2026 02:32
@jdx
jdx merged commit 292c788 into main Aug 2, 2026
17 of 18 checks passed
@jdx
jdx deleted the agent/bamboo-perf-fresh-builds branch August 2, 2026 02:42
mise-en-dev added a commit that referenced this pull request Aug 9, 2026
### 🚀 Features

- **(bitwarden)** support custom fields by
[@jdx](https://github.com/jdx) in
[#690](#690)

### 🐛 Bug Fixes

- **(bitwarden)** support slashes in custom fields by
[@jdx](https://github.com/jdx) in
[#693](#693)
- **(ci)** update Infisical project bootstrap by
[@jdx](https://github.com/jdx) in
[#675](#675)

### 📚 Documentation

- **(sync)** clarify personal age provider setup by
[@jdx](https://github.com/jdx) in
[#692](#692)

### 🔍 Other Changes

- run perf jobs on bamboo by [@jdx](https://github.com/jdx) in
[#672](#672)
- build perf binaries on bamboo by [@jdx](https://github.com/jdx) in
[#674](#674)

### 📦️ Dependency Updates

- update jdx/mise-action action to v4.2.3 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#677](#677)
- update rust crate keepass to v0.13.18 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#678](#678)
- update rust crate schemars to v1.2.2 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#679](#679)
- update dependency github:jdx/tak to v0.0.5 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#676](#676)
- update rust crate jsonwebtoken to v11 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#685](#685)
- update zizmorcore/zizmor-action action to v0.6.1 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#680](#680)
- update rust crate base64 to 0.23 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#683](#683)
- update rust crate usage-lib to v4.1.0 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#684](#684)
- update dependency @anthropic-ai/claude-code to v2.1.220 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#681](#681)
- update rust crate usage-lib to v5 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#687](#687)
- update rust crate rmcp to v3 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#688](#688)
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.

1 participant