Skip to content

Add OCI labels, Docker Hub pages from the repo, and a LICENSE - #104

Merged
SteveGilvarry merged 1 commit into
ZoneMinder:masterfrom
SteveGilvarry:dockerhub-pages
Oct 24, 2026
Merged

SteveGilvarry merged 1 commit into
ZoneMinder:masterfrom
SteveGilvarry:dockerhub-pages

Conversation

@SteveGilvarry

Copy link
Copy Markdown
Member

Three related fixes for how the images look from outside: on Docker Hub, to update tools, and to anyone asking what license they're under.

Docker Hub pages

Right now zoneminderhq/zoneminder (about 1M pulls, the repo people find) still shows the 2021 README. That page has docker run commands for latest-el7 and latest-ubuntu18.04 and two dead links. zoneminder/zoneminder and zoneminder/pyzm-serve have no overview, and none of the three repos has a short description.

  • dockerhub/zoneminder.md, dockerhub/zoneminderhq.md and dockerhub/pyzm-serve.md are the new overviews. The quick start downloads the compose file and .env.example, so it works without cloning the repo. The zoneminderhq page says it's a mirror and marks the 2021 tags as old and unmaintained.
  • The new .github/workflows/dockerhub-description.yml publishes them with peter-evans/dockerhub-description@v4 whenever dockerhub/** changes on master, or when started by hand.

Token: Docker Hub's description API needs a personal access token with Read, Write, Delete scope. Organisation access tokens and push-only tokens get refused. If the current DOCKERHUB_TOKEN can't do it, only this workflow fails, because it's separate from images.yml, so image pushes keep working. Either way it runs once on merge, which shows whether the token works.

The pages list the dev / dev-es tags, which exist once #103 lands and the nightly push runs.

OCI labels

Every pushed image (zm, zm-es, pyzm-serve CPU and CUDA) now carries org.opencontainers.image.source, revision, version, title and description. The ZoneMinder images also get url, documentation and licenses. With source set, Renovate and Dependabot PRs for people who pin a version link to the release notes, and docker inspect shows which ZoneMinder version and repo commit an image came from.

  • No created timestamp. It would give the daily rebuild a new digest every day even when nothing changed, and Watchtower users would pull a "new" image daily.
  • No licenses label on pyzm-serve. PyPI lists pyzm only as "GPL", and the YOLO weights it downloads are AGPL-3.0, so one SPDX value would claim more than we know.

LICENSE

The repo had none. I've used GPL-2.0-or-later (ZoneMinder's own COPYING text) to match ZoneMinder, and the README notes that the images also contain software under other licenses. This needs a maintainer to confirm. If the Dockerfiles should be under something else, I'll change the file and the label.

Testing

  • actionlint (with shellcheck) passes on all three workflows.
  • A local build with the same labels shows them in docker inspect.
  • The description workflow can only be tested against Docker Hub with the real token, so it gets its first run on merge.

🤖 Generated with Claude Code

Labels: every pushed image gets org.opencontainers.image.source, revision,
version, title and description, so Renovate, Dependabot and scanners can
link an image back to its commit. The ZoneMinder images also get url,
documentation and licenses. There's no created timestamp, because it would
give the daily rebuild a new digest every day even when nothing changed.

Docker Hub: dockerhub/*.md holds the overview of zoneminder/zoneminder,
zoneminderhq/zoneminder (marked as a mirror, with the 2021 tags flagged as
unmaintained) and zoneminder/pyzm-serve. The new dockerhub-description
workflow publishes them with peter-evans/dockerhub-description on changes
to master. It's separate from images.yml, so a token that can't edit
descriptions can't block image pushes.

LICENSE: GPL-2.0-or-later, ZoneMinder's own COPYING text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SteveGilvarry
SteveGilvarry merged commit acb3964 into ZoneMinder:master Oct 24, 2026
3 checks passed
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