Repository navigation
ci(gitlab): keep an unstripped release binary per main commit - #1476
duncanista wants to merge 2 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🟡 Changes recommended
The early KEEP_SYMBOLS declaration prevents normal and symbols builds from sharing expensive dependency and toolchain cache layers.
1 open issue
What changed in this PR
Adds retained release binaries for size and profiling analysis of the Lambda extension without changing the shipped layers.
Changes:
- Enables symbol-preserving builds for standard amd64 and arm64 flavors.
- Adds non-blocking CI jobs that run automatically on main and tags, and manually elsewhere.
- Retains stripped and unstripped binaries with build metadata for 90 days.
| File | Description |
|---|---|
images/Dockerfile.bottlecap.compile |
Adds a build argument to disable release stripping. |
.gitlab/templates/pipeline.yaml.tpl |
Adds symbol-build jobs and retained artifacts. |
.gitlab/scripts/compile_bottlecap.sh |
Passes the symbol flag and uses separate output names. |
.gitlab/datasources/flavors.yaml |
Enables symbol jobs for amd64 and arm64. |
Review effort: Balanced
❌ ErrorsYour PR has failed checks. Please review the issues below and take necessary action before merging. 🚦 2 Pipeline jobs failed
Useful? React with 👍 / 👎 This comment will be updated automatically if new data arrives.🔗 Commit SHA: ff7123d | Docs | View more details | Give us feedback! |

TL;DR: GitLab keeps an unstripped copy of the release binary (amd64 and arm64) for each main commit, as a 90-day artifact. The shipped layer does not change.
Why: The shipped binary is stripped, so we cannot see what takes space in it or profile it. With symbols we can attribute binary size per crate and read cold-start profiles. #1480 compares each pipeline's binary with this main baseline.
Overview
Jira: SVLS-9976
First PR of the dev-tooling stack. It does not depend on the CI stack.
Add the job
bottlecap symbols (<flavor>)for the flavors withkeep_symbols: true(amd64and arm64). It compiles the release profile again with
KEEP_SYMBOLS=1(
CARGO_PROFILE_RELEASE_STRIP=false) and keeps, for 90 days, under the artifact namebottlecap-<suffix>-<short sha>:bottlecap (<flavor>),It runs on
mainand on tags, and is manual on other branches. Every rule hasallow_failure: true, and the retry covers only runner and timeout failures, so the job neverblocks a pipeline. The shipped layer does not change. Size and profiling work needs these
binaries; the binary report job later in this stack compares against them.
Size: 74 core lines, 74 lines in total.
Testing
.gitlab/templates/pipeline.yaml.tpl, parsed as YAML: passcompile_bottlecap.sh: no new finding (10 old infos): pass