Skip to content

ci: run the tests again - #231

Merged
johan-bell merged 1 commit into
mainfrom
restore-test-ci
Sep 3, 2026
Merged

ci: run the tests again#231
johan-bell merged 1 commit into
mainfrom
restore-test-ci

Conversation

@johan-bell

Copy link
Copy Markdown
Collaborator

What was actually wrong

The workflows were not disabled — the .github directory was deleted, when the SaaS platform was removed in #161. Actions has been enabled on the repository the whole time; there was simply nothing to run. So this is a restore, not a switch.

Consequence: the entire LGPL migration and the player work were tested only on whichever machine a developer happened to be sitting at.

Why the old one couldn't just be restored

It matrixed over hls and segment-editor — renamed and folded in by #187 — and knew nothing of player-core, player-web or player-web-legacy. Restored verbatim it would have failed on its first run.

It now covers the eight workspaces that have suites, and keeps the declaration check pointed at the five libraries, which is exactly how bccsa/luminary consumes them through the submodule: a library that emits JS but no .d.ts breaks its consumer rather than itself. That matters more than it used to — Luminary's CI now builds these packages, so a break here surfaces over there with nothing to point at.

Verified before proposing

I ran each job's steps from a clean checkout rather than trusting the YAML:

  • npm cibuild:libsbuild:bundled — all clean
  • declaration check — hls-core 12, encode-config 9, player-core 18, player-web 10, player-web-legacy 16
  • every suite in the matrix:
workspace tests
api 1179
app 481
player-core 193
hls-core 134
player-web 96
player-web-legacy 93
encode-config 60
app-electron 16

ELECTRON_SKIP_BINARY_DOWNLOAD=1 is kept: nothing here launches Electron (app-electron's suites cover pure helpers), and that download was the single most common cause of an unrelated red run.

Deliberately not included

ffmpeg-build.yml and windows-installer.yml, which produce binaries. The #200 squash message records that CI was off "as instructed", with a note about the release download counts the patent position rests on — that is a decision someone made on purpose, and reinstating artifact-producing CI is not something to slip into a test-restore PR. Worth a separate conversation with whoever gave that instruction.

CI went out with the SaaS platform in #161 and never came back, so the
whole LGPL migration and the player work were tested only on whichever
machine a developer was sitting at. Nothing was disabled — the directory
was deleted — and Actions has been enabled on the repository throughout.

The old workflow would not have run today: it matrixed over `hls` and
`segment-editor`, which #187 renamed and folded in, and knew nothing of
the three player workspaces. It now covers the eight workspaces that
have suites, and asserts the five libraries emit their declarations,
which is exactly how bccsa/luminary consumes them through the submodule.

Only tests and a clean-checkout build. The workflows that produce
binaries — ffmpeg-build, windows-installer — stay out: those carry the
distribution question the patent position rests on, and reinstating them
is not a decision to make in passing.

Verified locally by running each job's steps from a clean checkout:
build:libs, build:bundled, the declaration check, and all eight suites —
api 1179, app 481, player-core 193, hls-core 134, player-web 96,
player-web-legacy 93, encode-config 60, app-electron 16.
@johan-bell
johan-bell merged commit 6f4fcd9 into main Sep 3, 2026
9 checks passed
@johan-bell
johan-bell deleted the restore-test-ci branch September 3, 2026 20:39
johan-bell added a commit that referenced this pull request Sep 3, 2026
…232)

* ci: one workflows directory, and make the four that were parked run

CI was switched off in #161 by renaming .github to .github.disabled. I
read that as deletion and wrote a fresh tests.yml in #231, so the
repository ended up with both — two tests.yml, one current and one that
would fail on its first run.

Everything now lives in .github/workflows. The parked tests.yml goes:
it matrixes over hls and segment-editor, which #187 renamed and folded
in, and knows nothing of the three player workspaces. The other four
move across, and none of them ran as they stood:

ffmpeg-build asserted libx264 was present in the shipped binary and
encoded its test media with it — the opposite of what this build is. It
now refuses a binary that *has* libx264, checks the banner reports
Lesser, and encodes through h264_videotoolbox on macOS. The Windows
verifier writes no H.264 at all: that runner has no GPU and the build
has no software encoder, so every route is absent by design. It proves
what it can — the filter chain, libwebp, the waveform path — and says
why the rest is answered on real hardware.

pinned-binaries-health pointed at electron/scripts, renamed in #187. Its
script was stale too: check-pinned-urls.mjs still required X264_REPO in
versions.sh, which the LGPL build removed, so it exited non-zero before
checking anything. With the x264 pin dropped it passes — FFmpeg 8.1 and
its signature, libwebp, nv-codec-headers, libvpl all reachable.

download-metrics was two major versions behind on its actions.

Verified: all five parse; check-pinned-urls passes; build:libs and the
app-electron suite still green.

* ci: do not recompile FFmpeg three ways for a workflow edit

The push trigger had no branch filter and listed its own file among the
paths. So a feature branch touching a pin rebuilt every target on every
push — and merging the previous commit, which edits this workflow, would
itself have started a full three-target build for a change that only
corrected the libx264 assertions.

Now: main only, on ffmpeg-build/** alone. Editing the checks is not a
reason to recompile FFmpeg; dispatch a run by hand when it is.

* ci: the installer upload pointed at the old electron/ path

package:win writes to app-electron/release, renamed in #187. The upload
step still named electron/release/*.exe, so the job would have run the
whole cross-build and packaging and then failed on if-no-files-found —
with the installer sitting on the runner, unreachable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant