Skip to content

Latest commit

 

History

History
170 lines (126 loc) · 4.34 KB

File metadata and controls

170 lines (126 loc) · 4.34 KB
id howto-package-test-builds
type how-to
status draft
tags
packaging
testing
supervisor
release

Package test builds

Build portable test bundles for Linux, macOS, and Windows from this repo (no Docker required).

This is for tester handoff and local validation of:

  • iptv-tunerr run / serve
  • iptv-tunerr supervise -config ... (single app / many DVR children)

Platform support (important):

  • Linux: core tuner paths + HDHR network mode + VODFS mount
  • macOS: core tuner paths + HDHR network mode; no VODFS mount (Linux-only)
  • Windows: core tuner paths + HDHR network mode; no VODFS mount (Linux-only)

Preconditions

  • Go toolchain installed
  • zip, tar, sha256sum available
  • repo checked out and builds locally

Build all test packages

chmod +x ./scripts/build-test-packages.sh
./scripts/build-test-packages.sh

Output goes to:

dist/test-packages/<version>/

Artifacts include:

  • platform archives (.tar.gz / .zip)
  • SHA256SUMS.txt

Default targets:

  • linux/amd64
  • linux/arm64
  • linux/arm/v7
  • darwin/amd64
  • darwin/arm64
  • windows/amd64
  • windows/arm64

Build a smaller matrix

PLATFORMS="linux/amd64 linux/arm64 darwin/arm64 windows/amd64" \
  ./scripts/build-test-packages.sh

Override version label

VERSION=v0.0.0-test1 ./scripts/build-test-packages.sh

One-command tester handoff bundle (recommended)

Build packages and stage a tester-ready directory with checksums, manifest, examples, and docs:

chmod +x ./scripts/build-tester-release.sh
./scripts/build-tester-release.sh

Output:

dist/test-releases/<version>/

Includes:

  • packages/ (archives + SHA256SUMS.txt)
  • examples/ (supervisor JSON/YAML examples)
  • docs/ (packaging + config references)
  • manifest.json (machine-readable package inventory and feature limits)
  • TESTER-README.txt (quick handoff note)

CI automation (artifact + release publishing)

GitHub Actions workflow:

  • .github/workflows/tester-bundles.yml

Triggers:

  • manual (workflow_dispatch)
  • tag push (v*)

Behavior:

  • Always uploads the staged tester bundle as a workflow artifact (tester-bundle-<version>)
  • On tag pushes (v*), also packs the staged bundle directory and uploads it to the GitHub Release as a .tar.gz asset

Related release automation:

  • .github/workflows/release.yml
    • creates the GitHub Release on every v* tag push
    • uses scripts/generate-release-notes.sh instead of GitHub auto-notes
    • publishes binary assets for linux/amd64, linux/arm64, linux/arm/v7, darwin/amd64, darwin/arm64, windows/amd64, and windows/arm64
    • release notes prefer the matching docs/CHANGELOG.md tag section, then Unreleased, then fall back to the exact commit range for the tag
  • .github/workflows/docker.yml
    • pushes GHCR/Docker Hub multi-arch images (linux/amd64, linux/arm64, linux/arm/v7)
    • publishes versioned image tags on v* pushes
    • publishes latest on main
    • also emits sha-* tags for traceability

Tag-based test release flow (recommended)

Use a version tag (for example v0.1.0-test1) to produce both:

  • versioned GHCR image tags
  • tester bundle GitHub Release asset

Example:

git tag v0.1.0-test1
git push origin v0.1.0-test1

Expected outputs after workflows finish:

  • GitHub Release v0.1.0-test1 with tester bundle .tar.gz asset
  • Actions artifact tester-bundle-v0.1.0-test1
  • GHCR image tags including v0.1.0-test1 and sha-<commit>

What is included in each bundle

  • iptv-tunerr binary (iptv-tunerr.exe on Windows)
  • README.md
  • docs/how-to/deployment.md
  • docs/how-to/package-test-builds.md
  • docs/reference/testing-and-supervisor-config.md

Test a packaged supervisor build

  1. Unpack the archive.
  2. Run:
./iptv-tunerr run -mode=easy
  1. Verify sample child endpoints:
curl -s http://127.0.0.1:5004/discover.json
curl -s http://127.0.0.1:5102/lineup.json | jq 'length'

Verify package contents

cd dist/test-packages/<version>
sha256sum -c SHA256SUMS.txt

Notes

  • The built-in Plex stale-session reaper is in the Go binary (no Python required).
  • Windows/macOS test bundles support core tuner/supervisor validation. VODFS mount remains Linux-only.

See also