Skip to content

ci(testing): publish a develop-collector-omnibus testing image - #1016

Merged
Starosdev merged 1 commit into
developfrom
ci/publish-develop-collector-omnibus
Oct 20, 2026
Merged

Starosdev merged 1 commit into
developfrom
ci/publish-develop-collector-omnibus

Conversation

@Starosdev

Copy link
Copy Markdown
Owner

Summary

The testing channel published only the all-in-one omnibus image, which cannot exercise a collector entrypoint change. That image is s6-based and starts its collectors from rootfs/etc/services.d; the docker/entrypoint-collector*.sh scripts belong to Dockerfile.collector, Dockerfile.collector-omnibus and Dockerfile.collector-performance, and docker/Dockerfile copies none of them.

The practical consequence showed up immediately after #1011, which changed those entrypoints: there was no testing tag anywhere that contained the change, so it could not be validated on a real host before release, and the reporter in discussion #1007 had nothing to try in the meantime.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)
  • CI/CD or infrastructure change

Related Issues

Follow-up to #1011. Relevant to discussion #1007.

Changes Made

  • deploy-testing.yml also builds docker/Dockerfile.collector-omnibus and pushes develop-collector-omnibus. collector-omnibus is the single addition that closes the gap: it carries all six collectors and is the image most hub/spoke deployments run.
  • Built for linux/amd64 only. The image installs zfsutils-linux, mdadm, btrfs-progs and fio, and emulating that build for arm64 under QEMU would dominate the runtime of every develop push. Stable releases still publish both architectures. Flagging this as the deliberate trade-off in this PR: if arm64 testing images matter more than develop push latency, the platform list is a one-line change.
  • The new build uses its own cache scope, testing-collector-omnibus, so it does not evict the all-in-one image's cache.

Tag table corrections

Adding to the published tag table surfaced that it listed tags no workflow produces, so this PR also makes it match reality:

Channel Documented before Actually published
Stable 8 tags, omitting latest-collector-omnibus 8 images from docker/image-matrix.json, including collector-omnibus
Beta 8 tags beta, beta-omnibus
Testing 8 tags develop, develop-omnibus (plus develop-collector-omnibus after this PR)

docs/DEPLOYMENTS.md and docs/TROUBLESHOOTING_DOCKER.md now match their workflows, with a note that stable builds the full matrix while beta and testing publish a smaller set on purpose. Anyone who followed the old table and pulled develop-collector or beta-collector-zfs was pulling a tag that does not exist.

Testing

  • I have tested this locally

  • I have added/updated tests that prove my fix/feature works

  • All existing tests pass

  • deploy-testing.yml parses as YAML, and both build steps resolve to the intended file, platforms and tags.

  • Verified against the workflows rather than from memory: deploy-beta.yml publishes two tags; docker-build.yaml builds from docker/image-matrix.json, which has 8 entries and includes collector-omnibus; docker/Dockerfile contains no reference to entrypoint-collector.

  • No new test. The change is a build step and three documentation edits; the real proof is the first develop push publishing the tag, which is observable in the workflow run.

  • Not verifiable before merge: this workflow only runs on a push to develop, so the new step cannot execute on a pull request. Worth watching the first run after merge to confirm the build succeeds and the tag appears in GHCR.

Checklist

  • My code follows the project's code style
  • I have performed a self-review of my code
  • I have commented my code where necessary (particularly complex areas)
  • I have updated the documentation if needed
  • My changes generate no new warnings
  • No console.log, debug statements, or commented-out code

Additional Notes

Review: not required (one additive build step plus documentation corrections; it publishes a new testing tag and changes no existing tag, image, or deployment).

The amd64-only decision and the scope of the tag table corrections are the two judgement calls here, and both are easy to reverse.

The testing channel published only the all-in-one omnibus image. That image
starts its collectors from rootfs/etc/services.d, so it cannot exercise any
change to the docker/entrypoint-collector*.sh scripts, which belong to
Dockerfile.collector, Dockerfile.collector-omnibus and
Dockerfile.collector-performance. A collector-side fix therefore had no testing
tag at all: it could not be validated on a real host before release, and a
reporter waiting on the fix had nothing to try.

deploy-testing.yml now also builds Dockerfile.collector-omnibus and pushes
develop-collector-omnibus. collector-omnibus is the one addition that covers the
gap, because it carries all six collectors and is the image most hub/spoke
deployments run.

It is built for amd64 only. The image installs zfsutils-linux, mdadm,
btrfs-progs and fio, and emulating that for arm64 under QEMU would dominate the
runtime of every develop push. Stable releases still publish both
architectures, and the build uses its own cache scope so it does not evict the
all-in-one image's cache.

Correcting the published tag table while adding to it, because it listed tags
that no workflow produces. docs/DEPLOYMENTS.md advertised eight testing tags and
eight beta tags; deploy-testing.yml published two and deploy-beta.yml publishes
two. The stable row was also missing latest-collector-omnibus, which
docker/image-matrix.json does build. Each row now matches its workflow, with a
note that stable builds the full matrix while beta and testing publish a smaller
set deliberately.
@Starosdev
Starosdev merged commit 7017a85 into develop Oct 20, 2026
32 of 33 checks passed
Starosdev added a commit that referenced this pull request Oct 20, 2026
## Summary

Reverts #1016. Its premise was wrong and it caused an architecture
regression on an existing tag.

`docker-build.yaml` already triggers on pushes to `develop` and
publishes `develop-${{ matrix.image }}` for every entry in
`docker/image-matrix.json`, which includes `collector-omnibus`.
`develop-collector-omnibus` therefore already existed, and multi-arch.
The gap #1016 claimed to close was not real.

The reason the tag was not found by inspection: the tag name is
templated, so grepping the workflows for the literal string
`develop-collector` matches nothing.

## The regression

#1016 added a second, amd64-only build that pushed the same tag. Because
#1016 touched only `deploy-testing.yml` and `docs/**`, it missed
`docker-build.yaml`'s path filters, so the Docker workflow did not run
on that push to restore the multi-arch manifest. Observed on a host
after the merge:

| Tag | Architectures |
| --- | --- |
| `develop-collector-omnibus` after #1016 | amd64 |
| `develop-collector` from `docker-build.yaml` | amd64, arm, arm64 |

An arm64 host pulling `develop-collector-omnibus` would no longer find a
matching manifest.

## Type of Change

- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [ ] Refactoring (no functional changes)
- [x] CI/CD or infrastructure change

## Related Issues

Reverts #1016. Follow-up to #1011.

## Changes Made

- Removes the duplicate `develop-collector-omnibus` build step from
`deploy-testing.yml`.
- Restores the published tag tables in `docs/DEPLOYMENTS.md` and
`docs/TROUBLESHOOTING_DOCKER.md`. The original tables were correct;
#1016 replaced them with a narrower list that described only
`deploy-testing.yml` and ignored the tags `docker-build.yaml` publishes
on the same push.

## Testing

- [x] I have tested this locally
- [ ] I have added/updated tests that prove my fix/feature works
- [x] All existing tests pass

- `deploy-testing.yml` parses as YAML and is byte-identical to its state
before #1016.
- Verified from the workflow definitions rather than by grepping for tag
strings: `docker-build.yaml` runs on `push` to `develop`, and its
`docker/metadata-action` config emits `develop-${{ matrix.image }}` for
each of the 8 matrix entries.
- The multi-arch manifest for `develop-collector-omnibus` needs one run
of `docker-build.yaml` to be restored, since this revert only stops the
overwriting. Being dispatched separately against `develop`.

## Checklist

- [x] My code follows the project's code style
- [x] I have performed a self-review of my code
- [x] I have commented my code where necessary (particularly complex
areas)
- [x] I have updated the documentation if needed
- [x] My changes generate no new warnings
- [x] No console.log, debug statements, or commented-out code

## Additional Notes

Review: not required (removes a build step added hours earlier and
restores two documentation tables to their prior content).

One pre-existing documentation gap is left alone here to keep this a
clean revert: all three channel rows omit `*-collector-omnibus`, which
`docker/image-matrix.json` does build for stable, beta and develop
alike. That deserves its own change rather than riding along with a
revert.
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