@norskvideo/ctl-dev-kit 0.2.16 → 0.2.18
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.
|
@@ -178,6 +178,39 @@ jobs:
|
|
|
178
178
|
echo "NORSK_RUNNER_OWNS_DOCKER=true" >> "$GITHUB_ENV"
|
|
179
179
|
fi
|
|
180
180
|
|
|
181
|
+
# Integration needs this host's docker to be able to create a network: the
|
|
182
|
+
# harness makes norsk-net and a network per instance. On 2026-10-02
|
|
183
|
+
# ashton-nuc's filter table had lost DOCKER-ISOLATION-STAGE-2, so every
|
|
184
|
+
# create failed with "Chain 'DOCKER-ISOLATION-STAGE-2' does not exist" --
|
|
185
|
+
# and commentary, probe and playout each ran a FULL integration suite on it
|
|
186
|
+
# and reported the result as test failures, 18 and 72 chain errors deep in
|
|
187
|
+
# their logs. The same host took four of that night's norsk image jobs down
|
|
188
|
+
# the same way. Nothing said "this machine's docker is broken".
|
|
189
|
+
#
|
|
190
|
+
# The chain is not readable without root on these runners, so this asserts
|
|
191
|
+
# the capability instead: create a throwaway network, remove it. One step,
|
|
192
|
+
# its own name, so the jobs API attributes the failure to it rather than to
|
|
193
|
+
# whatever composite step happened to be running.
|
|
194
|
+
- name: Check this host's docker can still create a network
|
|
195
|
+
run: |
|
|
196
|
+
set -uo pipefail
|
|
197
|
+
net="preflight-${{ github.run_id }}-${{ github.run_attempt }}-$RANDOM"
|
|
198
|
+
if err=$(docker network create "$net" 2>&1); then
|
|
199
|
+
docker network rm "$net" >/dev/null 2>&1 || true
|
|
200
|
+
echo "docker can create networks on $(hostname) -- ok"
|
|
201
|
+
exit 0
|
|
202
|
+
fi
|
|
203
|
+
echo "::error::docker on this runner cannot create a network, so every container this suite starts would silently not exist -- the tests would fail for a reason that is not theirs. Host: $(hostname). Fix: \`sudo systemctl restart docker\` on that machine (it rebuilds the DOCKER/DOCKER-ISOLATION iptables chains), then re-run."
|
|
204
|
+
echo "$err"
|
|
205
|
+
echo "--- docker0 (a subnet other than 172.17.0.1/16 means it was re-addressed) ---"
|
|
206
|
+
ip -br addr show docker0 2>/dev/null || true
|
|
207
|
+
echo "--- networks and their subnets ---"
|
|
208
|
+
for n in $(docker network ls --format '{{.Name}}' 2>/dev/null); do
|
|
209
|
+
printf '%-28s ' "$n"
|
|
210
|
+
docker network inspect "$n" --format '{{range .IPAM.Config}}{{.Subnet}} {{end}}' 2>/dev/null || echo
|
|
211
|
+
done
|
|
212
|
+
exit 1
|
|
213
|
+
|
|
181
214
|
# `product add --image` publishes the control plane on 127.0.0.1:14321. The
|
|
182
215
|
# daemon means to reap it on shutdown (daemon.ts, model B) but only does so
|
|
183
216
|
# gracefully, and this workflow cancels its own superseded runs -- a killed
|
|
@@ -134,6 +134,30 @@ jobs:
|
|
|
134
134
|
changed=1
|
|
135
135
|
parts+=("media \`$new_media\`")
|
|
136
136
|
fi
|
|
137
|
+
# The rewrite above is a LITERAL replace of the value found in
|
|
138
|
+
# manifest.seed.json, so it only ever touches pins that already equal the
|
|
139
|
+
# seed. A pin that has drifted off it -- a hand edit, a merge, a
|
|
140
|
+
# half-finished run -- is invisible to this bump and to every later one,
|
|
141
|
+
# permanently, while the job still reports success. funke launched a
|
|
142
|
+
# 2026-09-30 engine against 2026-09-05 npm pins for a month that way;
|
|
143
|
+
# playout and probe sat two months back on 1.1.0-2026-08-02. The whole
|
|
144
|
+
# point of the family is that ONE version string drives it, so a
|
|
145
|
+
# divergent pin is a defect and the only thing missing was someone
|
|
146
|
+
# saying so.
|
|
147
|
+
#
|
|
148
|
+
# Not auto-rewritten: a pin held back on purpose is someone's decision,
|
|
149
|
+
# and silently moving it would be the same class of surprise in the
|
|
150
|
+
# other direction. Fail, name them, and let a human fix the pin or the
|
|
151
|
+
# intent.
|
|
152
|
+
stranded="$(git grep -hoE '"@norskvideo/norsk-(api|sdk|auto-manager|manager-sdk)"[[:space:]]*:[[:space:]]*"[0-9]+\.[0-9]+\.[0-9]+-[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9a-f]+"' -- '*package.json' \
|
|
153
|
+
| sed -E 's/.*"([^"]+)"$/\1/' | sort -u | grep -vxF "$new_media" || true)"
|
|
154
|
+
if [ -n "$stranded" ]; then
|
|
155
|
+
echo "::error::npm norsk pins are stranded off the nightly channel: $(printf '%s' "$stranded" | tr '\n' ' ')"
|
|
156
|
+
echo "The media family (api, sdk, auto-manager, manager-sdk) and the launched image are built from the same"
|
|
157
|
+
echo "commit, so every pin must read $new_media. These do not, and because the rewrite above is a literal"
|
|
158
|
+
echo "replace of the seed value, no later bump can reach them either. Set them to $new_media."
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
137
161
|
|
|
138
162
|
# STUDIO: unlike media, Norsk builds the studio npm packages and the
|
|
139
163
|
# studio Docker image from DIFFERENT commits — their hash suffixes never
|