Skip to content

Performance test suite on a self-hosted Windows runner#27

Closed
astubbs wants to merge 3 commits intodev/maven-publishfrom
dev/self-hosted-runner
Closed

Performance test suite on a self-hosted Windows runner#27
astubbs wants to merge 3 commits intodev/maven-publishfrom
dev/self-hosted-runner

Conversation

@astubbs
Copy link
Copy Markdown
Owner

@astubbs astubbs commented Apr 11, 2026

Summary

Splits the volume tests into a separate "performance" test group that runs on a self-hosted GitHub Actions runner (Windows + Docker Desktop), so they don't slow down or destabilize the regular CI.

Test changes

  • Tagged with @Tag("performance"):
    • `VeryLargeMessageVolumeTest`
    • `LargeVolumeInMemoryTests`
    • `MultiInstanceHighVolumeTest`
  • Failsafe now reads two new pom properties:
    • `included.groups` (default empty) → `-Dgroups=`
    • `excluded.groups` (default `performance`) → `-DexcludedGroups=`
  • Regular CI builds are unchanged in scope: they exclude performance tests automatically. To override:
    • `-Dincluded.groups=performance` → run only perf
    • `-Dexcluded.groups=` → run everything including perf

Workflow

`.github/workflows/performance.yml`:

  • `runs-on: [self-hosted, windows, performance]`
  • Triggers: `workflow_dispatch` (manual) + weekly cron (Sunday 02:00 UTC)
  • Never runs on PRs — self-hosted runners + untrusted code is a security risk
  • Uploads test reports as artifacts (30 day retention)

Scripts

  • `bin/performance-test.sh` (Linux/macOS local runs)
  • `bin/performance-test.cmd` (Windows runs / what the workflow calls)

Documentation

  • `docs/SELF_HOSTED_RUNNER.md` — one-time runner setup walkthrough for Windows + Docker Desktop + WSL2
  • `AGENTS.md` and the README template mention the perf suite and link to the setup doc
  • Fixed a stale README link to a renamed test file

What you need to do once after merging

  1. Install the runner agent on your Windows desktop following `docs/SELF_HOSTED_RUNNER.md`
  2. Label it with `performance` and `windows` (lowercase)
  3. Trigger the workflow manually from the Actions tab to verify

Stacked on

This PR is stacked on top of #26 (dev/maven-publish), which is itself stacked on #25 and #24.

🤖 Generated with Claude Code

astubbs and others added 3 commits April 21, 2026 10:48
On every push to master, .github/workflows/publish.yml reads the
version from pom.xml and either:
- Publishes a snapshot (version ends in -SNAPSHOT)
- Publishes a release + creates git tag + GitHub release (otherwise)

The pom.xml version is the source of truth - no maven-release-plugin
dance. To cut a release, merge a PR that strips -SNAPSHOT.

Also adds --pinentry-mode loopback to the maven-gpg-plugin so
headless CI signing works without a TTY.

Documents required GitHub secrets in AGENTS.md and the README dev
section:
- MAVEN_CENTRAL_USERNAME / MAVEN_CENTRAL_PASSWORD
- MAVEN_GPG_PRIVATE_KEY / MAVEN_GPG_PASSPHRASE

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a separate performance test suite that runs on dedicated hardware
via a self-hosted GitHub Actions runner, so the volume tests don't
slow down or destabilize regular CI.

Test changes:
- Tag VeryLargeMessageVolumeTest, LargeVolumeInMemoryTests, and
  MultiInstanceHighVolumeTest with @tag("performance")
- Failsafe now reads excluded.groups (defaults to "performance") and
  included.groups (defaults to empty), so the performance group is
  excluded by default. Override with -Dincluded.groups=performance to
  run only perf, or -Dexcluded.groups= to run everything.

Scripts:
- bin/performance-test.sh and bin/performance-test.cmd run the perf
  suite locally (.cmd for Windows since the runner is on Windows)

Workflow:
- .github/workflows/performance.yml targets a self-hosted runner
  labelled [self-hosted, windows, performance]
- Triggers: workflow_dispatch (manual) + weekly schedule
- Never runs on PRs (security: self-hosted + untrusted code = bad)

Documentation:
- docs/SELF_HOSTED_RUNNER.md walks through one-time runner setup on
  Windows with Docker Desktop and the WSL2 backend
- README template and AGENTS.md mention the performance suite and
  link to the runner setup doc
- Fix a stale link in README to the renamed VolumeTests file

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a "License headers" section to AGENTS.md explaining how to skip
the Mycila license-maven-plugin check. This avoids two recurring
problems:
- The plugin's git-derived copyright years break inside git worktrees
- It auto-bumps years on every touched file, creating noise in
  git status that distracts from real changes

The bin/build.sh and bin/ci-build.sh scripts already pass the flag.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@astubbs astubbs force-pushed the dev/self-hosted-runner branch from 848ddbc to faa3adb Compare April 20, 2026 22:49
@astubbs astubbs force-pushed the dev/maven-publish branch from 230e5d9 to a66b635 Compare April 20, 2026 22:52
@astubbs astubbs deleted the branch dev/maven-publish April 20, 2026 22:59
@astubbs astubbs closed this Apr 20, 2026
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