ci: add tag-triggered release packaging workflow
Adds .gitea/workflows/release.yml, triggered only on a pushed v* tag, which builds all three platforms (reusing the exact same configure/build/test commands as build.yml, now factored out into .gitea/scripts/ so the two workflows can't drift), zips each platform's build/package/ output, and creates a draft Gitea Release with the archives attached. This is packaging automation only -- it does not resolve or bypass the C1 WebRTC/OpenH264 release gate documented in README.md's Status section. Nothing publishes until a human deliberately pushes a version tag (which should not happen before owner sign-off) and then explicitly publishes the resulting draft. The generated release notes lead with a restatement of the open C1 question specifically so that second step can't be taken by accident. build.yml is refactored (not rewritten) to call the same shared scripts; its job/step behavior is otherwise unchanged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
This commit is contained in:
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
# Shared with .gitea/workflows/build.yml and .gitea/workflows/release.yml --
|
||||
# this is the actual macOS configure/build/test/verify sequence. Edit once,
|
||||
# here, so both workflows stay in sync instead of drifting copies.
|
||||
#
|
||||
# The buildspec bootstrap runs here: it fetches obs-deps + the pinned
|
||||
# obs-studio source and builds libobs before this project configures.
|
||||
#
|
||||
# If that fails, fall back to a core-library-only build rather than going
|
||||
# red: the core library and its tests are what this job mainly guards, and
|
||||
# the fallback is loud (a workflow warning, plus the check below reporting no
|
||||
# module) rather than silent. Do not remove the warning -- a green job that
|
||||
# quietly stopped building the plugin is worse than a red one.
|
||||
set -euo pipefail
|
||||
|
||||
if ! cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release; then
|
||||
echo "::warning::OBS SDK bootstrap failed on macOS; building the core library only. The plugin module was NOT built."
|
||||
rm -rf build
|
||||
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSTPLUGIN_BOOTSTRAP_OBS=OFF
|
||||
fi
|
||||
|
||||
cmake --build build
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
# Show what was built.
|
||||
#
|
||||
# This is not purely informational: the macOS bootstrap has been reliably
|
||||
# building the real module in CI (6/6 tests, artifact uploaded -- see
|
||||
# README), so a missing module here is a regression to fail loudly on, not
|
||||
# the old silent fallback. (This is separate from the macOS packaging gap in
|
||||
# README -- that the module doesn't yet load as an OBS.app bundle -- which
|
||||
# this check does not and cannot test.)
|
||||
ls -la .deps/Frameworks/libobs.framework/Resources/cmake || true
|
||||
if [ ! -f build/package/bin/streamer-tools-camera.so ]; then
|
||||
echo "::error::no plugin module was built -- build/package/bin/streamer-tools-camera.so is missing. The macOS from-source libobs bootstrap is expected to succeed; treat this as a build failure, not a core-library-only fallback."
|
||||
exit 1
|
||||
fi
|
||||
ls -la build/package/bin
|
||||
otool -L build/package/bin/streamer-tools-camera.so
|
||||
otool -L build/package/bin/streamer-tools-camera.so | grep -E 'obs|livekit'
|
||||
Reference in New Issue
Block a user