Skip to content

chore(ci): make regression/Dockerfile self-contained#25411

Draft
pront wants to merge 4 commits into
masterfrom
chore/regression-dockerfile-drop-vector-dev
Draft

chore(ci): make regression/Dockerfile self-contained#25411
pront wants to merge 4 commits into
masterfrom
chore/regression-dockerfile-drop-vector-dev

Conversation

@pront
Copy link
Copy Markdown
Member

@pront pront commented May 11, 2026

Summary

Switches the regression detector's builder stage from timberio/vector-dev:latest to rust:1-slim-trixie with inline apt + protoc setup, mirroring tests/e2e/Dockerfile.

This removes the SMP regression detector's dependency on the published dev environment image — second of three PRs to retire timberio/vector-dev. After this lands, only make environment itself still references the image; that machinery + the publishing workflow will go in the final PR.

The target stage is unchanged. apt deps mirror what scripts/environment/bootstrap-ubuntu-24.04.sh installs for a Vector build (build-essential, libsasl2-dev, libssl-dev, libxxhash-dev, libclang-dev, zlib1g-dev, etc.). The Rust toolchain is selected by rust-toolchain.toml via scripts/environment/prepare.sh --modules=rustup.

Note on baselines

The build environment changes once with this PR, so the first comparison after merge may show a one-time baseline shift. Expected — both binaries in subsequent comparisons will use the same Dockerfile.

Vector configuration

N/A — internal CI change.

How did you test this PR?

Local Docker isn't available, so I couldn't build the image locally. Validation comes from:

  • /ci-run-regression review trigger (see below)
  • Regression workflow's existing smoke test: RUN ["/usr/bin/vector", "--version"] in the target stage

Change Type

  • Bug fix
  • New feature
  • Dependencies
  • Non-functional (chore, refactoring, docs)
  • Performance

Is this a breaking change?

  • Yes
  • No

Does this PR include user facing changes?

  • Yes. Please add a changelog fragment based on our guidelines.
  • No. A maintainer will apply the no-changelog label to this PR.

References

N/A

Switches the regression builder stage from timberio/vector-dev:latest
to rust:1-slim-trixie with inline apt + protoc setup, mirroring
tests/e2e/Dockerfile. This removes the dependency on the published
dev environment image so the SMP regression detector no longer relies
on a separately maintained CI artifact.

The target stage is unchanged. apt deps mirror what scripts/environment
installs for a Vector build (build-essential, libsasl2-dev, libssl-dev,
libxxhash-dev, libclang-dev, zlib1g-dev, etc.). The rust toolchain is
selected by rust-toolchain.toml via scripts/environment/prepare.sh.

Note for regression baselines: the build environment changes once with
this PR, so the next comparison may show a one-time baseline shift that
will normalize after master picks up the new Dockerfile.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Member Author

@pront pront left a comment

Choose a reason for hiding this comment

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

/ci-run-regression

prepare.sh has a recent breaking change (the release-flags.sh sourcing
was removed in commit 17a720c on 2026-05-07), and the regression
detector's baseline build copies the baseline checkout's source tree —
which still has the old prepare.sh that fails when release-flags.sh is
absent.

Replaces \`bash /prepare.sh --modules=rustup\` with \`cargo --version\`,
which triggers rustup's auto-install of the toolchain pinned in
rust-toolchain.toml. The Dockerfile now depends only on
install-protoc.sh from scripts/environment.

Verified locally that the toolchain install + protoc + Vector compile
all work; build OOMs at final link on Apple Silicon Docker Desktop
(8GB cap) but proceeds past Vector lib compile. CI runners
(ubuntu-24.04, 16GB) handle the link fine, as the existing regression
workflow already demonstrates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Member Author

@pront pront left a comment

Choose a reason for hiding this comment

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

/ci-run-regression

Reverts the cargo --version shortcut and restores prepare.sh as the
single source of truth for toolchain setup, matching the pattern used
in tests/e2e/Dockerfile.

Copies the whole scripts/environment/ tree (instead of individual
files) so prepare.sh can source its sibling scripts. This is what
fixes the original baseline build failure: older checkouts have a
prepare.sh that sources release-flags.sh from \${SCRIPT_DIR}, and
with the directory layout preserved that file is found alongside
prepare.sh.

Verified locally against both:
- current master (no release-flags.sh, new prepare.sh)
- baseline-equivalent snapshot (old prepare.sh + release-flags.sh)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Member Author

@pront pront left a comment

Choose a reason for hiding this comment

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

/ci-run-regression

@pront pront added domain: ci Anything related to Vector's CI environment no-changelog Changes in this PR do not need user-facing explanations in the release changelog labels May 11, 2026
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot removed the domain: ci Anything related to Vector's CI environment label May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog Changes in this PR do not need user-facing explanations in the release changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant