Commit Graph

251 Commits

Author SHA1 Message Date
Isaac Connor
071516240e Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-06-17 19:30:48 -04:00
Isaac Connor
c102f1ec02 fix: pre-create ZMREPO rpm target dirs before rsync deploy
The build-rpm-packages workflows deploy with easingthemes/ssh-deploy using
rsync args -rltgoDzvO, which does not create missing parent directories on
the remote. When the zmrepo directory tree was deleted the deploy step
failed.

--mkpath is not a viable fix: it is parsed by the local rsync in the build
container, and Rocky 8 ships rsync 3.1.3 which predates the flag (3.2.3+).

Add a pre-deploy step that creates rpm/master/<family>/<releasever>/<arch>/
over ssh with mkdir -p, which has no rsync version dependency. Also add
utils/zmrepo_mkdirs.sh to recreate the full tree manually.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 19:18:23 -04:00
Isaac Connor
281d87a1f4 Merge pull request #4935 from SteveGilvarry/codeql-ignore-vendored-js
ci: exclude vendored third-party JavaScript from CodeQL analysis
2026-06-17 18:28:22 -04:00
SteveGilvarry
c47dc991cb ci: exclude vendored third-party JavaScript from CodeQL analysis
CodeQL's open alerts are dominated by findings inside bundled third-party
libraries (jQuery UI, Bootstrap 4, bootstrap-table, the jQuery UI
timepicker addon, hls.js). These flag coding patterns internal to those
libraries -- js/unsafe-jquery-plugin, js/insecure-randomness, etc. -- that
are not ZoneMinder bugs and cannot be fixed without forking the
dependencies. They drown out findings in ZoneMinder-authored code.

Add the vendored library directories/files to paths-ignore in the CodeQL
config. ZoneMinder-authored files in these trees (skin.js,
MonitorStream.js, views/js/*.js, ...) are not listed and remain analysed.

moment.js is intentionally left out: it is scheduled for removal once its
remaining call sites migrate to luxon, so its alert will be resolved by
deletion rather than suppression.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 07:42:41 +10:00
Isaac Connor
ff96db6b77 Add mkpath 2026-06-17 10:53:19 -04:00
SteveGilvarry
ecf44512c2 ci: attach complete source tarball with submodules to releases refs #4725 refs #3781
GitHub's auto-generated 'Source code' release assets are plain git
archive output without submodules, so cmake fails immediately on the
submodule check and the release cannot be built standalone.

On every published release (or manual dispatch with a tag, to backfill
existing releases) build zoneminder-<tag>.tar.gz from a recursive
checkout and attach it plus a sha256 to the release. The tarball is
reproducible (commit mtime, sorted entries, no owner, no gzip
timestamp) and is sanity-checked for the same file CMakeLists.txt
requires before upload.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 01:26:44 +10:00
dependabot[bot]
9543fb23a5 build(deps): bump actions/dependency-review-action from 4 to 5
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4 to 5.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-12 00:52:46 +00:00
Isaac Connor
b8d93989ad ci: skip CodeQL on changes that contain no scanned languages
Adds paths-ignore for db/, docs/, distros/, misc/, onvif/, scripts/
and *.md/*.sql/*.in files. CodeQL analyses cpp and javascript only,
so changes confined to these paths produce no new findings and don't
need to spend Actions minutes or generate ~610 MB of cache.

Verified the ignored directories contain no .c/.cpp/.h/.js files.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 20:24:15 -04:00
Isaac Connor
8af2ed4678 ci: add scheduled workflow to prune old Actions caches
Runs daily at 03:00 UTC and via workflow_dispatch. Groups caches by
key prefix (stripping trailing run/sha suffixes) and keeps the N
newest per prefix, deleting the rest. Defaults to keeping 2.

Without this, CodeQL builds left ~10 GB of per-commit caches behind,
exhausting the org Actions storage quota.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 20:24:15 -04:00
Isaac Connor
d6606c7646 Set retention-days: 1 2026-04-22 08:36:02 -04:00
dependabot[bot]
6cb4c5b49e chore(deps): Bump softprops/action-gh-release from 2 to 3
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 18:53:45 +00:00
Isaac Connor
47e6f2f4f4 fix: exclude orig tarball from deb uploads to zmrepo
Two changes that together stop the .orig.tar.gz from landing in
mini-dinstall's incoming dir and causing cross-distro filename
collisions:

- do_debian_package.sh: quote DEBUILD assignment so the -b flag is
  actually passed to debuild. Without quotes, bash parsed it as
  "run -b with DEBUILD=debuild as one-shot env", dropping the binary
  flag and falling back to a full source build that included the orig
  tarball in .changes.
- build-deb-packages{,-aarch64}.yml: drop *.dsc, *.tar.xz, *.tar.gz
  from the artifact collection mv. Only .deb, .buildinfo, and .changes
  are needed for binary uploads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 16:31:52 -04:00
Isaac Connor
4260cee91d fix: restrict eslint 9 flat config to .js and .js.php files only
ESLint 9 ignores the --ext flag, so the old --ext .js.php,.js had no
effect. The flat config's **/*.*php glob matched all .php files, not
just .js.php. Add explicit files pattern to the main config block and
narrow the PHP override from **/*.*php to **/*.js.php. Remove the
now-ignored --ext flag from CI and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 07:09:05 -05:00
Isaac Connor
a271955868 Merge pull request #4671 from ZoneMinder/dependabot/github_actions/actions/download-artifact-8
build(deps): bump actions/download-artifact from 7 to 8
2026-03-03 05:50:41 -05:00
Isaac Connor
8952dea668 Merge pull request #4672 from ZoneMinder/dependabot/github_actions/actions/upload-artifact-7
build(deps): bump actions/upload-artifact from 6 to 7
2026-03-03 05:50:15 -05:00
dependabot[bot]
35c244701e build(deps): bump crazy-max/ghaction-import-gpg from 6 to 7
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 6 to 7.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v6...v7)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 19:34:04 +00:00
dependabot[bot]
29a662004f build(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 19:33:58 +00:00
dependabot[bot]
f5b1af696b build(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 19:33:52 +00:00
Isaac Connor
023649874f fix: pin @eslint/js to <10 to fix CI eslint dependency conflict
@eslint/js@10.0.1 requires eslint@^10.0.0 as a peer dependency,
which conflicts with the pinned eslint@9. Pinning @eslint/js to <10
keeps it on the 9.x line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:09:12 -05:00
Isaac Connor
9354bba256 Put back .deb builds on master 2026-02-27 17:23:59 -05:00
Isaac Connor
6c4890992d fix: upgrade ESLint config to v9 flat config format
Complete the migration from .eslintrc.js to eslint.config.js flat
config format for ESLint 9 compatibility. Add valid-jsdoc: off
(removed in ESLint 9 but enabled by eslint-config-google) and the
missing operator-linebreak: off override. Update the HLS ignore path
to match current version. Update CI workflow to install ESLint 9 and
its flat config dependencies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:25:54 -05:00
Isaac Connor
90cc5fe1a2 Push to master repo 2026-02-23 22:43:35 -05:00
Isaac Connor
877fc711f0 Push to master repo 2026-02-23 22:43:04 -05:00
Isaac Connor
2455494b99 ci: use dynamic branch and deploy targets in deb package workflows
Replace hardcoded release-1.38 references with GITHUB_REF_NAME so the
workflows use the branch they are running on for the -b parameter, curl
source URL, and rsync deploy targets. Non-tag pushes deploy to
proposed-<version>, tag pushes deploy to release-<version>.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
76869b9568 Revert "Add release-1.38 version of rpm building"
This reverts commit df637312da.
2026-02-23 18:16:56 -05:00
Isaac Connor
5cb31f7824 Add release-1.38 version of rpm building 2026-02-23 18:16:56 -05:00
Isaac Connor
2f6b3d7140 ci: add -v=1 to do_debian_package.sh invocations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
de04e2fc2c fix(ci): use -r=<tag> for release builds instead of -s=CURRENT
When triggered by a tag push, pass the release tag to
do_debian_package.sh via -r= flag. Branch pushes continue
to use -s=CURRENT.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
84e393d8d1 fix(ci): fetch do_debian_package.sh from release-1.38 and fix safe.directory
- Change curl URL from refs/heads/master to refs/heads/release-1.38
  in both x86 and aarch64 workflows
- Uncomment safe.directory config in x86 workflow to fix dubious
  ownership error

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
9905ede9db ci: rename proposed rsync target to proposed-1.38
Avoid conflicts with 1.36 packages by using a version-specific
proposed directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
8d344a82cf ci: update aarch64 deb package workflow for release-1.38 branch
Trigger on release-1.38 instead of master, rsync builds to proposed
directory, and rsync tagged releases to release-1.38 directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
a2b7e25944 ci: update deb package workflow for release-1.38 branch
Trigger on release-1.38 instead of master, rsync builds to proposed
directory, and rsync tagged releases to release-1.38 directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:16:56 -05:00
Isaac Connor
e38e78d1f3 fix: always render monitorStatus HTML in montage view
The monitorStatus HTML was conditionally omitted based on
ZM_WEB_COMPACT_MONTAGE, leaving the status position dropdown
with no elements to operate on. Always render the HTML and
use the dropdown's hidden option to handle compact montage
instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 09:26:34 -05:00
Isaac Connor
29653c7883 fix: remove net-tools from BuildRequires to fix Fedora 43 build
On Fedora 43, net-tools pulls in systemd which conflicts with
systemd-standalone-tmpfiles in container build environments.
Pre-define ZM_PATH_ARP, ZM_PATH_ARP_SCAN, ZM_PATH_IP, and
ZM_PATH_IFCONFIG in the cmake call instead of relying on
find_program() at build time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 20:47:40 -05:00
Isaac Connor
75f64e46f5 fix: remove net-tools from BuildRequires to fix Fedora 43 build
On Fedora 43, net-tools pulls in systemd which conflicts with
systemd-standalone-tmpfiles in container build environments.
Pre-define ZM_PATH_ARP, ZM_PATH_ARP_SCAN, ZM_PATH_IP, and
ZM_PATH_IFCONFIG in the cmake call instead of relying on
find_program() at build time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 18:18:36 -05:00
Isaac Connor
55a87bc4d7 fix: install systemd in RPM build containers for Fedora 43
Fedora 43 container images ship systemd-standalone-tmpfiles which
conflicts with the full systemd package. Packages like mosquitto
and net-tools depend on systemd, causing dnf builddep to fail.
Install systemd with --allowerasing before builddep to resolve.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:47:07 -05:00
Isaac Connor
aa415a627f The allowerasing thing doesn't work. Drop rawhide. add f43 2026-02-05 10:49:06 -05:00
Isaac Connor
c9c2b4f04d Fix missing - 2026-02-05 10:25:17 -05:00
Isaac Connor
b0e4e643b0 Add -allowerasing to resolve issues with rawhide 2026-02-05 09:27:04 -05:00
Isaac Connor
ea0c79464c curl comes with baseos so let's remove the conflict by just using the base os verison 2026-02-02 14:24:52 -05:00
Isaac Connor
61e0915c36 Revert "Add --skip-broken to deal with continuing curl stupidity"
This reverts commit 6833e517a3.
2026-02-02 10:37:10 -05:00
Isaac Connor
6833e517a3 Add --skip-broken to deal with continuing curl stupidity 2026-02-01 19:51:33 -05:00
Isaac Connor
7719100a5b The actual package name is iproute not iproute2 2026-02-01 18:33:10 -05:00
Isaac Connor
283fd7da63 Add arp-scan for build so cmake can detect it 2026-02-01 17:52:44 -05:00
Isaac Connor
b5840998d0 Add iproute2 for build so cmake can detect it 2026-02-01 17:51:08 -05:00
Isaac Connor
6b922a0361 Add --nobest due to conflict with curl 2026-02-01 15:28:47 -05:00
Isaac Connor
68530ff1ce Add rm -rf ZoneMinder_zoneminder_release before build 2026-01-31 17:36:43 -05:00
Isaac Connor
9a456614fb add git config --global --add safe.directory /__w/zoneminder/zoneminder 2026-01-31 17:18:26 -05:00
Isaac Connor
2b5d20a4fa Add experimental rpm building workflows 2026-01-31 16:22:54 -05:00
Isaac Connor
f2f7ede197 git-core ppa no longer exists 2026-01-15 16:31:22 -05:00