hammerkit 2.0.0-next.5 → 2.0.0-next.6

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.
Files changed (38) hide show
  1. package/dist/cache/explain.js +7 -5
  2. package/dist/dashboard/assets/graph-canvas-DLioOiRN.css +1 -0
  3. package/dist/dashboard/assets/graph-canvas-HmkW_-XJ.js +8 -0
  4. package/dist/dashboard/assets/index-gIBDC_m8.css +2 -0
  5. package/dist/dashboard/assets/index-vE22S5E_.js +17 -0
  6. package/dist/dashboard/index.html +2 -2
  7. package/dist/executer/docker-task.js +3 -0
  8. package/dist/executer/execute-work-task.js +3 -1
  9. package/dist/executer/local-task.js +3 -0
  10. package/dist/executer/scheduler/enqueue-next.js +6 -1
  11. package/dist/executer/scheduler/state-key.js +71 -34
  12. package/dist/executer/watch-loop.js +18 -5
  13. package/dist/file/get-file-context.js +5 -1
  14. package/dist/kubernetes/claim-layout.js +10 -1
  15. package/dist/kubernetes/ensure-persistent-data.js +45 -5
  16. package/dist/kubernetes/follow-pod-logs.js +124 -27
  17. package/dist/kubernetes/network-policy.js +4 -4
  18. package/dist/kubernetes/restore-kubernetes-data.js +3 -1
  19. package/dist/kubernetes/store-kubernetes-data.js +3 -1
  20. package/dist/kubernetes/volumes.js +6 -6
  21. package/dist/optimizer/calculate-checksum.js +46 -3
  22. package/dist/optimizer/get-work-cache-stats.js +36 -24
  23. package/dist/planner/work-item-executions.js +27 -0
  24. package/dist/planner/work-runtime-kubernetes.js +33 -38
  25. package/dist/server/capacity.js +63 -0
  26. package/dist/server/dashboard.js +2 -2
  27. package/dist/server/executor.js +10 -0
  28. package/dist/server/overview.js +42 -9
  29. package/dist/server/plan.js +16 -3
  30. package/dist/server/policy.js +9 -3
  31. package/dist/server/run-worker.js +37 -4
  32. package/dist/server/runs.js +49 -4
  33. package/dist/server/server-config.js +4 -1
  34. package/dist/server/server.js +10 -7
  35. package/dist/utils/limit.js +30 -0
  36. package/package.json +1 -1
  37. package/dist/dashboard/assets/index-D51NA6-h.js +0 -14
  38. package/dist/dashboard/assets/index-mmvC6u9O.css +0 -2
@@ -129,7 +129,7 @@ async function handleRuns(config, registry, definitions, sources, sandboxes, pla
129
129
  }
130
130
  const runs = filter.scope === 'mine' ? registry.list(principal) : registry.all();
131
131
  (0, http_2.send)(res, 200, {
132
- runs: (0, overview_1.filterRuns)(runs, viewer, filter).map((run) => listRun(registry, viewer, run)),
132
+ runs: (0, overview_1.filterRuns)(runs, viewer, filter).map((run) => listRun(registry, definitions, viewer, run)),
133
133
  });
134
134
  }
135
135
  else if (method === 'POST') {
@@ -228,7 +228,7 @@ async function handleRuns(config, registry, definitions, sources, sandboxes, pla
228
228
  const may = run && (0, overview_1.runActions)(viewer, run);
229
229
  run
230
230
  ? (0, http_2.send)(res, 200, {
231
- ...toRunResponse(run, (0, overview_1.queuePlace)(registry, viewer, run), !(0, overview_1.owns)(viewer, run)),
231
+ ...toRunResponse(run, (0, overview_1.queuePlace)(registry, viewer, run), !(0, overview_1.owns)(viewer, run), viewer.nameOf),
232
232
  ...(may ? { may } : {}),
233
233
  })
234
234
  : (0, http_2.send)(res, 404, { error: 'not found' });
@@ -322,18 +322,21 @@ function runsTheSame(run, next) {
322
322
  }
323
323
  exports.runsTheSame = runsTheSame;
324
324
  // A run whole, for its owner and who may read it; who is not its owner is told whose it is.
325
- function toRunResponse(run, queue, named = false) {
325
+ function toRunResponse(run, queue, named = false, nameOf) {
326
326
  const { owner, ...visible } = run;
327
+ const name = owner.name ?? nameOf?.(owner);
327
328
  return {
328
329
  ...visible,
329
- ...(named ? { owner: { iss: owner.iss, sub: owner.sub, ...(owner.name ? { name: owner.name } : {}) } } : {}),
330
+ ...(named ? { owner: { iss: owner.iss, sub: owner.sub, ...(name ? { name } : {}) } } : {}),
330
331
  results: run.results ?? {},
331
332
  ...(queue ? { queue } : {}),
332
333
  };
333
334
  }
334
- function listRun(registry, viewer, run) {
335
- return (0, overview_1.toListedRun)(viewer, run, (0, overview_1.queuePlace)(registry, viewer, run));
335
+ function listRun(registry, definitions, viewer, run) {
336
+ return (0, overview_1.toListedRun)(viewer, run, (0, overview_1.queuePlace)(registry, viewer, run), entryOf(definitions));
336
337
  }
338
+ // where in its repository the build file of a version is
339
+ const entryOf = (definitions) => (definition) => definitions.find(definition)?.entry;
337
340
  async function submitRun(config, registry, definitions, sources, sandboxes, planning, repos, endpointUrl, log, principal, req, res) {
338
341
  const parsed = run_request_1.runRequestSchema.safeParse(await (0, http_2.readJson)(req));
339
342
  if (!parsed.success) {
@@ -697,7 +700,7 @@ async function handleApi(api, principal, req, res, url) {
697
700
  (0, http_2.send)(res, 403, { error: 'you are not entitled to anything on this server' });
698
701
  return;
699
702
  }
700
- (0, http_2.send)(res, 200, (0, overview_1.getOverview)(registry.snapshot(), registry.usage(principal), viewer));
703
+ (0, http_2.send)(res, 200, (0, overview_1.getOverview)(registry.snapshot(), registry.usage(principal), viewer, entryOf(definitions)));
701
704
  return;
702
705
  }
703
706
  if (path === '/v1/capacity' || path === '/v1/tasks') {
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLimit = void 0;
4
+ function createLimit(concurrency) {
5
+ let running = 0;
6
+ const waiting = [];
7
+ return async (fn) => {
8
+ if (running >= concurrency) {
9
+ await new Promise((resolve) => waiting.push(resolve));
10
+ }
11
+ else {
12
+ running++;
13
+ }
14
+ try {
15
+ return await fn();
16
+ }
17
+ finally {
18
+ const next = waiting.shift();
19
+ if (next) {
20
+ // the slot goes to the next one as it is
21
+ next();
22
+ }
23
+ else {
24
+ running--;
25
+ }
26
+ }
27
+ };
28
+ }
29
+ exports.createLimit = createLimit;
30
+ //# sourceMappingURL=limit.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hammerkit",
3
3
  "description": "Containerized build tool with incremental caching that runs the same build file locally, in Docker and on Kubernetes.",
4
- "version": "2.0.0-next.5",
4
+ "version": "2.0.0-next.6",
5
5
  "keywords": [
6
6
  "build",
7
7
  "build-tool",