@cat-factory/integrations 0.34.1 → 0.35.0
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.
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.d.ts +38 -40
- package/dist/modules/environments/EnvironmentConnectionService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.js +106 -114
- package/dist/modules/environments/EnvironmentConnectionService.js.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts +15 -6
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.js +21 -7
- package/dist/modules/environments/EnvironmentProvisioningService.js.map +1 -1
- package/dist/modules/environments/EnvironmentTeardownService.d.ts +0 -2
- package/dist/modules/environments/EnvironmentTeardownService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentTeardownService.js +5 -5
- package/dist/modules/environments/EnvironmentTeardownService.js.map +1 -1
- package/dist/modules/environments/HttpEnvironmentProvider.js +1 -1
- package/dist/modules/environments/HttpEnvironmentProvider.js.map +1 -1
- package/dist/modules/environments/environment-backends.d.ts +53 -0
- package/dist/modules/environments/environment-backends.d.ts.map +1 -0
- package/dist/modules/environments/environment-backends.js +101 -0
- package/dist/modules/environments/environment-backends.js.map +1 -0
- package/dist/modules/environments/environments.logic.d.ts +5 -1
- package/dist/modules/environments/environments.logic.d.ts.map +1 -1
- package/dist/modules/environments/environments.logic.js +24 -0
- package/dist/modules/environments/environments.logic.js.map +1 -1
- package/dist/modules/kubernetes/KubernetesApiClient.d.ts +27 -0
- package/dist/modules/kubernetes/KubernetesApiClient.d.ts.map +1 -0
- package/dist/modules/kubernetes/KubernetesApiClient.js +77 -0
- package/dist/modules/kubernetes/KubernetesApiClient.js.map +1 -0
- package/dist/modules/kubernetes/KubernetesEnvironmentProvider.d.ts +33 -0
- package/dist/modules/kubernetes/KubernetesEnvironmentProvider.d.ts.map +1 -0
- package/dist/modules/kubernetes/KubernetesEnvironmentProvider.js +250 -0
- package/dist/modules/kubernetes/KubernetesEnvironmentProvider.js.map +1 -0
- package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts +1 -13
- package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts.map +1 -1
- package/dist/modules/kubernetes/KubernetesRunnerTransport.js +6 -69
- package/dist/modules/kubernetes/KubernetesRunnerTransport.js.map +1 -1
- package/dist/modules/kubernetes/kubernetes-environment.logic.d.ts +68 -0
- package/dist/modules/kubernetes/kubernetes-environment.logic.d.ts.map +1 -0
- package/dist/modules/kubernetes/kubernetes-environment.logic.js +189 -0
- package/dist/modules/kubernetes/kubernetes-environment.logic.js.map +1 -0
- package/dist/modules/kubernetes/kubernetes.logic.d.ts +14 -2
- package/dist/modules/kubernetes/kubernetes.logic.d.ts.map +1 -1
- package/dist/modules/kubernetes/kubernetes.logic.js +45 -12
- package/dist/modules/kubernetes/kubernetes.logic.js.map +1 -1
- package/dist/modules/runners/runner-backends.d.ts.map +1 -1
- package/dist/modules/runners/runner-backends.js +3 -2
- package/dist/modules/runners/runner-backends.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { parseAllDocuments } from 'yaml';
|
|
2
|
+
import { apiBase, k8sName, labelValue } from './kubernetes.logic.js';
|
|
3
|
+
// Pure helpers for the native Kubernetes ENVIRONMENT backend: parse the operator's
|
|
4
|
+
// per-PR config off the stored manifest's `providerConfig`, render the namespace +
|
|
5
|
+
// templated manifests, map a (group/version/)kind onto its apiserver resource path,
|
|
6
|
+
// and derive the environment URL. No I/O — the provider does the apiserver fetches.
|
|
7
|
+
/** The label key stamped on the namespace + applied resources, carrying the run/block id. */
|
|
8
|
+
export const ENV_BLOCK_LABEL = 'cat-factory.blockId';
|
|
9
|
+
/** The owning-prefix for the per-PR namespace. */
|
|
10
|
+
export const ENV_NAMESPACE_PREFIX = 'cf-env-';
|
|
11
|
+
/**
|
|
12
|
+
* Built-in allow-list mapping a manifest `kind` → its apiserver plural + scope. An
|
|
13
|
+
* unlisted kind is rejected (a clear error beats a guessed/incorrect resource path).
|
|
14
|
+
* The group/version come from each resource's own `apiVersion`, so any API group is
|
|
15
|
+
* supported as long as the kind's plural is known here.
|
|
16
|
+
*/
|
|
17
|
+
const RESOURCE_KINDS = {
|
|
18
|
+
Deployment: { plural: 'deployments', namespaced: true },
|
|
19
|
+
StatefulSet: { plural: 'statefulsets', namespaced: true },
|
|
20
|
+
DaemonSet: { plural: 'daemonsets', namespaced: true },
|
|
21
|
+
ReplicaSet: { plural: 'replicasets', namespaced: true },
|
|
22
|
+
Pod: { plural: 'pods', namespaced: true },
|
|
23
|
+
Service: { plural: 'services', namespaced: true },
|
|
24
|
+
Ingress: { plural: 'ingresses', namespaced: true },
|
|
25
|
+
ConfigMap: { plural: 'configmaps', namespaced: true },
|
|
26
|
+
Secret: { plural: 'secrets', namespaced: true },
|
|
27
|
+
ServiceAccount: { plural: 'serviceaccounts', namespaced: true },
|
|
28
|
+
PersistentVolumeClaim: { plural: 'persistentvolumeclaims', namespaced: true },
|
|
29
|
+
Job: { plural: 'jobs', namespaced: true },
|
|
30
|
+
CronJob: { plural: 'cronjobs', namespaced: true },
|
|
31
|
+
Role: { plural: 'roles', namespaced: true },
|
|
32
|
+
RoleBinding: { plural: 'rolebindings', namespaced: true },
|
|
33
|
+
HorizontalPodAutoscaler: { plural: 'horizontalpodautoscalers', namespaced: true },
|
|
34
|
+
NetworkPolicy: { plural: 'networkpolicies', namespaced: true },
|
|
35
|
+
HTTPRoute: { plural: 'httproutes', namespaced: true },
|
|
36
|
+
Gateway: { plural: 'gateways', namespaced: true },
|
|
37
|
+
};
|
|
38
|
+
/** Whether a manifest kind is supported by the apply loop. `Namespace` is owned by us. */
|
|
39
|
+
export function isSupportedKind(kind) {
|
|
40
|
+
return kind in RESOURCE_KINDS;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Read the per-workspace Kubernetes config off the stored manifest's `providerConfig`.
|
|
44
|
+
* The config was Valibot-validated at the connect controller boundary, so this trusts
|
|
45
|
+
* the stored shape (a cast) rather than re-parsing (which would pull valibot in here).
|
|
46
|
+
*/
|
|
47
|
+
export function parseKubernetesEnvConfig(manifest) {
|
|
48
|
+
const raw = manifest.providerConfig;
|
|
49
|
+
if (!raw)
|
|
50
|
+
throw new Error('Kubernetes environment manifest is missing its providerConfig');
|
|
51
|
+
return raw;
|
|
52
|
+
}
|
|
53
|
+
/** Build the stored manifest that carries a Kubernetes env config in its providerConfig. */
|
|
54
|
+
export function kubernetesConfigToManifest(config) {
|
|
55
|
+
return {
|
|
56
|
+
providerId: 'kubernetes',
|
|
57
|
+
label: config.label,
|
|
58
|
+
// baseUrl is the apiserver root; it is NOT manifest-SSRF-checked (a cluster is
|
|
59
|
+
// routinely a private host) — the backend runs `assertApiServerUrlSafe` instead.
|
|
60
|
+
baseUrl: config.apiServerUrl,
|
|
61
|
+
auth: { type: 'bearer', secretRef: { key: 'apiToken' } },
|
|
62
|
+
// A native adapter ignores these request templates at run time, but the manifest
|
|
63
|
+
// schema requires `provision` + `response`; supply inert placeholders.
|
|
64
|
+
provision: { method: 'POST', pathTemplate: '' },
|
|
65
|
+
response: {},
|
|
66
|
+
...(config.defaultTtlMs ? { defaultTtlMs: config.defaultTtlMs } : {}),
|
|
67
|
+
providerConfig: config,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** The `{{var}}` substitution map available to the namespace + manifest templates. */
|
|
71
|
+
export function templateVars(inputs, namespace, image) {
|
|
72
|
+
return { ...inputs, namespace, ...(image !== undefined ? { image } : {}) };
|
|
73
|
+
}
|
|
74
|
+
/** Replace `{{ key }}` placeholders from `vars`; an unknown key resolves to ''. */
|
|
75
|
+
export function renderTemplate(template, vars) {
|
|
76
|
+
return template.replace(/\{\{\s*([a-zA-Z0-9_.]+)\s*\}\}/g, (_m, key) => vars[key] ?? '');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolve the per-PR namespace name: render the configured template (or a default
|
|
80
|
+
* derived from the repo + PR number / block id) then sanitize to an RFC1123 label.
|
|
81
|
+
*
|
|
82
|
+
* The default qualifies the PR number with the repo, because a workspace can have many
|
|
83
|
+
* repos and two of them can open a PR with the SAME number. A bare `cf-env-<pr>` would
|
|
84
|
+
* then collide on one namespace — and since `ensureNamespace` treats the resulting 409
|
|
85
|
+
* as idempotent, the second PR's manifests would be applied INTO the first's live
|
|
86
|
+
* environment (and its teardown would delete the wrong namespace). So prefer
|
|
87
|
+
* `<repoName>-<pullNumber>`, falling back to the globally-unique block id, and only to a
|
|
88
|
+
* bare PR number when neither repo nor block context is present (a manual provision).
|
|
89
|
+
*/
|
|
90
|
+
export function resolveNamespace(config, inputs) {
|
|
91
|
+
if (config.namespaceTemplate) {
|
|
92
|
+
return k8sName(renderTemplate(config.namespaceTemplate, inputs), '', 63, 'env');
|
|
93
|
+
}
|
|
94
|
+
const suffix = inputs.repoName && inputs.pullNumber
|
|
95
|
+
? `${inputs.repoName}-${inputs.pullNumber}`
|
|
96
|
+
: inputs.blockId || inputs.pullNumber || 'env';
|
|
97
|
+
return k8sName(suffix, ENV_NAMESPACE_PREFIX, 63, 'env');
|
|
98
|
+
}
|
|
99
|
+
/** The cluster-scoped Namespace collection/object URL. */
|
|
100
|
+
export function namespaceUrl(config, name) {
|
|
101
|
+
const base = `${apiBase(config)}/api/v1/namespaces`;
|
|
102
|
+
return name ? `${base}/${encodeURIComponent(name)}` : base;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The apiserver resource URL for server-side apply (`name` required) or a collection
|
|
106
|
+
* GET (`name` omitted). Throws for an unsupported kind. `apiVersion` carries the
|
|
107
|
+
* group/version; the kind's plural comes from the built-in allow-list.
|
|
108
|
+
*/
|
|
109
|
+
export function resourceUrl(config, apiVersion, kind, namespace, name) {
|
|
110
|
+
const meta = RESOURCE_KINDS[kind];
|
|
111
|
+
if (!meta) {
|
|
112
|
+
throw new Error(`Unsupported manifest kind '${kind}' (add it to the Kubernetes env resource allow-list)`);
|
|
113
|
+
}
|
|
114
|
+
const slash = apiVersion.indexOf('/');
|
|
115
|
+
const group = slash === -1 ? '' : apiVersion.slice(0, slash);
|
|
116
|
+
const version = slash === -1 ? apiVersion : apiVersion.slice(slash + 1);
|
|
117
|
+
const root = group
|
|
118
|
+
? `${apiBase(config)}/apis/${group}/${version}`
|
|
119
|
+
: `${apiBase(config)}/api/${version}`;
|
|
120
|
+
const nsSeg = meta.namespaced ? `/namespaces/${encodeURIComponent(namespace)}` : '';
|
|
121
|
+
const nameSeg = name ? `/${encodeURIComponent(name)}` : '';
|
|
122
|
+
return `${root}${nsSeg}/${meta.plural}${nameSeg}`;
|
|
123
|
+
}
|
|
124
|
+
/** Whether a repo entry path is a manifest file we should read (yaml/yml/json). */
|
|
125
|
+
export function isManifestFile(path) {
|
|
126
|
+
return /\.(ya?ml|json)$/i.test(path);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Parse one or more YAML/JSON documents into resources, templating `{{var}}` first,
|
|
130
|
+
* then forcing each resource's namespace + stamping the env label. Empty docs are
|
|
131
|
+
* dropped. Throws on a document missing apiVersion/kind/metadata.name.
|
|
132
|
+
*/
|
|
133
|
+
export function parseManifests(text, vars, namespace, blockId, extraLabels) {
|
|
134
|
+
const rendered = renderTemplate(text, vars);
|
|
135
|
+
const docs = parseAllDocuments(rendered);
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const doc of docs) {
|
|
138
|
+
const json = doc.toJSON();
|
|
139
|
+
if (!json || typeof json !== 'object')
|
|
140
|
+
continue;
|
|
141
|
+
if (!json.apiVersion || !json.kind) {
|
|
142
|
+
throw new Error('Manifest document is missing apiVersion/kind');
|
|
143
|
+
}
|
|
144
|
+
if (json.kind === 'Namespace')
|
|
145
|
+
continue; // we own the per-PR namespace
|
|
146
|
+
const name = json.metadata?.name;
|
|
147
|
+
if (!name)
|
|
148
|
+
throw new Error(`Manifest ${json.kind} is missing metadata.name`);
|
|
149
|
+
json.metadata = {
|
|
150
|
+
...json.metadata,
|
|
151
|
+
namespace,
|
|
152
|
+
labels: {
|
|
153
|
+
...json.metadata.labels,
|
|
154
|
+
...(blockId ? { [ENV_BLOCK_LABEL]: labelValue(blockId) } : {}),
|
|
155
|
+
...extraLabels,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
out.push(json);
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/** Read the first LoadBalancer address (ip or hostname) off a Service/Ingress status. */
|
|
163
|
+
export function extractLoadBalancerAddress(obj) {
|
|
164
|
+
const status = obj?.status;
|
|
165
|
+
const ingress = status?.loadBalancer?.ingress;
|
|
166
|
+
if (!Array.isArray(ingress) || ingress.length === 0)
|
|
167
|
+
return null;
|
|
168
|
+
const first = ingress[0];
|
|
169
|
+
return first.hostname || first.ip || null;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Derive the environment URL from the configured source. For `ingressTemplate` the URL
|
|
173
|
+
* is known immediately (rendered host); the status-backed sources return null until the
|
|
174
|
+
* caller has fetched the live address and passes it in.
|
|
175
|
+
*/
|
|
176
|
+
export function deriveUrl(url, vars, liveAddress) {
|
|
177
|
+
const scheme = url.scheme ?? 'https';
|
|
178
|
+
if (url.source === 'ingressTemplate') {
|
|
179
|
+
const host = renderTemplate(url.hostTemplate, vars).trim();
|
|
180
|
+
return host ? `${scheme}://${host}` : null;
|
|
181
|
+
}
|
|
182
|
+
if (!liveAddress)
|
|
183
|
+
return null;
|
|
184
|
+
if (url.source === 'serviceStatus' && url.port) {
|
|
185
|
+
return `${scheme}://${liveAddress}:${url.port}`;
|
|
186
|
+
}
|
|
187
|
+
return `${scheme}://${liveAddress}`;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=kubernetes-environment.logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kubernetes-environment.logic.js","sourceRoot":"","sources":["../../../src/modules/kubernetes/kubernetes-environment.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,18 @@ import type { KubernetesRunnerConfig, RunnerDispatchOptions } from '@cat-factory
|
|
|
7
7
|
export declare const KUBERNETES_TOKEN_KEY = "apiToken";
|
|
8
8
|
/** Default port the executor-harness HTTP server listens on inside the pod. */
|
|
9
9
|
export declare const DEFAULT_HARNESS_PORT = 8080;
|
|
10
|
+
/**
|
|
11
|
+
* Coerce an arbitrary id into a `<prefix><sanitized>` RFC1123 label (<=`max` chars,
|
|
12
|
+
* lowercase alphanumeric/hyphens, starts/ends alphanumeric). Shared by the per-run
|
|
13
|
+
* pod name and the per-PR environment namespace.
|
|
14
|
+
*/
|
|
15
|
+
export declare function k8sName(value: string, prefix: string, max?: number, fallback?: string): string;
|
|
10
16
|
/** Deterministic per-RUN pod name (one pod per run; steps re-attach to it). */
|
|
11
17
|
export declare function podName(runId: string): string;
|
|
12
|
-
/** kube-apiserver root with any trailing slash stripped. */
|
|
13
|
-
export declare function apiBase(config:
|
|
18
|
+
/** kube-apiserver root with any trailing slash stripped (shared by runner + env). */
|
|
19
|
+
export declare function apiBase(config: {
|
|
20
|
+
apiServerUrl: string;
|
|
21
|
+
}): string;
|
|
14
22
|
/** Collection URL for pods in the configured namespace. */
|
|
15
23
|
export declare function podsUrl(config: KubernetesRunnerConfig): string;
|
|
16
24
|
/** A single pod's URL. */
|
|
@@ -37,10 +45,14 @@ export declare function resolveResources(config: KubernetesRunnerConfig, options
|
|
|
37
45
|
* no inbound shared secret here: access is gated by the SA's `pods/proxy` RBAC.
|
|
38
46
|
*/
|
|
39
47
|
export declare function buildPodManifest(config: KubernetesRunnerConfig, runId: string, name: string, options?: RunnerDispatchOptions): Record<string, unknown>;
|
|
48
|
+
/** Coerce an arbitrary id into a valid label value (<=63 chars, alnum/._-). */
|
|
49
|
+
export declare function labelValue(value: string): string;
|
|
40
50
|
/** The readiness verdict from a pod's `status`. */
|
|
41
51
|
export type PodReadiness = 'ready' | 'pending' | 'gone';
|
|
42
52
|
/** Classify a pod's status JSON: ready to serve, still pending, or terminally gone. */
|
|
43
53
|
export declare function classifyPodReadiness(pod: unknown): PodReadiness;
|
|
54
|
+
/** Classify a Deployment's status JSON: rolled out, still progressing, or failed. */
|
|
55
|
+
export declare function classifyDeploymentReadiness(deployment: unknown): PodReadiness;
|
|
44
56
|
/**
|
|
45
57
|
* One pass over a pod's container statuses + conditions, yielding BOTH readings the readiness
|
|
46
58
|
* loop needs so the pod JSON isn't walked (and the two views aren't kept in sync) twice:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubernetes.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/kubernetes/kubernetes.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AASxF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,aAAqC,CAAA;AAEtE,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAExC,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"kubernetes.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/kubernetes/kubernetes.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AASxF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,aAAqC,CAAA;AAEtE,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAExC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAK,EAAE,QAAQ,SAAM,GAAG,MAAM,CAQvF;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEhE;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAE9D;AAED,0BAA0B;AAC1B,wBAAgB,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3F;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAGR;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,qBAAqB,GAC9B;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,SAAS,CAcpF;AASD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+BzB;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEvD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAU/D;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO,GAAG,YAAY,CAqB7E;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoC1F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAkB3D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isCloudMetadataHost } from '@cat-factory/kernel';
|
|
1
|
+
import { isCloudMetadataHost, ValidationError } from '@cat-factory/kernel';
|
|
2
2
|
import { KUBERNETES_RUNNER_TOKEN_SECRET_KEY } from '@cat-factory/contracts';
|
|
3
3
|
// Pure helpers for the native Kubernetes runner backend. No I/O here — URL
|
|
4
4
|
// building, the per-run pod-name derivation, the pod manifest, and the readiness
|
|
@@ -12,18 +12,25 @@ import { KUBERNETES_RUNNER_TOKEN_SECRET_KEY } from '@cat-factory/contracts';
|
|
|
12
12
|
export const KUBERNETES_TOKEN_KEY = KUBERNETES_RUNNER_TOKEN_SECRET_KEY;
|
|
13
13
|
/** Default port the executor-harness HTTP server listens on inside the pod. */
|
|
14
14
|
export const DEFAULT_HARNESS_PORT = 8080;
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Coerce an arbitrary id into a `<prefix><sanitized>` RFC1123 label (<=`max` chars,
|
|
17
|
+
* lowercase alphanumeric/hyphens, starts/ends alphanumeric). Shared by the per-run
|
|
18
|
+
* pod name and the per-PR environment namespace.
|
|
19
|
+
*/
|
|
20
|
+
export function k8sName(value, prefix, max = 63, fallback = 'x') {
|
|
21
|
+
const sanitized = value
|
|
18
22
|
.toLowerCase()
|
|
19
23
|
.replace(/[^a-z0-9-]/g, '-')
|
|
20
24
|
.replace(/-+/g, '-')
|
|
21
25
|
.replace(/^-+|-+$/g, '');
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
const body = sanitized.slice(0, max - prefix.length).replace(/-+$/g, '') || fallback;
|
|
27
|
+
return `${prefix}${body}`;
|
|
28
|
+
}
|
|
29
|
+
/** Deterministic per-RUN pod name (one pod per run; steps re-attach to it). */
|
|
30
|
+
export function podName(runId) {
|
|
31
|
+
return k8sName(runId, 'cf-run-', 63, 'run');
|
|
25
32
|
}
|
|
26
|
-
/** kube-apiserver root with any trailing slash stripped. */
|
|
33
|
+
/** kube-apiserver root with any trailing slash stripped (shared by runner + env). */
|
|
27
34
|
export function apiBase(config) {
|
|
28
35
|
return config.apiServerUrl.trim().replace(/\/+$/, '');
|
|
29
36
|
}
|
|
@@ -122,7 +129,7 @@ export function buildPodManifest(config, runId, name, options) {
|
|
|
122
129
|
};
|
|
123
130
|
}
|
|
124
131
|
/** Coerce an arbitrary id into a valid label value (<=63 chars, alnum/._-). */
|
|
125
|
-
function labelValue(value) {
|
|
132
|
+
export function labelValue(value) {
|
|
126
133
|
return value
|
|
127
134
|
.replace(/[^A-Za-z0-9._-]/g, '-')
|
|
128
135
|
.replace(/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/g, '')
|
|
@@ -142,6 +149,29 @@ export function classifyPodReadiness(pod) {
|
|
|
142
149
|
const ready = conditions.find((c) => c.type === 'Ready');
|
|
143
150
|
return ready?.status === 'True' ? 'ready' : 'pending';
|
|
144
151
|
}
|
|
152
|
+
/** Classify a Deployment's status JSON: rolled out, still progressing, or failed. */
|
|
153
|
+
export function classifyDeploymentReadiness(deployment) {
|
|
154
|
+
const obj = deployment;
|
|
155
|
+
const status = obj?.status;
|
|
156
|
+
if (!status)
|
|
157
|
+
return 'pending';
|
|
158
|
+
const desired = typeof obj?.spec?.replicas === 'number' ? obj.spec.replicas : 1;
|
|
159
|
+
const available = typeof status.availableReplicas === 'number' ? status.availableReplicas : 0;
|
|
160
|
+
// A zero-replica Deployment is intentionally scaled to nothing — treat as ready.
|
|
161
|
+
if (desired === 0)
|
|
162
|
+
return 'ready';
|
|
163
|
+
if (available >= desired)
|
|
164
|
+
return 'ready';
|
|
165
|
+
const conditions = Array.isArray(status.conditions)
|
|
166
|
+
? status.conditions
|
|
167
|
+
: [];
|
|
168
|
+
// `Progressing=False` with reason `ProgressDeadlineExceeded` is a terminal rollout failure.
|
|
169
|
+
const progressing = conditions.find((c) => c.type === 'Progressing');
|
|
170
|
+
if (progressing?.status === 'False' && progressing.reason === 'ProgressDeadlineExceeded') {
|
|
171
|
+
return 'gone';
|
|
172
|
+
}
|
|
173
|
+
return 'pending';
|
|
174
|
+
}
|
|
145
175
|
/**
|
|
146
176
|
* Container `state.waiting.reason`s that will NOT self-heal within the readiness window:
|
|
147
177
|
* a bad/unpullable image, a malformed container config, a failed lifecycle hook, or a
|
|
@@ -273,18 +303,21 @@ export function describePodStatus(pod) {
|
|
|
273
303
|
* {@link isCloudMetadataHost} classifier.
|
|
274
304
|
*/
|
|
275
305
|
export function assertApiServerUrlSafe(rawUrl) {
|
|
306
|
+
// A bad/unsupported URL is a caller-input error, so throw ValidationError (→ 422 with
|
|
307
|
+
// the actionable reason) rather than a plain Error (→ a generic 500 that swallows it);
|
|
308
|
+
// the connect form relies on the message. Shared by the env + runner-pool backends.
|
|
276
309
|
let url;
|
|
277
310
|
try {
|
|
278
311
|
url = new URL(rawUrl);
|
|
279
312
|
}
|
|
280
313
|
catch {
|
|
281
|
-
throw new
|
|
314
|
+
throw new ValidationError(`Invalid Kubernetes apiserver URL: ${rawUrl}`);
|
|
282
315
|
}
|
|
283
316
|
if (url.protocol !== 'https:') {
|
|
284
|
-
throw new
|
|
317
|
+
throw new ValidationError('Kubernetes apiserver URL must use https.');
|
|
285
318
|
}
|
|
286
319
|
if (isCloudMetadataHost(url.hostname)) {
|
|
287
|
-
throw new
|
|
320
|
+
throw new ValidationError('Kubernetes apiserver URL must not target the cloud metadata endpoint.');
|
|
288
321
|
}
|
|
289
322
|
}
|
|
290
323
|
//# sourceMappingURL=kubernetes.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubernetes.logic.js","sourceRoot":"","sources":["../../../src/modules/kubernetes/kubernetes.logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"kubernetes.logic.js","sourceRoot":"","sources":["../../../src/modules/kubernetes/kubernetes.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-backends.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAqB5B,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,cAAc,CAAA;IAC7B,sFAAsF;IACtF,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,0FAA0F;AAC1F,MAAM,WAAW,0BAA0B;IACzC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC1C,yFAAyF;IACzF,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAA;IAC3D,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG;QAC3C,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,iGAAiG;IACjG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtF,uFAAuF;IACvF,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,GAAG,eAAe,CAAA;IACvF,qDAAqD;IACrD,cAAc,CACZ,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACjC;AAID,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAE3E;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAE7E;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AASD,eAAO,MAAM,qBAAqB,EAAE,qBAmCnC,CAAA;AAID,eAAO,MAAM,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"runner-backends.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAqB5B,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,cAAc,CAAA;IAC7B,sFAAsF;IACtF,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,0FAA0F;AAC1F,MAAM,WAAW,0BAA0B;IACzC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC1C,yFAAyF;IACzF,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAA;IAC3D,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG;QAC3C,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,iGAAiG;IACjG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtF,uFAAuF;IACvF,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,GAAG,eAAe,CAAA;IACvF,qDAAqD;IACrD,cAAc,CACZ,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACjC;AAID,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAE3E;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAE7E;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AASD,eAAO,MAAM,qBAAqB,EAAE,qBAmCnC,CAAA;AAID,eAAO,MAAM,uBAAuB,EAAE,qBAsCrC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { STRICT_URL_SAFETY_POLICY } from '@cat-factory/kernel';
|
|
1
|
+
import { STRICT_URL_SAFETY_POLICY, ValidationError } from '@cat-factory/kernel';
|
|
2
2
|
import { assertApiServerUrlSafe, KUBERNETES_TOKEN_KEY } from '../kubernetes/kubernetes.logic.js';
|
|
3
3
|
import { KubernetesRunnerTransport } from '../kubernetes/KubernetesRunnerTransport.js';
|
|
4
4
|
import { HttpRunnerPoolProvider } from './HttpRunnerPoolProvider.js';
|
|
@@ -79,7 +79,8 @@ export const kubernetesRunnerBackend = {
|
|
|
79
79
|
// connection can't save and then fail at every dispatch.
|
|
80
80
|
const needsCustomTls = !!config.kubernetes.caCertPem || !!config.kubernetes.insecureSkipTlsVerify;
|
|
81
81
|
if (needsCustomTls && opts?.customTlsSupported === false) {
|
|
82
|
-
|
|
82
|
+
// Caller-input error → ValidationError (422 with the reason), not a plain Error (500).
|
|
83
|
+
throw new ValidationError('This runtime cannot verify a custom CA / skip TLS for the Kubernetes apiserver ' +
|
|
83
84
|
'(it requires the Node runtime). Use a publicly-trusted apiserver certificate, or ' +
|
|
84
85
|
'run this workspace on the Node/local deployment.');
|
|
85
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-backends.js","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"runner-backends.js","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,8 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^6.0.209",
|
|
28
|
-
"
|
|
29
|
-
"@cat-factory/
|
|
28
|
+
"yaml": "^2.7.0",
|
|
29
|
+
"@cat-factory/contracts": "0.51.0",
|
|
30
|
+
"@cat-factory/kernel": "0.53.0"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"typescript": "7.0.1-rc",
|