Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/dockerhub-description.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: dockerhub-description

# Sets the short description and overview of each Docker Hub repo from dockerhub/*.md,
# so the pages change through a PR like everything else.
#
# Docker Hub's description API wants a personal access token with Read, Write, Delete scope.
# A push-only token or an organisation access token gets refused. This workflow fails then,
# but image publishing in images.yml is unaffected.

on:
push:
branches: [master]
paths: ['dockerhub/**', '.github/workflows/dockerhub-description.yml']
workflow_dispatch:

jobs:
description:
name: ${{ matrix.repo }}
if: github.repository == 'ZoneMinder/zmdockerfiles'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- repo: zoneminder/zoneminder
file: dockerhub/zoneminder.md
short: ZoneMinder CCTV/NVR on Debian, amd64 and arm64. Needs MariaDB. -es tags add the event server.
- repo: zoneminderhq/zoneminder
file: dockerhub/zoneminderhq.md
short: Mirror of zoneminder/zoneminder (ZoneMinder CCTV/NVR). Use that name for new installs.
- repo: zoneminder/pyzm-serve
file: dockerhub/pyzm-serve.md
short: Object detection server for the ZoneMinder event server hook. CPU, or CUDA on NVIDIA GPUs.
steps:
- uses: actions/checkout@v4
- uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: ${{ matrix.repo }}
short-description: ${{ matrix.short }}
readme-filepath: ${{ matrix.file }}
26 changes: 26 additions & 0 deletions .github/workflows/images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ jobs:
# Nightly debs end in a per-arch CI run ID (1.39.41~20261023.190.<run>.1-trixie1),
# so the multi-arch build pins everything before it and lets apt match the rest.
if [ "${{ matrix.channel }}" = master ]; then echo "pin=${ZM_VERSION%.*.*-*}.*"; else echo "pin=$ZM_VERSION"; fi
echo "upstream=$upstream"
echo "pyzm=$pyzm"
echo "push=$push"
echo "zm_tags<<EOF"; tags ""; echo "EOF"
echo "es_tags<<EOF"; tags "-es"; echo "EOF"
Expand Down Expand Up @@ -109,6 +111,15 @@ jobs:
BASE_IMAGE=${{ env.BASE_IMAGE }}
ZM_CHANNEL=${{ steps.zm.outputs.channel }}
ZM_VERSION=${{ steps.zm.outputs.pin }}
labels: |
org.opencontainers.image.title=ZoneMinder
org.opencontainers.image.description=ZoneMinder video surveillance on Debian
org.opencontainers.image.version=${{ steps.zm.outputs.upstream }}
org.opencontainers.image.url=https://zoneminder.com
org.opencontainers.image.documentation=https://zoneminder.readthedocs.io
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=GPL-2.0-or-later
tags: ${{ steps.zm.outputs.zm_tags }}
cache-from: type=gha,scope=${{ matrix.channel }}
cache-to: type=gha,mode=max,scope=${{ matrix.channel }}
Expand All @@ -125,6 +136,15 @@ jobs:
BASE_IMAGE=${{ env.BASE_IMAGE }}
ZM_CHANNEL=${{ steps.zm.outputs.channel }}
ZM_VERSION=${{ steps.zm.outputs.pin }}
labels: |
org.opencontainers.image.title=ZoneMinder with event server
org.opencontainers.image.description=ZoneMinder video surveillance on Debian, with zmeventnotificationNg
org.opencontainers.image.version=${{ steps.zm.outputs.upstream }}
org.opencontainers.image.url=https://zoneminder.com
org.opencontainers.image.documentation=https://zoneminder.readthedocs.io
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.licenses=GPL-2.0-or-later
tags: ${{ steps.zm.outputs.es_tags }}
cache-from: type=gha,scope=${{ matrix.channel }}
cache-to: type=gha,mode=max,scope=${{ matrix.channel }}
Expand All @@ -136,6 +156,12 @@ jobs:
context: release/pyzm-serve
platforms: linux/amd64,linux/arm64
push: true
labels: |
org.opencontainers.image.title=pyzm-serve
org.opencontainers.image.description=Object detection server for the ZoneMinder event server
org.opencontainers.image.version=${{ steps.zm.outputs.pyzm }}
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
tags: ${{ steps.zm.outputs.pyzm_tags }}
cache-from: type=gha,scope=pyzm-serve
cache-to: type=gha,mode=max,scope=pyzm-serve
9 changes: 8 additions & 1 deletion .github/workflows/pyzm-cuda.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: pyzm-serve-cuda

# Builds zoneminder/pyzm-serve:cuda (amd64 only), tests it with tests/pyzm-cuda.sh, and pushes
# it from master. The OpenCV compile takes one to three hours the first time. After that the
# it from master. The OpenCV compile takes about 25 minutes the first time. After that the
# GitHub Actions cache holds it, and only a change to the Dockerfile ARGs or a new CUDA base
# image rebuilds it. GitHub drops caches unused for 7 days, so the schedule runs twice a week
# to keep it, and to pick up base image updates.
Expand Down Expand Up @@ -56,6 +56,7 @@ jobs:
fi
{
echo "push=$push"
echo "pyzm=$pyzm"
echo "tags=$PYZM_REPO:cuda $PYZM_REPO:$pyzm-cuda"
} | tee -a "$GITHUB_OUTPUT"

Expand All @@ -70,6 +71,12 @@ jobs:
pull: true
load: true
build-args: BUILD_JOBS=4
labels: |
org.opencontainers.image.title=pyzm-serve (CUDA)
org.opencontainers.image.description=Object detection server for the ZoneMinder event server, on NVIDIA GPUs
org.opencontainers.image.version=${{ steps.meta.outputs.pyzm }}
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
tags: ${{ env.TEST_IMAGE }}
cache-from: type=gha,scope=pyzm-cuda
cache-to: type=gha,mode=max,scope=pyzm-cuda
Expand Down
Loading
Loading