@norskvideo/ctl-dev-kit 0.1.63 → 0.1.64

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.
@@ -88,13 +88,37 @@ jobs:
88
88
  echo "NORSK_TEST_HOST=host.docker.internal" >> "$GITHUB_ENV"
89
89
  echo "NORSK_NET_REACH=direct" >> "$GITHUB_ENV"
90
90
  echo "NORSK_CTL_PRODUCT_REACH=container-address" >> "$GITHUB_ENV"
91
+ echo "NORSK_RUNNER_OWNS_DOCKER=false" >> "$GITHUB_ENV"
91
92
  else
92
93
  echo "TOPO: hostname is not a container -> runner is host-based"
93
94
  echo "NORSK_TEST_HOST=localhost" >> "$GITHUB_ENV"
94
95
  echo "NORSK_NET_REACH=publish" >> "$GITHUB_ENV"
95
96
  echo "NORSK_CTL_PRODUCT_REACH=host" >> "$GITHUB_ENV"
97
+ echo "NORSK_RUNNER_OWNS_DOCKER=true" >> "$GITHUB_ENV"
96
98
  fi
97
99
 
100
+ # `product add --image` publishes the control plane on 127.0.0.1:14321 and
101
+ # the container is a singleton that outlives its daemon, so a job killed
102
+ # after registering -- this workflow cancels its own superseded runs --
103
+ # strands it holding the port and every later job here fails to bind. One
104
+ # leaked on 2026-08-30 and took out the next nine smoke and integration
105
+ # jobs across four repos before a human cleared it. The harness teardown
106
+ # closes the clean-exit half; nothing but this can heal a runner that is
107
+ # already poisoned, because a SIGKILLed job runs no teardown.
108
+ #
109
+ # Gated on the daemon being this runner's own. The GPU box runs several
110
+ # runners as sibling CONTAINERS against one host daemon, where a blanket
111
+ # reap would kill a concurrent job's control plane.
112
+ - name: Reap a stranded product control plane
113
+ if: ${{ env.NORSK_RUNNER_OWNS_DOCKER == 'true' }}
114
+ run: |
115
+ set -uo pipefail
116
+ stale="$(docker ps -aq --filter 'name=^norsk-product-')"
117
+ [ -n "$stale" ] || { echo "no stranded control plane"; exit 0; }
118
+ echo "::warning::reaping a stranded product control plane -- a previous job did not tear its own down"
119
+ docker inspect --format '{{.Name}} {{.State.Status}} {{.Config.Image}}' $stale || true
120
+ docker rm -f $stale || true
121
+
98
122
  - name: Write the Norsk license (from the org secret)
99
123
  env:
100
124
  NORSK_LICENSE_V2: ${{ secrets.NORSK_LICENSE_V2 }}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/ctl-dev-kit",
3
- "version": "0.1.63",
3
+ "version": "0.1.64",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./create-product": "./create-product/create-product.ts",