ci: run perf jobs on bamboo - #672
Conversation
📝 WalkthroughWalkthroughBoth performance workflows now run measurement jobs on ChangesPerformance workflow runner migration
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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 |
Greptile SummaryThe PR moves Tak measurement jobs to the dedicated Bamboo performance runner while leaving reporting and publishing on hosted runners.
Confidence Score: 5/5This follow-up appears safe to merge because no eligible blocking failure remains. No blocking failure remains. Important Files Changed
Reviews (5): Last reviewed commit: "ci: restrict bamboo perf prs to jdx" | Re-trigger Greptile |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/perf-pr.yml:
- Line 40: Create .github/actionlint.yaml and declare bamboo-perf under
self-hosted-runner.labels so actionlint recognizes the custom runner label. This
configuration change covers both references in
.github/workflows/perf-pr.yml#L40-L40 and .github/workflows/perf.yml#L40-L40; no
workflow changes are required.
In @.github/workflows/perf.yml:
- Around line 35-40: Split the workflow so the Bamboo-backed measure job remains
read-only and no longer runs tak push or requires contents: write. Add a
separate publish job on ubuntu-latest that receives the generated Git notes and
required measurement state from measure, then performs the Push measurements/tak
push step with contents: write and its GITHUB_TOKEN available only to that job.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Central YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: b59720f2-262e-4f21-ad9b-f8a0b838a137
📒 Files selected for processing (2)
.github/workflows/perf-pr.yml.github/workflows/perf.yml
| jobs: | ||
| measure: | ||
| name: Measure | ||
| # Pin the image as well as tak and Rust. Absolute instruction counts shift | ||
| # when any part of the measuring environment moves. | ||
| runs-on: ubuntu-24.04 | ||
| runs-on: bamboo-perf |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift
Keep tak push on a hosted publish job.
Push measurements is still a step inside measure, so this runner change also moves the job-level contents: write permission and the GITHUB_TOKEN used by tak push onto bamboo-perf. That does not meet the PR objective that publish jobs remain on hosted runners. Keep measure read-only on Bamboo. Transfer the generated Git notes and required measurement state to a separate publish job on ubuntu-latest, and grant contents: write only there.
🧰 Tools
🪛 actionlint (1.7.12)
[error] 40-40: label "bamboo-perf" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/perf.yml around lines 35 - 40, Split the workflow so the
Bamboo-backed measure job remains read-only and no longer runs tak push or
requires contents: write. Add a separate publish job on ubuntu-latest that
receives the generated Git notes and required measurement state from measure,
then performs the Push measurements/tak push step with contents: write and its
GITHUB_TOKEN available only to that job.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cefaafa. Configure here.
| jobs: | ||
| measure: | ||
| name: Compare instruction counts | ||
| if: github.event.pull_request.user.login == 'jdx' |
There was a problem hiding this comment.
PR perf jobs skip other authors
Medium Severity
The perf-pr workflow still triggers on every pull request, but the new if conditions on measure and report run those jobs only when the PR author is jdx. Other contributors get no instruction-count comparison, sticky comment, or regression gate, despite the workflow’s stated purpose of gating regressions on the PR that caused them.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit cefaafa. Configure here.
Instruction counts
No instruction-count regression above 1.25%. Measured on the base but not here — a benchmark that stops running also stops gating: 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.
|
### 🚀 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)


Summary
bamboo-perfrunnerValidation
actionlint(withbamboo-perfregistered as the expected custom label)git diff --checkmainbaseline queued on the disposable runnerAI-assisted — Tool: Codex; model: unavailable; version: unavailable.
Note
Medium Risk
Perf baselines and PR gates now depend on a self-hosted runner and a new Tak series ID, and perf-pr only runs for one author until that guard is removed—wrong runner availability or label config would break CI signal without touching app code.
Overview
Moves Tak instruction-count measurement in
perf.ymlandperf-pr.ymlfrom GitHub-hostedubuntu-24.04to the self-hostedbamboo-perfrunner, and registers that label in.github/actionlint.yamlso workflow linting accepts it.Benchmark metadata now uses
TAK_RUNNER: bamboo-v2-ubuntu24.04-x64-30vcpu-24gb-rust1.97.1-tokio1, explicitly starting a new measurement series (comments call out incompatibility with the old hosted-runner baseline). The workflows dropRUSTUP_TOOLCHAINand the manualrustup toolchain installstep, relying onmise-actionon the Bamboo image instead.perf-pradditionally gatesmeasureandreportwithgithub.event.pull_request.user.login == 'jdx'so only that author’s PRs run the expensive compare/comment path; report/publish-style jobs that stay onubuntu-latestare unchanged aside from that condition.Reviewed by Cursor Bugbot for commit cefaafa. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit