@norskvideo/ctl-dev-kit 0.2.87 → 0.2.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -101,6 +101,21 @@ On 2026-10-02 a reuters tier and a commentary tier each `compose up`ed
|
|
|
101
101
|
port (bound inside the runner container, so not shared). In `direct` reach
|
|
102
102
|
mode with `--internal-only` the studio port is not published at all.
|
|
103
103
|
|
|
104
|
+
### One suite per host
|
|
105
|
+
|
|
106
|
+
Names can be made unique; CPU cannot. A runner container is pinned to its own
|
|
107
|
+
cores, but the media containers its suite launches are host siblings and run
|
|
108
|
+
anywhere, so two suites on one host starve each other's engines. On 2026-10-15/16
|
|
109
|
+
commentary's timing tests (ears, realtime drift, soak preview) failed in 10 of the
|
|
110
|
+
12 test2 runs that overlapped another suite, most often a second commentary run on
|
|
111
|
+
the other runner. The canonical `integration.yml` therefore runs its suite under
|
|
112
|
+
an `flock` on `/srv/ci-scratch/locks/norsk-ctl-integration.lock`:
|
|
113
|
+
`/srv/ci-scratch` is bind-mounted at that path into every jankings runner on a
|
|
114
|
+
host, so the file is shared by that host's runners and by no other host's. A
|
|
115
|
+
runner without the mount runs unserialised and says so in the log; a suite that
|
|
116
|
+
has waited an hour runs anyway with a warning. A hand-owned `integration.yml`
|
|
117
|
+
does not take the lock until it converges onto the canonical.
|
|
118
|
+
|
|
104
119
|
## Reaching an image product's control plane
|
|
105
120
|
|
|
106
121
|
`product add --image` loopback-publishes the control plane on a
|
|
@@ -430,7 +430,34 @@ jobs:
|
|
|
430
430
|
fi
|
|
431
431
|
'
|
|
432
432
|
}
|
|
433
|
-
suite
|
|
433
|
+
# One suite per HOST. A host's runners are sibling containers on one
|
|
434
|
+
# docker daemon, and the media containers a suite launches are not
|
|
435
|
+
# confined to its runner's cpuset, so two suites side by side starve
|
|
436
|
+
# each other's engines: on 2026-10-15/16 commentary's timing tests
|
|
437
|
+
# failed in 10 of the 12 test2 runs that overlapped another suite on the
|
|
438
|
+
# other runner, mostly commentary against itself, which a per-repo
|
|
439
|
+
# concurrency group cannot stop without dropping a queued candidate.
|
|
440
|
+
# /srv/ci-scratch is bind-mounted at that path into every runner on a
|
|
441
|
+
# jankings host, so an flock there is the host's mutex; the kernel
|
|
442
|
+
# drops it when this shell exits, however the job ends. Children close
|
|
443
|
+
# fd 9 so a straggler cannot hold the host after the step. After an
|
|
444
|
+
# hour the suite runs anyway, warned, rather than miss its result.
|
|
445
|
+
# integration-host-lock.test.ts.
|
|
446
|
+
if [ -d /srv/ci-scratch ] && [ -w /srv/ci-scratch ]; then
|
|
447
|
+
lock=/srv/ci-scratch/locks/norsk-ctl-integration.lock
|
|
448
|
+
mkdir -p "${lock%/*}"
|
|
449
|
+
exec 9>>"$lock"
|
|
450
|
+
echo "waiting for this host's integration lock ($lock)"
|
|
451
|
+
waited=$SECONDS
|
|
452
|
+
if flock -w 3600 9; then
|
|
453
|
+
echo "holding this host's integration lock after $((SECONDS - waited))s"
|
|
454
|
+
else
|
|
455
|
+
echo "::warning title=integration ran unserialised::waited an hour for $lock on $(hostname); timing-sensitive tests may fail for a reason that is not theirs"
|
|
456
|
+
fi
|
|
457
|
+
else
|
|
458
|
+
echo "no writable /srv/ci-scratch on this runner: the suite runs without the host lock"
|
|
459
|
+
fi
|
|
460
|
+
suite 9>&- 2>&1 | tee "$RUNNER_TEMP/integration.log"
|
|
434
461
|
|
|
435
462
|
# The log AND the harness evidence. Playwright and the harness write
|
|
436
463
|
# screenshots, traces and captured container logs under test-results/;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@norskvideo/ctl-dev-kit",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.89",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./create-product": "./create-product/create-product.ts",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@norskvideo/ctl-oas-to-ts": "^0.1.0",
|
|
42
42
|
"@norskvideo/norsk-sdk": "1.3.1-2026-10-16-e43e0f90",
|
|
43
|
-
"@norskvideo/norsk-studio": "1.30.0-2026-10-
|
|
44
|
-
"@norskvideo/norsk-studio-builder": "1.30.0-2026-10-
|
|
45
|
-
"@norskvideo/norsk-studio-built-ins": "1.30.0-2026-10-
|
|
43
|
+
"@norskvideo/norsk-studio": "1.30.0-2026-10-17-4468cc12",
|
|
44
|
+
"@norskvideo/norsk-studio-builder": "1.30.0-2026-10-17-4468cc12",
|
|
45
|
+
"@norskvideo/norsk-studio-built-ins": "1.30.0-2026-10-17-4468cc12",
|
|
46
46
|
"@playwright/test": "^1.59.0",
|
|
47
47
|
"@testing-library/jest-dom": "^6.9.1",
|
|
48
48
|
"@testing-library/react": "^16.3.2",
|