docs: correct Windows CI record, add release-gating note (C1/C2, I6)
Build / macOS (macos-latest) (push) Successful in 34s
Build / Linux (ubuntu-24.04) (push) Successful in 49s
Build / macOS (macos-latest) (pull_request) Successful in 33s
Build / Linux (ubuntu-24.04) (pull_request) Successful in 1m1s
Build / Windows (windows-latest) (push) Failing after 9m37s
Build / Windows (windows-latest) (pull_request) Failing after 9m27s
Build / macOS (macos-latest) (push) Successful in 34s
Build / Linux (ubuntu-24.04) (push) Successful in 49s
Build / macOS (macos-latest) (pull_request) Successful in 33s
Build / Linux (ubuntu-24.04) (pull_request) Successful in 1m1s
Build / Windows (windows-latest) (push) Failing after 9m37s
Build / Windows (windows-latest) (pull_request) Failing after 9m27s
- I6: README claimed Windows CI status as "Unconfirmed". The actual record as of this review is 6 consecutive Windows CI failures on this branch, all at commits predating the two fixes believed to address it (the -A x64 argument fix and the PowerShell rewrite of the Windows steps). No completed run yet exercises either fix -- the runner's serial queue means commits with the fixes were still waiting behind older failing commits at the time of writing. Corrected the Status section, the CI summary table, and rewrote "Where the Windows bootstrap got to" to state this plainly instead of overstating progress. - C1/C2 (not resolved here, gating language only): added a prominent note to the README's top-level Status section stating that release/distribution of built binaries is blocked pending explicit owner sign-off on the WebRTC/OpenH264 attribution question and the GPLv2 LICENSE vs. Apache-2.0-linked-code compatibility question, pointing at third_party/livekit/README.md where the details already live. Checked .gitea/workflows/build.yml: it has no release-triggered publish step today (only actions/upload-artifact, which is CI-internal, not public distribution), so nothing currently needs blocking -- added a comment at the top of the workflow noting the gate so any future release/publish step is written with it in mind. Also corrected a stale test-count in README (test_api_client: 121 -> 127 checks, reflecting the new tests added in the prior commit). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
This commit is contained in:
@@ -9,6 +9,15 @@ name: Build
|
|||||||
# bootstrap (buildspec.json + cmake/common/buildspec_common.cmake), which
|
# bootstrap (buildspec.json + cmake/common/buildspec_common.cmake), which
|
||||||
# downloads the pinned obs-deps bundle and obs-studio source and builds just
|
# downloads the pinned obs-deps bundle and obs-studio source and builds just
|
||||||
# `libobs`. That step is the slow one: several minutes on a cold runner.
|
# `libobs`. That step is the slow one: several minutes on a cold runner.
|
||||||
|
#
|
||||||
|
# RELEASE GATE: this workflow only builds, tests, and uploads CI-internal
|
||||||
|
# workflow artifacts (actions/upload-artifact, below) -- it does not create a
|
||||||
|
# Gitea Release, push a tag-triggered publish, or otherwise distribute
|
||||||
|
# binaries publicly, and it must not start doing so without explicit owner
|
||||||
|
# sign-off on the WebRTC/OpenH264 attribution and GPLv2/Apache-2.0
|
||||||
|
# license-compatibility questions tracked in third_party/livekit/README.md
|
||||||
|
# and the README's top-level Status section. If a real release/publish step
|
||||||
|
# is ever added here, it must carry that same gate.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|||||||
@@ -8,6 +8,20 @@ Media-Source path for directors. Full design:
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
**Release/distribution of built binaries is blocked pending owner sign-off.**
|
||||||
|
This plugin statically/dynamically pulls in Google WebRTC and OpenH264 code
|
||||||
|
through the LiveKit SDK, and this repository's own top-level `LICENSE` is
|
||||||
|
GPLv2 while the vendored LiveKit binaries are Apache-2.0 — both a real patent/
|
||||||
|
royalty question (OpenH264/WebRTC) and a real license-compatibility question
|
||||||
|
(GPLv2 vs. Apache-2.0-linked code) that only the project owner can decide.
|
||||||
|
Nothing in this repo should be built into a package and handed out, posted,
|
||||||
|
or attached to a public release until that sign-off happens. See
|
||||||
|
`third_party/livekit/README.md` for the specifics of what is and is not
|
||||||
|
currently known/shipped on the licensing side. (CI in `.gitea/workflows/build.yml`
|
||||||
|
currently only builds, tests, and uploads CI-internal build artifacts — it
|
||||||
|
does not create a Gitea Release or otherwise publish anything publicly; if
|
||||||
|
that ever changes, the new step must carry this same gate.)
|
||||||
|
|
||||||
The plugin is **functionally complete on Linux and verified end to end there**
|
The plugin is **functionally complete on Linux and verified end to end there**
|
||||||
(module loads into real libobs, connects to a real LiveKit server through the
|
(module loads into real libobs, connects to a real LiveKit server through the
|
||||||
real streamer-tools API shape, and pushes decoded frames into
|
real streamer-tools API shape, and pushes decoded frames into
|
||||||
@@ -15,7 +29,13 @@ real streamer-tools API shape, and pushes decoded frames into
|
|||||||
|
|
||||||
It has **not been run in the OBS GUI on any platform.** macOS builds the real
|
It has **not been run in the OBS GUI on any platform.** macOS builds the real
|
||||||
module in CI but its artifact is not yet loadable (see the macOS packaging gap
|
module in CI but its artifact is not yet loadable (see the macOS packaging gap
|
||||||
under CI). Windows has not yet completed a build with the current fixes.
|
under CI). Windows CI has **failed on every completed run so far** (7
|
||||||
|
consecutive failures on this branch as of this writing); a run against the
|
||||||
|
commit with the `-A x64` argument fix is in progress but not yet complete,
|
||||||
|
and the commit with the PowerShell rewrite of the Windows steps is still
|
||||||
|
queued behind it. Neither fix has a completed, passing run yet. See "Where
|
||||||
|
the Windows bootstrap got to" under CI below for the exact record, and check
|
||||||
|
current CI status rather than trusting this paragraph's age.
|
||||||
|
|
||||||
See "What is verified, and how" below for exactly what has and has not been
|
See "What is verified, and how" below for exactly what has and has not been
|
||||||
checked, and "Testing this by hand" for what a human still needs to do.
|
checked, and "Testing this by hand" for what a human still needs to do.
|
||||||
@@ -173,7 +193,7 @@ livekit-server 1.13.6 in dev mode):
|
|||||||
|---|---|
|
|---|---|
|
||||||
| The pinned LiveKit SDK links and is callable | `test_livekit_smoke`: `initialize()`/`shutdown()` round-trip, header version asserted equal to the CMake pin |
|
| The pinned LiveKit SDK links and is callable | `test_livekit_smoke`: `initialize()`/`shutdown()` round-trip, header version asserted equal to the CMake pin |
|
||||||
| The JSON reader handles real and hostile input | `test_json`, 158 checks, including truncated bodies, HTML error pages, binary garbage, lone surrogates, and a depth-limit case |
|
| The JSON reader handles real and hostile input | `test_json`, 158 checks, including truncated bodies, HTML error pages, binary garbage, lone surrogates, and a depth-limit case |
|
||||||
| The API client parses the real response shapes and every error branch | `test_api_client`, 121 checks, against a fake HTTP client **and** a real loopback HTTP server driving the actual platform backend |
|
| The API client parses the real response shapes and every error branch | `test_api_client`, 127 checks, against a fake HTTP client **and** a real loopback HTTP server driving the actual platform backend |
|
||||||
| A dead/stalled/garbage server cannot hang or crash the plugin | loopback cases: truncated JSON, connection closed with no reply, non-HTTP bytes, dead port, stalled server cut off by the client timeout |
|
| A dead/stalled/garbage server cannot hang or crash the plugin | loopback cases: truncated JSON, connection closed with no reply, non-HTTP bytes, dead port, stalled server cut off by the client timeout |
|
||||||
| Session state transitions, track selection, frame geometry | `test_session`, 81 checks, plus real `connect()` failures against the real SDK |
|
| Session state transitions, track selection, frame geometry | `test_session`, 81 checks, plus real `connect()` failures against the real SDK |
|
||||||
| **Media actually flows** | `test_integration_livekit` against a real LiveKit server: 36 video frames + 323 audio frames, correct I420 geometry and plane pointers, publisher unpublish → `hasVideo()` false with **no further frames from the dead publisher**, republish → video resumes |
|
| **Media actually flows** | `test_integration_livekit` against a real LiveKit server: 36 video frames + 323 audio frames, correct I420 geometry and plane pointers, publisher unpublish → `hasVideo()` false with **no further frames from the dead publisher**, republish → video resumes |
|
||||||
@@ -208,7 +228,7 @@ runners available to this repo under the `CyberCoveLLC` org.
|
|||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `linux` | `ubuntu-24.04` | `localhost.localdomain` | **Green.** Builds the real adapter against Ubuntu's libobs-dev 30.0.2, runs all six test suites, uploads `build/package` as an artifact |
|
| `linux` | `ubuntu-24.04` | `localhost.localdomain` | **Green.** Builds the real adapter against Ubuntu's libobs-dev 30.0.2, runs all six test suites, uploads `build/package` as an artifact |
|
||||||
| `macos` | `macos-latest` | `home-mac` (Global) | **Green.** Builds libobs 30.0.2 from source, then the real adapter; 6/6 tests; artifact uploaded. But see the macOS packaging gap below |
|
| `macos` | `macos-latest` | `home-mac` (Global) | **Green.** Builds libobs 30.0.2 from source, then the real adapter; 6/6 tests; artifact uploaded. But see the macOS packaging gap below |
|
||||||
| `windows` | `windows-latest` | `winvm-builder` (org-scoped) | **Unconfirmed** — see below |
|
| `windows` | `windows-latest` | `winvm-builder` (org-scoped) | **Failing** — 7/7 completed runs on this branch have failed; see below |
|
||||||
|
|
||||||
The Linux job is pinned to `ubuntu-24.04` rather than `ubuntu-latest`: this
|
The Linux job is pinned to `ubuntu-24.04` rather than `ubuntu-latest`: this
|
||||||
instance's two Linux runners answer `ubuntu-latest` with different releases,
|
instance's two Linux runners answer `ubuntu-latest` with different releases,
|
||||||
@@ -282,20 +302,39 @@ attempted here rather than guessed at.
|
|||||||
|
|
||||||
Windows is by far the slowest job — the `lukka/get-cmake` step alone takes
|
Windows is by far the slowest job — the `lukka/get-cmake` step alone takes
|
||||||
7-15 minutes on `winvm-builder`, and the runner serialises jobs, so a burst of
|
7-15 minutes on `winvm-builder`, and the runner serialises jobs, so a burst of
|
||||||
pushes leaves a queue that takes an hour to drain. One confirmed bug of its
|
pushes leaves a queue that takes an hour to drain.
|
||||||
own was found and fixed: upstream passes `-A x64,version=<Windows SDK>` to the
|
|
||||||
OBS sub-configure, and with a current CMake that `,version=` suffix reappears
|
|
||||||
verbatim in the sub-build's `CMAKE_VS_PLATFORM_NAME` — which obs-studio's own
|
|
||||||
dependency downloader uses as the architecture, sending it after
|
|
||||||
`windows-deps-2023-11-03-x64,version=10.0.26100.0.zip`:
|
|
||||||
|
|
||||||
```
|
**The honest record: every completed Windows CI run on this branch has
|
||||||
string sub-command JSON member 'hashes windows-x64,version=10.0.26100.0' not found
|
failed. 7 consecutive failures**, at the 7 branch commits (in order) that had
|
||||||
Unable to download .../windows-deps-2023-11-03-x64,version=10.0.26100.0.zip
|
a completed Windows run as of this writing -- all of them at commits before
|
||||||
```
|
the `-A x64` fix below was applied. As of this writing, a Windows run against
|
||||||
|
the commit with that fix is in progress but has not yet completed, and the
|
||||||
|
commit with the PowerShell rewrite is still queued behind it (the runner's
|
||||||
|
serial queue means fixed commits can sit behind older, unfixed ones for a
|
||||||
|
while). Do not read either fix below as "confirmed" until a Windows run
|
||||||
|
actually goes green on a commit that includes it; check current CI status
|
||||||
|
rather than trusting this paragraph's age.
|
||||||
|
|
||||||
Plain `-A x64` now. **No Windows run has yet completed with that fix in
|
Two bugs of its own were found and (believed, not yet proven) fixed:
|
||||||
place**, so Windows should be treated as unverified beyond "the core library
|
|
||||||
and the WinHTTP backend compile and their tests pass", which earlier runs did
|
1. Upstream passes `-A x64,version=<Windows SDK>` to the OBS sub-configure,
|
||||||
show. Expect further iterations there of the same kind the macOS bootstrap
|
and with a current CMake that `,version=` suffix reappears verbatim in the
|
||||||
needed.
|
sub-build's `CMAKE_VS_PLATFORM_NAME` — which obs-studio's own dependency
|
||||||
|
downloader uses as the architecture, sending it after
|
||||||
|
`windows-deps-2023-11-03-x64,version=10.0.26100.0.zip`:
|
||||||
|
|
||||||
|
```
|
||||||
|
string sub-command JSON member 'hashes windows-x64,version=10.0.26100.0' not found
|
||||||
|
Unable to download .../windows-deps-2023-11-03-x64,version=10.0.26100.0.zip
|
||||||
|
```
|
||||||
|
|
||||||
|
Plain `-A x64` now.
|
||||||
|
2. The Windows CI steps were originally written in bash (via
|
||||||
|
`shell: bash`), which is a poor fit for a `windows-latest` runner's
|
||||||
|
default toolchain expectations; they were rewritten in PowerShell.
|
||||||
|
|
||||||
|
Until a Windows run completes green with both fixes in place, Windows should
|
||||||
|
be treated as unverified beyond "the core library and the WinHTTP backend
|
||||||
|
compile and their tests pass", which earlier (failing-job) runs did show
|
||||||
|
before failing later in the job. Expect further iterations there of the same
|
||||||
|
kind the macOS bootstrap needed.
|
||||||
|
|||||||
Reference in New Issue
Block a user