gitops-ai 1.2.0 → 1.2.2
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/README.md +6 -6
- package/dist/commands/bootstrap.js +44 -21
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/sops.js +5 -9
- package/dist/commands/sops.js.map +1 -1
- package/dist/core/bootstrap-runner.d.ts +8 -1
- package/dist/core/bootstrap-runner.js +85 -13
- package/dist/core/bootstrap-runner.js.map +1 -1
- package/dist/core/dependencies.js +0 -28
- package/dist/core/dependencies.js.map +1 -1
- package/dist/core/flux.d.ts +5 -2
- package/dist/core/flux.js +38 -46
- package/dist/core/flux.js.map +1 -1
- package/dist/core/k8s-api.d.ts +33 -0
- package/dist/core/k8s-api.js +255 -0
- package/dist/core/k8s-api.js.map +1 -0
- package/dist/core/kubernetes.d.ts +2 -2
- package/dist/core/kubernetes.js +29 -33
- package/dist/core/kubernetes.js.map +1 -1
- package/dist/core/template-sync.d.ts +2 -2
- package/dist/core/template-sync.js +14 -8
- package/dist/core/template-sync.js.map +1 -1
- package/dist/schemas.d.ts +10 -2
- package/dist/schemas.js +12 -2
- package/dist/schemas.js.map +1 -1
- package/dist/utils/log.js +35 -4
- package/dist/utils/log.js.map +1 -1
- package/package.json +4 -8
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, writeFileSync, cpSync, mkdirSync, rmSync, } from "node:fs";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, writeFileSync, cpSync, mkdirSync, realpathSync, rmSync, } from "node:fs";
|
|
2
|
+
import { resolve as resolvePath } from "node:path";
|
|
2
3
|
import { isMacOS, isCI } from "../utils/platform.js";
|
|
3
4
|
import { log, withSpinner } from "../utils/log.js";
|
|
4
5
|
import { exec, execAsync, execSafe } from "../utils/shell.js";
|
|
@@ -7,7 +8,7 @@ import { getProvider } from "./git-provider.js";
|
|
|
7
8
|
import * as k8s from "./kubernetes.js";
|
|
8
9
|
import * as flux from "./flux.js";
|
|
9
10
|
import * as encryption from "./encryption.js";
|
|
10
|
-
import { COMPONENTS, defaultSopsConfig, shouldUseSshDeployKey,
|
|
11
|
+
import { COMPONENTS, defaultSopsConfig, httpsGitCredentialUsername, shouldUseSshDeployKey, SOURCE_TEMPLATE_HOST, SOURCE_PROJECT_PATH, } from "../schemas.js";
|
|
11
12
|
import { createGitHubDeployKey } from "./github.js";
|
|
12
13
|
/**
|
|
13
14
|
* Non-interactive bootstrap execution — shared between the CLI wizard
|
|
@@ -17,17 +18,28 @@ import { createGitHubDeployKey } from "./github.js";
|
|
|
17
18
|
* If the template repo hasn't been cloned yet, it will be fetched
|
|
18
19
|
* automatically from the source project.
|
|
19
20
|
*/
|
|
20
|
-
export async function runBootstrap(config,
|
|
21
|
+
export async function runBootstrap(config, repoRootInput) {
|
|
21
22
|
const provider = await getProvider(config.gitProvider ?? "gitlab");
|
|
22
23
|
// ── CLI dependencies ──────────────────────────────────────────────
|
|
23
|
-
const tools = ["git", "
|
|
24
|
+
const tools = ["git", "flux-operator", "sops", "age"];
|
|
24
25
|
if (isMacOS() || isCI())
|
|
25
26
|
tools.push("k3d");
|
|
26
27
|
log.step("Installing CLI dependencies");
|
|
27
28
|
await ensureAll(tools);
|
|
29
|
+
let repoRoot;
|
|
30
|
+
try {
|
|
31
|
+
repoRoot = realpathSync(resolvePath(repoRootInput));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new Error(`Bootstrap repo path does not exist: ${repoRootInput}`);
|
|
35
|
+
}
|
|
36
|
+
if (execSafe("git rev-parse --is-inside-work-tree", { cwd: repoRoot }).exitCode !== 0) {
|
|
37
|
+
throw new Error(`Bootstrap needs a real git clone (with .git), not a source archive. Fix CI checkout (install git before actions/checkout). Offending path: ${repoRoot}`);
|
|
38
|
+
}
|
|
28
39
|
// ── Git setup ─────────────────────────────────────────────────────
|
|
29
40
|
log.step("Configuring git");
|
|
30
|
-
|
|
41
|
+
const emailCfg = execSafe("git config user.email", { cwd: repoRoot });
|
|
42
|
+
if (!emailCfg.stdout.trim()) {
|
|
31
43
|
exec('git config user.email "bootstrap@gitops.local"', { cwd: repoRoot });
|
|
32
44
|
exec('git config user.name "GitOps Bootstrap"', { cwd: repoRoot });
|
|
33
45
|
}
|
|
@@ -59,8 +71,7 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
59
71
|
const kubeconfigPath = k8s.setupKubeconfig(config.clusterName);
|
|
60
72
|
log.success(`Kubeconfig: ${kubeconfigPath}`);
|
|
61
73
|
await k8s.waitForCluster();
|
|
62
|
-
|
|
63
|
-
await flux.installOperator();
|
|
74
|
+
await k8s.createNamespace("flux-system");
|
|
64
75
|
// ── Git auth secret ────────────────────────────────────────────────
|
|
65
76
|
if (shouldUseSshDeployKey(config)) {
|
|
66
77
|
const gitHost = config.gitHost ?? "github.com";
|
|
@@ -73,7 +84,7 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
73
84
|
const fluxToken = config.gitFluxToken || config.gitToken;
|
|
74
85
|
log.step("Creating Git auth secret");
|
|
75
86
|
await k8s.createSecret("flux-system", "flux-system", {
|
|
76
|
-
username:
|
|
87
|
+
username: httpsGitCredentialUsername(config),
|
|
77
88
|
password: fluxToken,
|
|
78
89
|
});
|
|
79
90
|
log.success("flux-system secret created");
|
|
@@ -83,6 +94,10 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
83
94
|
if (!existsSync(templateDir)) {
|
|
84
95
|
await cloneTemplate(repoRoot);
|
|
85
96
|
}
|
|
97
|
+
// Root `flux-instance.yaml` is required for `flux-operator install -f`. A full template
|
|
98
|
+
// clone copies it, but existing repos may already have `clusters/_template` from an older
|
|
99
|
+
// layout without this file — fetch the canonical manifest from the template default branch.
|
|
100
|
+
await ensureFluxInstanceYaml(repoRoot);
|
|
86
101
|
// ── Cluster template ──────────────────────────────────────────────
|
|
87
102
|
const clusterDir = `${repoRoot}/clusters/${config.clusterName}`;
|
|
88
103
|
if (existsSync(templateDir)) {
|
|
@@ -107,6 +122,9 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
107
122
|
await setupSops(config, repoRoot, clusterDir);
|
|
108
123
|
// ── Git commit & push ─────────────────────────────────────────────
|
|
109
124
|
await withSpinner("Committing and pushing to Git", async () => {
|
|
125
|
+
// Never commit workflow changes from the template copy: GitHub rejects pushes that
|
|
126
|
+
// touch `.github/workflows/*` unless the token has `workflows` scope.
|
|
127
|
+
resetLocalWorkflowFiles(repoRoot);
|
|
110
128
|
await execAsync("git add .", { cwd: repoRoot });
|
|
111
129
|
execSafe(`git commit -m "Add ${config.clusterName} cluster with encrypted secrets"`, { cwd: repoRoot });
|
|
112
130
|
await execAsync(`git push -u origin "${config.repoBranch}"`, {
|
|
@@ -115,8 +133,8 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
115
133
|
});
|
|
116
134
|
// ── Flux Instance ─────────────────────────────────────────────────
|
|
117
135
|
let fluxInstanceInstalled = false;
|
|
118
|
-
if (existsSync(`${repoRoot}/flux-instance
|
|
119
|
-
await flux.
|
|
136
|
+
if (existsSync(`${repoRoot}/flux-instance.yaml`)) {
|
|
137
|
+
await flux.installFluxOperatorAndInstance(config, repoRoot);
|
|
120
138
|
await flux.waitForInstance();
|
|
121
139
|
await flux.reconcile();
|
|
122
140
|
fluxInstanceInstalled = true;
|
|
@@ -126,13 +144,47 @@ export async function runBootstrap(config, repoRoot) {
|
|
|
126
144
|
// ---------------------------------------------------------------------------
|
|
127
145
|
// Internal helpers
|
|
128
146
|
// ---------------------------------------------------------------------------
|
|
147
|
+
function resetLocalWorkflowFiles(repoRoot) {
|
|
148
|
+
const wf = `${repoRoot}/.github/workflows`;
|
|
149
|
+
if (!existsSync(wf))
|
|
150
|
+
return;
|
|
151
|
+
execSafe("git checkout HEAD -- .github/workflows", { cwd: repoRoot });
|
|
152
|
+
execSafe("git clean -fd -- .github/workflows", { cwd: repoRoot });
|
|
153
|
+
}
|
|
154
|
+
/** Default branch on GitHub for raw.githubusercontent.com links (template repo). */
|
|
155
|
+
const TEMPLATE_DEFAULT_BRANCH = "main";
|
|
156
|
+
/**
|
|
157
|
+
* Ensure `flux-instance.yaml` exists at the repo root so Flux bootstrap can run.
|
|
158
|
+
* When missing, downloads from the canonical template (same as a full template clone).
|
|
159
|
+
*/
|
|
160
|
+
async function ensureFluxInstanceYaml(repoRoot) {
|
|
161
|
+
const dest = `${repoRoot}/flux-instance.yaml`;
|
|
162
|
+
if (existsSync(dest))
|
|
163
|
+
return;
|
|
164
|
+
const rawUrl = `https://raw.githubusercontent.com/${SOURCE_PROJECT_PATH}/${TEMPLATE_DEFAULT_BRANCH}/flux-instance.yaml`;
|
|
165
|
+
try {
|
|
166
|
+
await withSpinner("Fetching flux-instance.yaml from template repository", async () => {
|
|
167
|
+
await execAsync(`curl -fsSL "${rawUrl}" -o "${dest}"`);
|
|
168
|
+
});
|
|
169
|
+
log.success("flux-instance.yaml added from GitOpsAI/gitops-ai-template");
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
if (existsSync(dest)) {
|
|
173
|
+
rmSync(dest);
|
|
174
|
+
}
|
|
175
|
+
log.warn("Could not download flux-instance.yaml (network or firewall). " +
|
|
176
|
+
"Add flux-instance.yaml at the repo root manually, then re-run bootstrap. " +
|
|
177
|
+
"Skipping Flux installation for this run.");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
129
180
|
async function cloneTemplate(repoRoot) {
|
|
130
181
|
const tmpDir = "/tmp/gitops-template";
|
|
131
182
|
await withSpinner("Cloning template repository", async () => {
|
|
132
183
|
execSafe(`rm -rf "${tmpDir}"`);
|
|
133
|
-
await execAsync(`git clone --quiet "https://${
|
|
184
|
+
await execAsync(`git clone --quiet "https://${SOURCE_TEMPLATE_HOST}/${SOURCE_PROJECT_PATH}.git" "${tmpDir}"`);
|
|
185
|
+
// Never copy `.github` — template CI must not overwrite the target repo (push 403).
|
|
134
186
|
for (const entry of readdirSync(tmpDir)) {
|
|
135
|
-
if (entry === ".git")
|
|
187
|
+
if (entry === ".git" || entry === ".github")
|
|
136
188
|
continue;
|
|
137
189
|
cpSync(`${tmpDir}/${entry}`, `${repoRoot}/${entry}`, {
|
|
138
190
|
recursive: true,
|
|
@@ -142,6 +194,26 @@ async function cloneTemplate(repoRoot) {
|
|
|
142
194
|
execSafe(`rm -rf "${tmpDir}"`);
|
|
143
195
|
});
|
|
144
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* A full `git clone` of the upstream template includes `.github/workflows`. GitHub rejects
|
|
199
|
+
* pushes that create or update workflow files when the credential is a GitHub OAuth App token
|
|
200
|
+
* without the `workflow` scope. Remove the template’s `.github` tree and commit before the
|
|
201
|
+
* first push to the user’s remote (same intent as skipping `.github` in {@link cloneTemplate}).
|
|
202
|
+
*/
|
|
203
|
+
export async function stripTemplateGitHubDirectory(repoRoot) {
|
|
204
|
+
const dotGithub = resolvePath(repoRoot, ".github");
|
|
205
|
+
if (!existsSync(dotGithub))
|
|
206
|
+
return;
|
|
207
|
+
const rmTracked = execSafe(`git rm -r -f -- .github`, { cwd: repoRoot });
|
|
208
|
+
if (rmTracked.exitCode !== 0) {
|
|
209
|
+
rmSync(dotGithub, { recursive: true, force: true });
|
|
210
|
+
await execAsync("git add -A", { cwd: repoRoot });
|
|
211
|
+
}
|
|
212
|
+
const { stdout } = execSafe("git diff --cached --name-only", { cwd: repoRoot });
|
|
213
|
+
if (!stdout.trim())
|
|
214
|
+
return;
|
|
215
|
+
await execAsync(`git -c user.email=bootstrap@gitops.local -c user.name="GitOps Bootstrap" commit --no-gpg-sign -m "chore: remove template .github before push (OAuth workflow scope)"`, { cwd: repoRoot });
|
|
216
|
+
}
|
|
145
217
|
function envsubst(content, vars) {
|
|
146
218
|
return Object.entries(vars).reduce((acc, [key, value]) => acc.replaceAll(`\${${key}}`, value), content);
|
|
147
219
|
}
|
|
@@ -181,7 +253,7 @@ async function setupSops(config, repoRoot, clusterDir) {
|
|
|
181
253
|
const pubKey = encryption.getAgePublicKey(sopsCfg);
|
|
182
254
|
log.detail(`Age public key: ${pubKey}`);
|
|
183
255
|
encryption.createSopsConfig(pubKey, sopsCfg);
|
|
184
|
-
if (k8s.isClusterReachable()) {
|
|
256
|
+
if (await k8s.isClusterReachable()) {
|
|
185
257
|
await k8s.createSecretFromFile(sopsCfg.secretName, sopsCfg.namespace, "age.agekey", sopsCfg.keyFile);
|
|
186
258
|
log.detail(`Created ${sopsCfg.secretName} secret in ${sopsCfg.namespace}`);
|
|
187
259
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-runner.js","sourceRoot":"","sources":["../../src/core/bootstrap-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap-runner.js","sourceRoot":"","sources":["../../src/core/bootstrap-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,34 +5,6 @@ async function runInstall(cmd) {
|
|
|
5
5
|
await execAsync(cmd);
|
|
6
6
|
}
|
|
7
7
|
const registry = [
|
|
8
|
-
{
|
|
9
|
-
name: "kubectl",
|
|
10
|
-
check: () => commandExists("kubectl"),
|
|
11
|
-
installDarwin: () => runInstall("brew install kubectl"),
|
|
12
|
-
installLinux: async () => {
|
|
13
|
-
const arch = getArch();
|
|
14
|
-
const version = await execAsync("curl -sL https://dl.k8s.io/release/stable.txt");
|
|
15
|
-
await execAsync(`curl -sL "https://dl.k8s.io/release/${version}/bin/linux/${arch}/kubectl" -o /tmp/kubectl`);
|
|
16
|
-
await execAsync("sudo install -o root -g root -m 0755 /tmp/kubectl /usr/local/bin/kubectl");
|
|
17
|
-
await execAsync("rm -f /tmp/kubectl");
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: "helm",
|
|
22
|
-
check: () => commandExists("helm"),
|
|
23
|
-
installDarwin: () => runInstall("brew install helm"),
|
|
24
|
-
installLinux: () => runInstall("curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash"),
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: "k9s",
|
|
28
|
-
check: () => commandExists("k9s"),
|
|
29
|
-
installDarwin: () => runInstall("brew install derailed/k9s/k9s"),
|
|
30
|
-
installLinux: async () => {
|
|
31
|
-
await execAsync("wget -qO /tmp/k9s_linux_amd64.deb https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb");
|
|
32
|
-
await execAsync("sudo DEBIAN_FRONTEND=noninteractive apt install -y /tmp/k9s_linux_amd64.deb");
|
|
33
|
-
await execAsync("rm /tmp/k9s_linux_amd64.deb");
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
8
|
{
|
|
37
9
|
name: "flux-operator",
|
|
38
10
|
check: () => commandExists("flux-operator"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/core/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AASnD,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,QAAQ,GAAiB;IAC7B;QACE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/core/dependencies.ts"],"names":[],"mappings":"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"}
|
package/dist/core/flux.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type BootstrapConfig } from "../schemas.js";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Installs the Flux Operator and a FluxInstance in one step using the official CLI.
|
|
4
|
+
* Requires `flux-system` namespace and the `flux-system` git credentials secret to exist first.
|
|
5
|
+
*/
|
|
6
|
+
export declare function installFluxOperatorAndInstance(config: BootstrapConfig, repoRoot: string): Promise<void>;
|
|
4
7
|
export declare function waitForInstance(): Promise<void>;
|
|
5
8
|
export declare function reconcile(): Promise<void>;
|
|
6
9
|
export declare function getStatus(): string;
|
package/dist/core/flux.js
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, unlinkSync } from "node:fs";
|
|
2
|
-
import { exec, execAsync
|
|
2
|
+
import { exec, execAsync } from "../utils/shell.js";
|
|
3
3
|
import { log, withSpinner, p, pc } from "../utils/log.js";
|
|
4
4
|
import { getProvider } from "./git-provider.js";
|
|
5
5
|
import { shouldUseSshDeployKey } from "../schemas.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
].join(" ");
|
|
15
|
-
log.detail(cmd);
|
|
16
|
-
await withSpinner("Installing Flux Operator via Helm", () => execAsync(cmd));
|
|
17
|
-
}
|
|
18
|
-
export async function installInstance(config, repoRoot) {
|
|
19
|
-
const templatePath = `${repoRoot}/flux-instance-values.yaml`;
|
|
20
|
-
const tmpPath = "/tmp/flux-instance-values.yaml";
|
|
6
|
+
import * as k8sApi from "./k8s-api.js";
|
|
7
|
+
/**
|
|
8
|
+
* Installs the Flux Operator and a FluxInstance in one step using the official CLI.
|
|
9
|
+
* Requires `flux-system` namespace and the `flux-system` git credentials secret to exist first.
|
|
10
|
+
*/
|
|
11
|
+
export async function installFluxOperatorAndInstance(config, repoRoot) {
|
|
12
|
+
const templatePath = `${repoRoot}/flux-instance.yaml`;
|
|
13
|
+
const tmpPath = "/tmp/flux-instance.yaml";
|
|
21
14
|
const provider = await getProvider(config.gitProvider ?? "gitlab");
|
|
22
15
|
const gitHost = config.gitHost ?? provider.defaultHost;
|
|
23
16
|
let content = readFileSync(templatePath, "utf-8");
|
|
@@ -29,11 +22,9 @@ export async function installInstance(config, repoRoot) {
|
|
|
29
22
|
CLUSTER_NAME: config.clusterName,
|
|
30
23
|
};
|
|
31
24
|
content = envsubst(content, vars);
|
|
32
|
-
// Replace hardcoded gitlab.com URLs in the template with the actual host
|
|
33
25
|
if (gitHost !== "gitlab.com") {
|
|
34
26
|
content = content.replaceAll("https://gitlab.com/", `https://${gitHost}/`);
|
|
35
27
|
}
|
|
36
|
-
// SSH deploy key: rewrite HTTPS URL → SSH URL for Flux source-controller
|
|
37
28
|
if (shouldUseSshDeployKey(config)) {
|
|
38
29
|
const httpsUrl = `https://${gitHost}/${config.repoOwner}/${config.repoName}.git`;
|
|
39
30
|
const sshUrl = `ssh://git@${gitHost}/${config.repoOwner}/${config.repoName}.git`;
|
|
@@ -41,25 +32,41 @@ export async function installInstance(config, repoRoot) {
|
|
|
41
32
|
}
|
|
42
33
|
writeFileSync(tmpPath, content);
|
|
43
34
|
const cmd = [
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"--wait",
|
|
35
|
+
"flux-operator install",
|
|
36
|
+
"-n flux-system",
|
|
37
|
+
`-f ${tmpPath}`,
|
|
38
|
+
"--timeout 30m",
|
|
49
39
|
].join(" ");
|
|
50
40
|
log.detail(cmd);
|
|
51
|
-
await withSpinner("Installing Flux
|
|
41
|
+
await withSpinner("Installing Flux Operator and Flux instance (flux-operator install)", () => execAsync(cmd));
|
|
52
42
|
unlinkSync(tmpPath);
|
|
53
43
|
}
|
|
44
|
+
async function getPodStatusLine() {
|
|
45
|
+
const kc = k8sApi.kubeConfigFromDefault();
|
|
46
|
+
const raw = await k8sApi.listPodsStatusLines(kc, k8sApi.FLUX_SYSTEM_NS);
|
|
47
|
+
if (!raw)
|
|
48
|
+
return "";
|
|
49
|
+
const pods = raw.split("\n").filter(Boolean).map((line) => {
|
|
50
|
+
const parts = line.trim().split(/\t/);
|
|
51
|
+
const name = (parts[0] ?? "").replace(/^(.*?)-[a-f0-9]+-[a-z0-9]+$/, "$1");
|
|
52
|
+
const phase = parts[1] ?? "?";
|
|
53
|
+
const ready = parts[2] === "True";
|
|
54
|
+
const icon = ready ? pc.green("✓") : phase === "Running" ? pc.yellow("●") : pc.dim("○");
|
|
55
|
+
return ` ${icon} ${pc.dim(name)} ${pc.dim(phase)}`;
|
|
56
|
+
});
|
|
57
|
+
return pods.join("\n");
|
|
58
|
+
}
|
|
54
59
|
export async function waitForInstance() {
|
|
55
60
|
const s = p.spinner();
|
|
56
61
|
s.start("Waiting for FluxInstance to be ready");
|
|
57
|
-
const
|
|
62
|
+
const kc = k8sApi.kubeConfigFromDefault();
|
|
63
|
+
const waitPromise = k8sApi.waitForFluxInstanceReady(kc, 300_000);
|
|
58
64
|
const poll = setInterval(() => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
void getPodStatusLine().then((status) => {
|
|
66
|
+
if (status) {
|
|
67
|
+
s.message(`Waiting for FluxInstance to be ready\n${pc.dim(status)}`);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
63
70
|
}, 3000);
|
|
64
71
|
try {
|
|
65
72
|
await waitPromise;
|
|
@@ -73,26 +80,11 @@ export async function waitForInstance() {
|
|
|
73
80
|
clearInterval(poll);
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
|
-
function getPodStatusLine() {
|
|
77
|
-
const { stdout, exitCode } = execSafe(`kubectl get pods -n flux-system --no-headers -o custom-columns="NAME:.metadata.name,STATUS:.status.phase,READY:.status.conditions[?(@.type=='Ready')].status" 2>/dev/null`);
|
|
78
|
-
if (exitCode !== 0 || !stdout)
|
|
79
|
-
return "";
|
|
80
|
-
const pods = stdout.split("\n").filter(Boolean).map((line) => {
|
|
81
|
-
const parts = line.trim().split(/\s+/);
|
|
82
|
-
const name = (parts[0] ?? "").replace(/^(.*?)-[a-f0-9]+-[a-z0-9]+$/, "$1");
|
|
83
|
-
const phase = parts[1] ?? "?";
|
|
84
|
-
const ready = parts[2] === "True";
|
|
85
|
-
const icon = ready ? pc.green("✓") : phase === "Running" ? pc.yellow("●") : pc.dim("○");
|
|
86
|
-
return ` ${icon} ${pc.dim(name)} ${pc.dim(phase)}`;
|
|
87
|
-
});
|
|
88
|
-
return pods.join("\n");
|
|
89
|
-
}
|
|
90
83
|
export async function reconcile() {
|
|
91
84
|
await withSpinner("Reconciling Flux", async () => {
|
|
92
|
-
const
|
|
93
|
-
await execAsync(`kubectl -n flux-system annotate --overwrite fluxinstance/flux reconcile.fluxcd.io/requestedAt="${ts}"`);
|
|
85
|
+
const kc = k8sApi.kubeConfigFromDefault();
|
|
94
86
|
log.detail("Waiting for FluxInstance condition=Ready...");
|
|
95
|
-
await
|
|
87
|
+
await k8sApi.reconcileFluxInstance(kc, 300_000);
|
|
96
88
|
});
|
|
97
89
|
}
|
|
98
90
|
export function getStatus() {
|
package/dist/core/flux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flux.js","sourceRoot":"","sources":["../../src/core/flux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"flux.js","sourceRoot":"","sources":["../../src/core/flux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as k8s from "@kubernetes/client-node";
|
|
2
|
+
export declare const FLUX_SYSTEM_NS = "flux-system";
|
|
3
|
+
export declare const FLUX_INSTANCE_GROUP = "fluxcd.controlplane.io";
|
|
4
|
+
export declare const FLUX_INSTANCE_VERSION = "v1";
|
|
5
|
+
export declare const FLUX_INSTANCE_PLURAL = "fluxinstances";
|
|
6
|
+
export declare function kubeConfigFromDefault(): k8s.KubeConfig;
|
|
7
|
+
export declare function makeClients(kc: k8s.KubeConfig): {
|
|
8
|
+
core: k8s.CoreV1Api;
|
|
9
|
+
apps: k8s.AppsV1Api;
|
|
10
|
+
custom: k8s.CustomObjectsApi;
|
|
11
|
+
};
|
|
12
|
+
export declare function isClusterReachableApi(kc: k8s.KubeConfig): Promise<boolean>;
|
|
13
|
+
export declare function waitForAllNodesReady(kc: k8s.KubeConfig, timeoutMs: number): Promise<void>;
|
|
14
|
+
export declare function createNamespaceApi(kc: k8s.KubeConfig, name: string): Promise<void>;
|
|
15
|
+
export declare function createSecretLiteralsApi(kc: k8s.KubeConfig, name: string, namespace: string, data: Record<string, string>): Promise<void>;
|
|
16
|
+
export declare function secretExistsApi(kc: k8s.KubeConfig, name: string, namespace: string): Promise<boolean>;
|
|
17
|
+
export declare function deleteSecretApi(kc: k8s.KubeConfig, name: string, namespace: string): Promise<void>;
|
|
18
|
+
export declare function createSecretFromFilesApi(kc: k8s.KubeConfig, name: string, namespace: string, files: Record<string, string>): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Run a command in a pod (by deployment name). Returns captured stdout/stderr.
|
|
21
|
+
*/
|
|
22
|
+
export declare function execInDeploymentContainer(kc: k8s.KubeConfig, namespace: string, deploymentName: string, containerName: string, command: string[]): Promise<{
|
|
23
|
+
stdout: string;
|
|
24
|
+
stderr: string;
|
|
25
|
+
exitCode: number;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Stream exec to process stdout/stderr (for interactive listing).
|
|
29
|
+
*/
|
|
30
|
+
export declare function execInDeploymentContainerTty(kc: k8s.KubeConfig, namespace: string, deploymentName: string, containerName: string, command: string[]): Promise<number>;
|
|
31
|
+
export declare function listPodsStatusLines(kc: k8s.KubeConfig, namespace: string): Promise<string>;
|
|
32
|
+
export declare function waitForFluxInstanceReady(kc: k8s.KubeConfig, timeoutMs: number): Promise<void>;
|
|
33
|
+
export declare function reconcileFluxInstance(kc: k8s.KubeConfig, timeoutMs: number): Promise<void>;
|