Skip to content

Migrate to JMeter 5.6 multi-stage build with RMI SSL and CI - #1

Merged
smithbr merged 7 commits into
masterfrom
feat/jmeter-5.6-migration
Jun 7, 2026
Merged

Migrate to JMeter 5.6 multi-stage build with RMI SSL and CI#1
smithbr merged 7 commits into
masterfrom
feat/jmeter-5.6-migration

Conversation

@smithbr

@smithbr smithbr commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Why

The images were stuck on JMeter 3.2 with hand-maintained master/slave Dockerfiles, an unpinned plugin download, and no automated build. This brings the project to JMeter 5.6.3 with a reproducible, verifiable build and optional transport security for distributed runs.

Approach

A single multi-stage Dockerfile produces a shared jmeter-base (controller) and a jmeter-worker that builds on it, so both always carry the same JMeter and plugin set. Build inputs are pinned and checksummed, the version lives in one place per file, and a CI matrix builds both targets on every push/PR. Distributed RMI can optionally be authenticated and encrypted without changing the default plaintext behavior for trusted networks.

How it works

  • Pinned, verified jars — Plugins Manager and cmdrunner are fetched from Maven Central by exact version and SHA512-checked at build time, instead of the rolling jmeter-plugins.org/get/ endpoint.
  • Build definitionsdocker-compose.yml and docker-bake.hcl define both targets with JMETER_VERSION centralized; a GitHub Actions matrix builds each target and smoke-checks jmeter --version.
  • Optional RMI SSL — mounting a shared keystore via RMI_KEYSTORE turns on authenticated, encrypted distributed testing. SSL settings are written to a 0600 properties file so the password never appears in the process list; without a keystore the worker runs plaintext as before, now with an explicit startup warning.
  • Docs + sample — the README is rewritten for the 5.6 workflow (laptop, AWS, RMI SSL) and test.jmx is updated to the 5.6.3 plan format.

smithbr added 7 commits May 29, 2026 12:11
Consolidate base and worker images into one Dockerfile on Eclipse Temurin
21, verify Apache archives with sha512, install jp@gc plugins at build
time, and add a worker entrypoint that runs jmeter-server with LOCALIP.
Fetch both from Maven Central (immutable, versioned) instead of the rolling
jmeter-plugins.org/get/ "latest" endpoint, so each jar can be SHA512-verified
at build time like the JMeter archive.
Define both image targets once with JMETER_VERSION centralized per file, and
add a GitHub Actions matrix that builds each target and smoke-checks JMeter.
Enable authenticated, encrypted distributed testing when a shared keystore is
mounted via RMI_KEYSTORE. SSL settings are written to a 0600 properties file so
the keystore password never appears in the process list. Without a keystore the
engine runs plaintext as before, now with an explicit warning.
JMETER_HOME and PATH were set in one ENV, so ${JMETER_HOME} resolved to its
empty pre-instruction value and the JMeter bin dir never reached PATH. Bare
`jmeter` (used by the CI smoke check) failed with "not found".
@smithbr
smithbr merged commit 30bf49a into master Jun 7, 2026
2 checks passed
@smithbr
smithbr deleted the feat/jmeter-5.6-migration branch June 7, 2026 23:59
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