@styleflow.app/flowpress-deploy 1.0.0-beta.2 → 1.0.0-beta.21
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/CHANGELOG.md +116 -0
- package/README.md +5 -0
- package/containers/cms/Dockerfile +35 -0
- package/containers/cms/Dockerfile.dockerignore +20 -0
- package/containers/cms/healthz.php +17 -0
- package/containers/cms/install-languages.sh +16 -0
- package/containers/cms/mpm.conf +10 -0
- package/containers/cms/php.ini +16 -0
- package/containers/cms/sanitize-integrations.php +14 -0
- package/containers/cms/sanitize.php +37 -0
- package/containers/cms/smtp.php +13 -0
- package/containers/cms/vhost.conf +61 -0
- package/containers/cms/wp-cli.yml +1 -0
- package/containers/local/cms/Dockerfile +18 -0
- package/containers/local/cms/entrypoint.sh +7 -0
- package/containers/local/cms/php.ini +8 -0
- package/containers/local/cms/vhost.conf +14 -0
- package/containers/local/web/Dockerfile +8 -0
- package/containers/local/web/entrypoint.sh +21 -0
- package/containers/php-runtime/Dockerfile +21 -0
- package/containers/web-ssr/Dockerfile +27 -0
- package/containers/web-ssr/Dockerfile.dockerignore +10 -0
- package/containers/web-static/Caddyfile +40 -0
- package/containers/web-static/Dockerfile +17 -0
- package/containers/web-static/Dockerfile.dockerignore +7 -0
- package/dist/development.d.ts +4 -0
- package/dist/development.d.ts.map +1 -0
- package/dist/development.js +10 -0
- package/dist/development.js.map +1 -0
- package/dist/node-fetch.d.ts +3 -0
- package/dist/node-fetch.d.ts.map +1 -0
- package/dist/node-fetch.js +20 -0
- package/dist/node-fetch.js.map +1 -0
- package/dist/ops/bootstrap.d.ts +21 -0
- package/dist/ops/bootstrap.d.ts.map +1 -0
- package/dist/ops/bootstrap.js +123 -0
- package/dist/ops/bootstrap.js.map +1 -0
- package/dist/ops/build.d.ts +39 -0
- package/dist/ops/build.d.ts.map +1 -0
- package/dist/ops/build.js +110 -0
- package/dist/ops/build.js.map +1 -0
- package/dist/ops/check.d.ts +18 -0
- package/dist/ops/check.d.ts.map +1 -0
- package/dist/ops/check.js +46 -0
- package/dist/ops/check.js.map +1 -0
- package/dist/ops/cli.d.ts +3 -0
- package/dist/ops/cli.d.ts.map +1 -0
- package/dist/ops/cli.js +166 -0
- package/dist/ops/cli.js.map +1 -0
- package/dist/ops/config.d.ts +54 -0
- package/dist/ops/config.d.ts.map +1 -0
- package/dist/ops/config.js +202 -0
- package/dist/ops/config.js.map +1 -0
- package/dist/ops/coolify.d.ts +2 -0
- package/dist/ops/coolify.d.ts.map +1 -0
- package/dist/ops/coolify.js +44 -0
- package/dist/ops/coolify.js.map +1 -0
- package/dist/ops/data.d.ts +31 -0
- package/dist/ops/data.d.ts.map +1 -0
- package/dist/ops/data.js +163 -0
- package/dist/ops/data.js.map +1 -0
- package/dist/ops/deploy.d.ts +38 -0
- package/dist/ops/deploy.d.ts.map +1 -0
- package/dist/ops/deploy.js +127 -0
- package/dist/ops/deploy.js.map +1 -0
- package/dist/ops/editorial.d.ts +23 -0
- package/dist/ops/editorial.d.ts.map +1 -0
- package/dist/ops/editorial.js +79 -0
- package/dist/ops/editorial.js.map +1 -0
- package/dist/ops/environment-files.d.ts +9 -0
- package/dist/ops/environment-files.d.ts.map +1 -0
- package/dist/ops/environment-files.js +125 -0
- package/dist/ops/environment-files.js.map +1 -0
- package/dist/ops/environment.d.ts +29 -0
- package/dist/ops/environment.d.ts.map +1 -0
- package/dist/ops/environment.js +159 -0
- package/dist/ops/environment.js.map +1 -0
- package/dist/ops/health.d.ts +26 -0
- package/dist/ops/health.d.ts.map +1 -0
- package/dist/ops/health.js +27 -0
- package/dist/ops/health.js.map +1 -0
- package/dist/ops/local.d.ts +161 -0
- package/dist/ops/local.d.ts.map +1 -0
- package/dist/ops/local.js +176 -0
- package/dist/ops/local.js.map +1 -0
- package/dist/ops/monitor.d.ts +23 -0
- package/dist/ops/monitor.d.ts.map +1 -0
- package/dist/ops/monitor.js +143 -0
- package/dist/ops/monitor.js.map +1 -0
- package/dist/ops/process.d.ts +9 -0
- package/dist/ops/process.d.ts.map +1 -0
- package/dist/ops/process.js +56 -0
- package/dist/ops/process.js.map +1 -0
- package/dist/ops/provision.d.ts +41 -0
- package/dist/ops/provision.d.ts.map +1 -0
- package/dist/ops/provision.js +268 -0
- package/dist/ops/provision.js.map +1 -0
- package/dist/ops/registry.d.ts +7 -0
- package/dist/ops/registry.d.ts.map +1 -0
- package/dist/ops/registry.js +73 -0
- package/dist/ops/registry.js.map +1 -0
- package/dist/ops/release.d.ts +26 -0
- package/dist/ops/release.d.ts.map +1 -0
- package/dist/ops/release.js +79 -0
- package/dist/ops/release.js.map +1 -0
- package/dist/ops/s3.d.ts +8 -0
- package/dist/ops/s3.d.ts.map +1 -0
- package/dist/ops/s3.js +38 -0
- package/dist/ops/s3.js.map +1 -0
- package/dist/ops/static-config.d.ts +14 -0
- package/dist/ops/static-config.d.ts.map +1 -0
- package/dist/ops/static-config.js +96 -0
- package/dist/ops/static-config.js.map +1 -0
- package/flowpress-deploy.php +2 -2
- package/includes/automatic-build.php +22 -5
- package/package.json +40 -6
- package/schema/deployment.schema.json +185 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/ops/cli.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export function projectRoot(start?: string): string;
|
|
2
|
+
export function readJson(file: any, fallback?: undefined): any;
|
|
3
|
+
export function writeJson(file: any, value: any, mode?: number): void;
|
|
4
|
+
export function readEnv(file: any): import("dotenv").DotenvParseOutput;
|
|
5
|
+
export function origin(value: any, label: any): string;
|
|
6
|
+
export function assertManifest(value: any): any;
|
|
7
|
+
export function readManifest(root?: string): any;
|
|
8
|
+
export function targetConfig(manifest: any, name: any): any;
|
|
9
|
+
export function allowedComponents(manifest: any, name: any, requested?: any[]): any;
|
|
10
|
+
export function identity(root?: string): {
|
|
11
|
+
slug: string;
|
|
12
|
+
displayName: any;
|
|
13
|
+
repository: any;
|
|
14
|
+
};
|
|
15
|
+
export function statePath(root: any, name: any): string;
|
|
16
|
+
export function loadState(root: any, name: any): any;
|
|
17
|
+
export function saveState(root: any, name: any, state: any): void;
|
|
18
|
+
export function platformConfig(root: any, manifest: any, file: any): any;
|
|
19
|
+
export function publicPlatform(id: any, platform: any): {
|
|
20
|
+
id: any;
|
|
21
|
+
coolifyUrl: any;
|
|
22
|
+
serverUuid: any;
|
|
23
|
+
ssh: any;
|
|
24
|
+
network: any;
|
|
25
|
+
subnet: any;
|
|
26
|
+
registry: any;
|
|
27
|
+
registryProject: any;
|
|
28
|
+
backupStorageUuid: any;
|
|
29
|
+
poolUuid: any;
|
|
30
|
+
destinationUuid: any;
|
|
31
|
+
phpImage: any;
|
|
32
|
+
};
|
|
33
|
+
export function databaseIdentity(slug: any, name: any): {
|
|
34
|
+
DB_NAME: string;
|
|
35
|
+
DB_USER: string;
|
|
36
|
+
};
|
|
37
|
+
export function ensureSecrets(root: any, name: any, slug: any): {
|
|
38
|
+
DB_NAME: string;
|
|
39
|
+
DB_USER: string;
|
|
40
|
+
};
|
|
41
|
+
export function operatorEnvironment(root: any): {
|
|
42
|
+
[x: string]: string | undefined;
|
|
43
|
+
};
|
|
44
|
+
export function imageRepository(platform: any, slug: any, component: any): string;
|
|
45
|
+
export function releaseTag(component: any, name: any, sha: any, buildId: any): string;
|
|
46
|
+
export const profiles: Readonly<{
|
|
47
|
+
backend: string[];
|
|
48
|
+
static: string[];
|
|
49
|
+
"headless-static": string[];
|
|
50
|
+
"headless-ssr": string[];
|
|
51
|
+
}>;
|
|
52
|
+
export const environments: string[];
|
|
53
|
+
export const saltKeys: string[];
|
|
54
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ops/config.js"],"names":[],"mappings":"AAaA,oDAQC;AACD,+DAGC;AACD,sEAKC;AACD,uEAEC;AACD,uDAOC;AACD,gDA0BC;AACD,iDAEC;AACD,4DAGC;AACD,oFAMC;AACD;;;;EAMC;AACD,wDAA+F;AAC/F,qDAAqF;AACrF,kEAWC;AACD,yEAwBC;AACD;;;;;;;;;;;;;EAGC;AACD;;;EAGC;AAED;;;EASC;AACD;;EAEC;AACD,kFAGC;AACD,sFAKC;AA3JD;;;;;GAKG;AACH,oCAA0E;AA8H1E,gCAAuJ"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { parse as parseYaml } from "yaml";
|
|
5
|
+
import { parse as parseEnv } from "dotenv";
|
|
6
|
+
export const profiles = Object.freeze({
|
|
7
|
+
backend: ["cms"],
|
|
8
|
+
static: ["web-static"],
|
|
9
|
+
"headless-static": ["cms", "web-static"],
|
|
10
|
+
"headless-ssr": ["cms", "web-ssr"],
|
|
11
|
+
});
|
|
12
|
+
export const environments = ["local", "staging", "production", "preview"];
|
|
13
|
+
export function projectRoot(start = process.env.FLOWPRESS_PROJECT_ROOT || process.cwd()) {
|
|
14
|
+
let root = resolve(start);
|
|
15
|
+
while (!existsSync(join(root, "flowpress.deploy.yaml")) && !existsSync(join(root, "pnpm-workspace.yaml"))) {
|
|
16
|
+
const parent = dirname(root);
|
|
17
|
+
if (parent === root)
|
|
18
|
+
throw new Error("Run this command inside a FlowPress project.");
|
|
19
|
+
root = parent;
|
|
20
|
+
}
|
|
21
|
+
return root;
|
|
22
|
+
}
|
|
23
|
+
export function readJson(file, fallback = undefined) {
|
|
24
|
+
if (!existsSync(file))
|
|
25
|
+
return fallback;
|
|
26
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
27
|
+
}
|
|
28
|
+
export function writeJson(file, value, mode = 0o644) {
|
|
29
|
+
mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
|
|
30
|
+
const temporary = file + ".tmp-" + process.pid;
|
|
31
|
+
writeFileSync(temporary, JSON.stringify(value, null, 2) + "\n", { mode });
|
|
32
|
+
renameSync(temporary, file);
|
|
33
|
+
}
|
|
34
|
+
export function readEnv(file) {
|
|
35
|
+
return existsSync(file) ? parseEnv(readFileSync(file)) : {};
|
|
36
|
+
}
|
|
37
|
+
export function origin(value, label) {
|
|
38
|
+
let url;
|
|
39
|
+
try {
|
|
40
|
+
url = new URL(value);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new Error(label + " must be an absolute HTTP(S) URL.");
|
|
44
|
+
}
|
|
45
|
+
if (!["https:", "http:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || url.pathname !== "/") {
|
|
46
|
+
throw new Error(label + " must be an origin without credentials, path, query or fragment.");
|
|
47
|
+
}
|
|
48
|
+
return url.origin;
|
|
49
|
+
}
|
|
50
|
+
export function assertManifest(value) {
|
|
51
|
+
if (!value || value.schemaVersion !== 1 || !profiles[value.profile])
|
|
52
|
+
throw new Error("Expected deployment schemaVersion 1 and a supported profile.");
|
|
53
|
+
if (typeof value.platform !== "string" || !/^[a-z0-9][a-z0-9-]*$/.test(value.platform))
|
|
54
|
+
throw new Error("Invalid platform identifier.");
|
|
55
|
+
if (value.database !== "shared" || !["local", "s3"].includes(value.media))
|
|
56
|
+
throw new Error("Use database: shared and media: local|s3.");
|
|
57
|
+
if (!value.environments || typeof value.environments !== "object")
|
|
58
|
+
throw new Error("Missing environments.");
|
|
59
|
+
if (value.development?.ports)
|
|
60
|
+
for (const [key, port] of Object.entries(value.development.ports)) {
|
|
61
|
+
if (!["web", "cms", "https", "database"].includes(key) || !Number.isInteger(port) || port < 1 || port > 65535)
|
|
62
|
+
throw new Error("Invalid development port: " + key);
|
|
63
|
+
}
|
|
64
|
+
for (const [name, target] of Object.entries(value.environments)) {
|
|
65
|
+
if (!environments.includes(name))
|
|
66
|
+
throw new Error("Unsupported environment: " + name);
|
|
67
|
+
const components = name === "preview" ? ["web-ssr"] : profiles[target.profile || value.profile];
|
|
68
|
+
if (!components)
|
|
69
|
+
throw new Error("Unsupported profile for " + name);
|
|
70
|
+
if (!Array.isArray(target.publish) || target.publish.some(component => !components.includes(component)) || new Set(target.publish).size !== target.publish.length) {
|
|
71
|
+
throw new Error("Explicit publish list required for " + name + "; select components from " + components.join(", "));
|
|
72
|
+
}
|
|
73
|
+
for (const key of ["backendUrl", "frontendUrl"])
|
|
74
|
+
if (target[key])
|
|
75
|
+
origin(target[key], name + "." + key);
|
|
76
|
+
for (const key of ["aliases", "backendAliases"])
|
|
77
|
+
if (target[key] !== undefined) {
|
|
78
|
+
if (!Array.isArray(target[key]))
|
|
79
|
+
throw new Error(name + "." + key + " must be a list of origins.");
|
|
80
|
+
for (const value of target[key])
|
|
81
|
+
origin(value, name + "." + key);
|
|
82
|
+
}
|
|
83
|
+
if (target.publish.includes("cms") && !target.backendUrl)
|
|
84
|
+
throw new Error(name + " CMS requires backendUrl.");
|
|
85
|
+
if (target.publish.some(component => component !== "cms") && !target.frontendUrl)
|
|
86
|
+
throw new Error(name + " frontend requires frontendUrl.");
|
|
87
|
+
if (name === "preview" && (target.mode !== "on-demand" || !["staging", "production"].includes(target.backend)))
|
|
88
|
+
throw new Error("Preview requires mode: on-demand and backend: staging|production.");
|
|
89
|
+
if (target.backend && !value.environments[target.backend])
|
|
90
|
+
throw new Error("Unknown backend reference: " + target.backend);
|
|
91
|
+
}
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
export function readManifest(root = projectRoot()) {
|
|
95
|
+
return assertManifest(parseYaml(readFileSync(join(root, "flowpress.deploy.yaml"), "utf8"), { uniqueKeys: true, maxAliasCount: 0 }));
|
|
96
|
+
}
|
|
97
|
+
export function targetConfig(manifest, name) {
|
|
98
|
+
if (!environments.includes(name) || !manifest.environments[name])
|
|
99
|
+
throw new Error("Environment not configured: " + name);
|
|
100
|
+
return manifest.environments[name];
|
|
101
|
+
}
|
|
102
|
+
export function allowedComponents(manifest, name, requested = []) {
|
|
103
|
+
const target = targetConfig(manifest, name);
|
|
104
|
+
const selected = requested.length ? requested : target.publish;
|
|
105
|
+
if (!selected.length)
|
|
106
|
+
throw new Error("Publication is disabled for " + name + ".");
|
|
107
|
+
for (const component of selected)
|
|
108
|
+
if (!target.publish.includes(component))
|
|
109
|
+
throw new Error("Publication of " + component + " is disabled for " + name + ".");
|
|
110
|
+
return selected;
|
|
111
|
+
}
|
|
112
|
+
export function identity(root = projectRoot()) {
|
|
113
|
+
const config = readJson(join(root, "flowpress.config.json"));
|
|
114
|
+
const pkg = readJson(join(root, "package.json"), {});
|
|
115
|
+
const slug = config?.project?.slug || pkg.name;
|
|
116
|
+
if (typeof slug !== "string" || !/^[a-z0-9][a-z0-9.-]*$/.test(slug))
|
|
117
|
+
throw new Error("A safe project slug is required.");
|
|
118
|
+
return { slug, displayName: config?.project?.displayName || slug, repository: config?.repository?.slug };
|
|
119
|
+
}
|
|
120
|
+
export function statePath(root, name) { return join(root, "deploy", "state", name + ".json"); }
|
|
121
|
+
export function loadState(root, name) { return readJson(statePath(root, name), {}); }
|
|
122
|
+
export function saveState(root, name, state) {
|
|
123
|
+
const binding = structuredClone(state), runtime = { apps: {} };
|
|
124
|
+
for (const [component, app] of Object.entries(binding.apps || {})) {
|
|
125
|
+
for (const key of ["current", "previous", "deployedAt"])
|
|
126
|
+
if (app[key] !== undefined) {
|
|
127
|
+
runtime.apps[component] ||= {};
|
|
128
|
+
runtime.apps[component][key] = app[key];
|
|
129
|
+
delete app[key];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
writeJson(statePath(root, name), binding);
|
|
133
|
+
if (Object.keys(runtime.apps).length)
|
|
134
|
+
writeJson(join(root, ".local/flowpress", "runtime-" + name + ".json"), runtime, 0o600);
|
|
135
|
+
}
|
|
136
|
+
export function platformConfig(root, manifest, file) {
|
|
137
|
+
if (file || process.env.FLOWPRESS_PLATFORMS_FILE) {
|
|
138
|
+
const catalogFile = file || process.env.FLOWPRESS_PLATFORMS_FILE;
|
|
139
|
+
const catalog = parseYaml(readFileSync(catalogFile, "utf8"));
|
|
140
|
+
const platform = catalog.platforms?.[manifest.platform];
|
|
141
|
+
if (!platform)
|
|
142
|
+
throw new Error("Platform not found: " + manifest.platform);
|
|
143
|
+
if (platform.server) {
|
|
144
|
+
const server = parseYaml(readFileSync(join(dirname(catalogFile), "servers.yaml"), "utf8")).servers?.[platform.server];
|
|
145
|
+
if (!server?.ssh?.alias || !server.ssh.user || !server.coolify_server_uuid)
|
|
146
|
+
throw new Error("Incomplete server inventory binding: " + platform.server);
|
|
147
|
+
platform.serverUuid = server.coolify_server_uuid;
|
|
148
|
+
platform.ssh = server.ssh.user + "@" + server.ssh.alias;
|
|
149
|
+
}
|
|
150
|
+
if (platform.panel) {
|
|
151
|
+
const panel = parseYaml(readFileSync(join(dirname(catalogFile), "panels.yaml"), "utf8")).panels?.[platform.panel];
|
|
152
|
+
if (!panel?.panel_url_tailnet)
|
|
153
|
+
throw new Error("Missing private panel URL in inventory.");
|
|
154
|
+
platform.coolifyUrl = panel.panel_url_tailnet;
|
|
155
|
+
}
|
|
156
|
+
return { ...platform, registryProject: manifest.registryProject || identity(root).slug };
|
|
157
|
+
}
|
|
158
|
+
for (const name of Object.keys(manifest.environments)) {
|
|
159
|
+
const state = loadState(root, name);
|
|
160
|
+
if (state.platform?.id === manifest.platform)
|
|
161
|
+
return { ...state.platform, registryProject: manifest.registryProject || identity(root).slug };
|
|
162
|
+
}
|
|
163
|
+
throw new Error("Set FLOWPRESS_PLATFORMS_FILE for initial provisioning.");
|
|
164
|
+
}
|
|
165
|
+
export function publicPlatform(id, platform) {
|
|
166
|
+
const { coolifyUrl, serverUuid, ssh, network, subnet, registry, registryProject, backupStorageUuid, poolUuid, destinationUuid, phpImage } = platform;
|
|
167
|
+
return { id, coolifyUrl, serverUuid, ssh, network, subnet, registry, registryProject, backupStorageUuid, poolUuid, destinationUuid, phpImage };
|
|
168
|
+
}
|
|
169
|
+
export function databaseIdentity(slug, name) {
|
|
170
|
+
const hash = createHash("sha256").update(slug + ":" + name).digest("hex").slice(0, 16);
|
|
171
|
+
return { DB_NAME: "fp" + hash, DB_USER: "fp" + hash };
|
|
172
|
+
}
|
|
173
|
+
export const saltKeys = ["AUTH_KEY", "SECURE_AUTH_KEY", "LOGGED_IN_KEY", "NONCE_KEY", "AUTH_SALT", "SECURE_AUTH_SALT", "LOGGED_IN_SALT", "NONCE_SALT"];
|
|
174
|
+
export function ensureSecrets(root, name, slug) {
|
|
175
|
+
const file = join(root, ".secrets", name + ".env");
|
|
176
|
+
const current = readEnv(file);
|
|
177
|
+
const values = { ...databaseIdentity(slug, name), ...current };
|
|
178
|
+
for (const key of [...saltKeys, "DB_PASSWORD", "CMS_BUILD_CALLBACK_TOKEN"])
|
|
179
|
+
values[key] ||= randomBytes(32).toString("hex");
|
|
180
|
+
values.DB_PREFIX ||= "fp_";
|
|
181
|
+
mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
|
|
182
|
+
writeFileSync(file, Object.entries(values).map(([key, value]) => key + "=" + JSON.stringify(value)).join("\n") + "\n", { mode: 0o600 });
|
|
183
|
+
return values;
|
|
184
|
+
}
|
|
185
|
+
export function operatorEnvironment(root) {
|
|
186
|
+
return { ...readEnv(join(root, ".secrets", "ops.env")), ...process.env };
|
|
187
|
+
}
|
|
188
|
+
export function imageRepository(platform, slug, component) {
|
|
189
|
+
if (!/^[a-z0-9][a-z0-9.-]*$/.test(slug) || !["cms", "web-static", "web-ssr"].includes(component))
|
|
190
|
+
throw new Error("Invalid image identity.");
|
|
191
|
+
return platform.registry + "/" + platform.registryProject + "/" + slug + "-" + component;
|
|
192
|
+
}
|
|
193
|
+
export function releaseTag(component, name, sha, buildId) {
|
|
194
|
+
if (!/^[a-f0-9]{40}$/.test(sha))
|
|
195
|
+
throw new Error("Expected a full commit SHA.");
|
|
196
|
+
if (component === "cms")
|
|
197
|
+
return "sha-" + sha;
|
|
198
|
+
if (!/^[a-zA-Z0-9][a-zA-Z0-9.-]{0,63}$/.test(buildId || ""))
|
|
199
|
+
throw new Error("A safe frontend build ID is required.");
|
|
200
|
+
return name + "-" + sha + "-" + buildId;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/ops/config.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coolify.d.ts","sourceRoot":"","sources":["../../src/ops/coolify.js"],"names":[],"mappings":"AACA,0DAGgC,WAAM,EAAE,SAAI,EAAE,SAAI,kBA8BjD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Minimal Coolify v4 REST client (reachable only through the tailnet).
|
|
2
|
+
export function coolifyClient(baseUrl, token) {
|
|
3
|
+
if (!token)
|
|
4
|
+
throw new Error("Missing Coolify API token (COOLIFY_TOKEN).");
|
|
5
|
+
const api = `${baseUrl.replace(/\/+$/, "")}/api/v1`;
|
|
6
|
+
return async function request(method, path, body) {
|
|
7
|
+
for (let attempt = 0;; attempt++) {
|
|
8
|
+
try {
|
|
9
|
+
const response = await fetch(`${api}${path}`, {
|
|
10
|
+
method,
|
|
11
|
+
signal: AbortSignal.timeout(30_000),
|
|
12
|
+
headers: {
|
|
13
|
+
accept: "application/json",
|
|
14
|
+
authorization: `Bearer ${token}`,
|
|
15
|
+
...(body ? { "content-type": "application/json" } : {}),
|
|
16
|
+
},
|
|
17
|
+
...(body ? { body: JSON.stringify(body) } : {}),
|
|
18
|
+
});
|
|
19
|
+
const text = await response.text();
|
|
20
|
+
let data;
|
|
21
|
+
try {
|
|
22
|
+
data = text ? JSON.parse(text) : {};
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
data = { message: text.slice(0, 300) };
|
|
26
|
+
}
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
const details = data?.message ? String(data.message).replace(/Bearer\s+\S+/g, "[redacted]").slice(0, 160) : "Request refused";
|
|
29
|
+
const error = new Error(`${method} ${path.split("?")[0]} -> HTTP ${response.status}: ${details}`);
|
|
30
|
+
error.status = response.status;
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const transient = error.status === undefined || error.status >= 500 || error.status === 429;
|
|
37
|
+
if (method !== "GET" || !transient || attempt >= 2)
|
|
38
|
+
throw error;
|
|
39
|
+
await new Promise((resolve) => setTimeout(resolve, 2000 * (attempt + 1)));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=coolify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coolify.js","sourceRoot":"","sources":["../../src/ops/coolify.js"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,OAAO,EAAE,KAAK;IAC1C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACpD,OAAO,KAAK,UAAU,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI;QAC9C,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE;oBAC5C,MAAM;oBACN,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;oBACnC,OAAO,EAAE;wBACP,MAAM,EAAE,kBAAkB;wBAC1B,aAAa,EAAE,UAAU,KAAK,EAAE;wBAChC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxD;oBACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC;gBACT,IAAI,CAAC;oBAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAAC,CAAC;gBAC9F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBAC9H,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;oBAClG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;gBAC5F,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAChE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function safeArchiveEntries(entries: any): void;
|
|
2
|
+
export function pullSource(root: any, manifest: any, sourceName: any): Promise<{
|
|
3
|
+
source: any;
|
|
4
|
+
createdAt: string;
|
|
5
|
+
dump: string;
|
|
6
|
+
archive: string;
|
|
7
|
+
sha256: string;
|
|
8
|
+
}>;
|
|
9
|
+
export function prepareData(root: any, manifest: any, name: any, { file, image, source }: {
|
|
10
|
+
file: any;
|
|
11
|
+
image: any;
|
|
12
|
+
source?: string | undefined;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
file: string;
|
|
15
|
+
counts: any;
|
|
16
|
+
prefix: any;
|
|
17
|
+
}>;
|
|
18
|
+
export function pushData(root: any, manifest: any, name: any, file: any): Promise<{
|
|
19
|
+
environment: any;
|
|
20
|
+
imported: boolean;
|
|
21
|
+
database: any;
|
|
22
|
+
}>;
|
|
23
|
+
export function pushUploads(root: any, manifest: any, name: any, archive: any): Promise<{
|
|
24
|
+
environment: any;
|
|
25
|
+
uploadsCopied: boolean;
|
|
26
|
+
}>;
|
|
27
|
+
export function cleanIntegrations(root: any, manifest: any, name: any): Promise<{
|
|
28
|
+
environment: any;
|
|
29
|
+
output: any;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/ops/data.js"],"names":[],"mappings":"AAUA,uDAGC;AACD;;;;;;GAgBC;AAUD;;;;;;;;GAsDC;AACD;;;;GAiBC;AACD;;;GAWC;AAED;;;GAUC"}
|
package/dist/ops/data.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join, resolve, dirname } from "node:path";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
|
+
import { allowedComponents, ensureSecrets, identity, loadState, readEnv, readJson, saveState, targetConfig, writeJson } from "./config.js";
|
|
6
|
+
import { manifestEnvironment } from "./environment.js";
|
|
7
|
+
import { containers } from "./build.js";
|
|
8
|
+
import { capture, containerFor, run, shellQuote, sleep, ssh, sshFile } from "./process.js";
|
|
9
|
+
import { sqlIdentifier } from "./provision.js";
|
|
10
|
+
export function safeArchiveEntries(entries) {
|
|
11
|
+
if (!entries.length || entries.some(path => path.startsWith("/") || path.includes("\\") || path.split("/").includes("..")))
|
|
12
|
+
throw new Error("Unsafe or empty uploads archive.");
|
|
13
|
+
if (entries.some(path => /(?:^|\/)wp-migrate-db(?:\/|$)|\.(?:sql(?:\.gz)?|env|bak)$/i.test(path)))
|
|
14
|
+
throw new Error("Uploads archive contains private backup material.");
|
|
15
|
+
}
|
|
16
|
+
export async function pullSource(root, manifest, sourceName) {
|
|
17
|
+
const source = manifest.sources?.[sourceName];
|
|
18
|
+
if (!source || !/^[a-zA-Z0-9_.@-]+$/.test(source.ssh || "") || !/^[a-z_][a-z0-9_-]*$/.test(source.user || "") || !source.path?.startsWith("/") || source.path.includes("\n"))
|
|
19
|
+
throw new Error("Configure a read-only source with ssh, user and absolute CMS path.");
|
|
20
|
+
const directory = join(root, ".local/flowpress", "source-" + sourceName + "-" + Date.now());
|
|
21
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
22
|
+
const wp = "runuser -u " + shellQuote(source.user) + " -- wp --path=" + shellQuote(source.path + "/web/wp") + " --skip-plugins --skip-themes";
|
|
23
|
+
const dump = join(directory, "source.sql");
|
|
24
|
+
await sshFile(source, wp + " db export - --single-transaction --skip-lock-tables --quiet", { output: dump });
|
|
25
|
+
const archive = join(directory, "uploads.tar");
|
|
26
|
+
const excludes = ["./wp-migrate-db", "*.sql", "*.sql.gz", "*.env", "*.bak"].map(value => " --exclude=" + shellQuote(value)).join("");
|
|
27
|
+
await sshFile(source, "tar -C " + shellQuote(source.path + "/web/app/uploads") + excludes + " -cf - .", { output: archive });
|
|
28
|
+
safeArchiveEntries(capture("tar", ["-tf", archive]).split("\n").filter(Boolean));
|
|
29
|
+
const meta = { source: sourceName, createdAt: new Date().toISOString(), dump, archive,
|
|
30
|
+
sha256: createHash("sha256").update(readFileSync(dump)).digest("hex") };
|
|
31
|
+
writeJson(join(directory, "snapshot.json"), meta, 0o600);
|
|
32
|
+
return meta;
|
|
33
|
+
}
|
|
34
|
+
function mysql(container, password, args, input = "") {
|
|
35
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(container) || /[\r\n]/.test(password))
|
|
36
|
+
throw new Error("Invalid database container credentials.");
|
|
37
|
+
return capture("docker", ["exec", "-i", container, "sh", "-c",
|
|
38
|
+
'read -r MYSQL_PWD; export MYSQL_PWD; exec mariadb -uroot --batch ' + args.map(shellQuote).join(" ")], { input: password + "\n" + input });
|
|
39
|
+
}
|
|
40
|
+
function dumpCopy(container, password, database) {
|
|
41
|
+
return capture("docker", ["exec", "-i", container, "sh", "-c",
|
|
42
|
+
'read -r MYSQL_PWD; export MYSQL_PWD; exec mariadb-dump -uroot --single-transaction --skip-lock-tables --skip-add-locks --skip-comments --no-tablespaces ' + sqlIdentifier(database)], { input: password + "\n", maxBuffer: 256 * 1024 * 1024 });
|
|
43
|
+
}
|
|
44
|
+
export async function prepareData(root, manifest, name, { file, image, source = "production" }) {
|
|
45
|
+
allowedComponents(manifest, name, ["cms"]);
|
|
46
|
+
if (name === "production")
|
|
47
|
+
throw new Error("Data preparation for production is not supported by this migration command.");
|
|
48
|
+
if (!file || !existsSync(file))
|
|
49
|
+
throw new Error("A source dump is required.");
|
|
50
|
+
const project = identity(root);
|
|
51
|
+
const values = ensureSecrets(root, name, project.slug);
|
|
52
|
+
const env = { ...manifestEnvironment(root, name, {}), DB_HOST: "127.0.0.1:3306", DB_NAME: values.DB_NAME, DB_USER: values.DB_USER, DB_PASSWORD: values.DB_PASSWORD, DB_PREFIX: values.DB_PREFIX };
|
|
53
|
+
// The source prefix belongs to the SQL snapshot, not to an environment credential.
|
|
54
|
+
const original = readFileSync(file, "utf8");
|
|
55
|
+
const match = original.match(/CREATE TABLE (?:IF NOT EXISTS )?\x60([a-zA-Z0-9_]+)options\x60/);
|
|
56
|
+
if (!match)
|
|
57
|
+
throw new Error("Cannot identify the WordPress table prefix in the snapshot.");
|
|
58
|
+
env.DB_PREFIX = match[1];
|
|
59
|
+
values.DB_PREFIX = match[1];
|
|
60
|
+
const secretsPath = join(root, ".secrets", name + ".env");
|
|
61
|
+
writeFileSync(secretsPath, Object.entries(values).map(([key, value]) => key + "=" + JSON.stringify(value)).join("\n") + "\n", { mode: 0o600 });
|
|
62
|
+
const release = readJson(join(root, ".local/flowpress", "release-" + name + "-cms.json"));
|
|
63
|
+
const cmsImage = image || (release && release.repository + ":" + release.tag);
|
|
64
|
+
if (!cmsImage)
|
|
65
|
+
throw new Error("Build the CMS image before preparing data.");
|
|
66
|
+
const directory = join(root, ".local/flowpress", "prepared-" + name + "-" + Date.now());
|
|
67
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
68
|
+
const envFile = join(directory, "cms.env");
|
|
69
|
+
writeFileSync(envFile, Object.entries(env).filter(([, value]) => typeof value === "string").map(([key, value]) => key + "=" + value).join("\n") + "\n", { mode: 0o600 });
|
|
70
|
+
const database = "flowpress-transform-" + process.pid;
|
|
71
|
+
const password = randomBytes(32).toString("hex");
|
|
72
|
+
run("docker", ["run", "--rm", "-d", "--name", database, "--network", "none", "--env-file", envFile, "-e", "MARIADB_ROOT_PASSWORD=" + password, "mariadb:11.4"], { stdio: "ignore" });
|
|
73
|
+
try {
|
|
74
|
+
let ready = false;
|
|
75
|
+
for (let attempt = 0; attempt < 60; attempt++) {
|
|
76
|
+
try {
|
|
77
|
+
capture("docker", ["exec", database, "healthcheck.sh", "--connect", "--innodb_initialized"]);
|
|
78
|
+
ready = true;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
await sleep(2000);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!ready)
|
|
86
|
+
throw new Error("Disposable database did not start.");
|
|
87
|
+
const account = "CREATE DATABASE " + sqlIdentifier(values.DB_NAME) + ";\nCREATE USER '" + sqlIdentifier(values.DB_USER) + "'@'127.0.0.1' IDENTIFIED BY '" + values.DB_PASSWORD + "';\nGRANT ALL ON " + values.DB_NAME + ".* TO '" + values.DB_USER + "'@'127.0.0.1';\n";
|
|
88
|
+
mysql(database, password, [], account);
|
|
89
|
+
mysql(database, password, [values.DB_NAME], original);
|
|
90
|
+
const wp = args => capture("docker", ["run", "--rm", "--network", "container:" + database, "--env-file", envFile,
|
|
91
|
+
"-v", join(containers, "cms") + ":/tmp/flowpress-sanitizers:ro", cmsImage, "wp", ...args], { maxBuffer: 256 * 1024 * 1024 });
|
|
92
|
+
const sourceTarget = targetConfig(manifest, source);
|
|
93
|
+
const replacements = [
|
|
94
|
+
[sourceTarget.backendUrl, env.BACKEND_URL],
|
|
95
|
+
...(sourceTarget.backendAliases || []).map(from => [from, env.BACKEND_URL]),
|
|
96
|
+
[sourceTarget.frontendUrl, env.SITE_URL],
|
|
97
|
+
...(sourceTarget.aliases || []).map(from => [from, env.SITE_URL]),
|
|
98
|
+
[sourceTarget.mediaUrl, env.BACKEND_URL + "/app/uploads"],
|
|
99
|
+
].filter(([from, to]) => from && to && from !== to).sort((a, b) => b[0].length - a[0].length);
|
|
100
|
+
for (const [from, to] of replacements)
|
|
101
|
+
wp(["search-replace", from, to, "--all-tables-with-prefix", "--precise", "--quiet"]);
|
|
102
|
+
const output = wp(["eval-file", "/tmp/flowpress-sanitizers/sanitize.php"]);
|
|
103
|
+
const counts = JSON.parse(output.split("\n").findLast(line => line.startsWith("{")));
|
|
104
|
+
const transformed = join(directory, "staging.sql");
|
|
105
|
+
writeFileSync(transformed, dumpCopy(database, password, values.DB_NAME) + "\n", { mode: 0o600 });
|
|
106
|
+
writeJson(join(directory, "prepared.json"), { environment: name, source, preparedAt: new Date().toISOString(), prefix: env.DB_PREFIX, counts, file: transformed }, 0o600);
|
|
107
|
+
return { file: transformed, counts, prefix: env.DB_PREFIX };
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
run("docker", ["rm", "-fv", database], { stdio: "ignore" });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export async function pushData(root, manifest, name, file) {
|
|
114
|
+
allowedComponents(manifest, name, ["cms"]);
|
|
115
|
+
if (name === "production")
|
|
116
|
+
throw new Error("Production imports require a separate reviewed procedure.");
|
|
117
|
+
const state = loadState(root, name);
|
|
118
|
+
if (state.seededAt)
|
|
119
|
+
throw new Error("This database was already seeded. Refusing an implicit overwrite.");
|
|
120
|
+
const values = readEnv(join(root, ".secrets", name + ".env"));
|
|
121
|
+
if (!values.DB_PASSWORD || state.database?.name !== values.DB_NAME)
|
|
122
|
+
throw new Error("Database binding mismatch.");
|
|
123
|
+
const pool = sqlIdentifier(values.DB_NAME), user = sqlIdentifier(values.DB_USER);
|
|
124
|
+
const program = 'read -r MYSQL_PWD; export MYSQL_PWD; exec mariadb --batch -u' + user + " " + pool;
|
|
125
|
+
const existing = ssh(state.platform, "docker exec -i " + state.platform.poolUuid + " sh -c " + shellQuote(program), { input: values.DB_PASSWORD + "\nSELECT COUNT(*) FROM information_schema.tables WHERE table_schema=DATABASE();\n" });
|
|
126
|
+
if (existing.trim() !== "COUNT(*)\n0" && existing.trim() !== "0")
|
|
127
|
+
throw new Error("Refusing to import into a nonempty database.");
|
|
128
|
+
const sql = readFileSync(resolve(file), "utf8");
|
|
129
|
+
if (/^\s*(?:CREATE|DROP)\s+(?:DATABASE|USER)\b/im.test(sql) || /^\s*USE\s+/im.test(sql))
|
|
130
|
+
throw new Error("The import must contain only the prepared schema, without database/user operations.");
|
|
131
|
+
ssh(state.platform, "docker exec -i " + state.platform.poolUuid + " sh -c " + shellQuote(program), { input: values.DB_PASSWORD + "\n" + sql, maxBuffer: 256 * 1024 * 1024 });
|
|
132
|
+
state.seededAt = new Date().toISOString();
|
|
133
|
+
saveState(root, name, state);
|
|
134
|
+
return { environment: name, imported: true, database: pool };
|
|
135
|
+
}
|
|
136
|
+
export async function pushUploads(root, manifest, name, archive) {
|
|
137
|
+
allowedComponents(manifest, name, ["cms"]);
|
|
138
|
+
const state = loadState(root, name);
|
|
139
|
+
const app = state.apps?.cms;
|
|
140
|
+
if (!app?.uuid)
|
|
141
|
+
throw new Error("CMS must be provisioned first.");
|
|
142
|
+
safeArchiveEntries(capture("tar", ["-tf", archive]).split("\n").filter(Boolean));
|
|
143
|
+
const listing = capture("tar", ["-tvf", archive]);
|
|
144
|
+
if (listing.split("\n").some(line => /^[lhbcps]/.test(line)))
|
|
145
|
+
throw new Error("Uploads archive contains links or special files.");
|
|
146
|
+
const container = containerFor(state.platform, app.uuid);
|
|
147
|
+
await sshFile(state.platform, "docker exec -i " + shellQuote(container) + " tar -C /srv/cms/web/app/uploads -xf -", { input: archive });
|
|
148
|
+
return { environment: name, uploadsCopied: true };
|
|
149
|
+
}
|
|
150
|
+
export async function cleanIntegrations(root, manifest, name) {
|
|
151
|
+
allowedComponents(manifest, name, ["cms"]);
|
|
152
|
+
if (name === "production")
|
|
153
|
+
throw new Error("Integration cleanup is restricted to non-production clones.");
|
|
154
|
+
const state = loadState(root, name), app = state.apps?.cms;
|
|
155
|
+
if (!app?.uuid)
|
|
156
|
+
throw new Error("CMS not provisioned.");
|
|
157
|
+
const container = containerFor(state.platform, app.uuid);
|
|
158
|
+
const script = readFileSync(join(containers, "cms/sanitize-integrations.php"), "utf8").replace(/^<\?php\s*/, "");
|
|
159
|
+
// This program contains no credentials. Only option names and counts are returned.
|
|
160
|
+
const output = ssh(state.platform, "docker exec " + shellQuote(container) + " wp eval " + shellQuote(script));
|
|
161
|
+
return { environment: name, output };
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/ops/data.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export function assertRelease(release: any, app: any, name: any, component: any): void;
|
|
2
|
+
export function waitHealth(app: any, release: any, { fetchImpl, attempts, delay }?: {
|
|
3
|
+
fetchImpl?: typeof fetch | undefined;
|
|
4
|
+
attempts?: number | undefined;
|
|
5
|
+
delay?: number | undefined;
|
|
6
|
+
}): Promise<any>;
|
|
7
|
+
export function waitDeployment(api: any, id: any): Promise<void>;
|
|
8
|
+
export function registryRelease(app: any, name: any, component: any, alias: any, operator: any): Promise<{
|
|
9
|
+
component: any;
|
|
10
|
+
environment: any;
|
|
11
|
+
repository: any;
|
|
12
|
+
tag: string;
|
|
13
|
+
sha: any;
|
|
14
|
+
digest: string;
|
|
15
|
+
buildId: any;
|
|
16
|
+
pushed: boolean;
|
|
17
|
+
} | null>;
|
|
18
|
+
export function deployedRelease(root: any, name: any, component: any): Promise<{
|
|
19
|
+
component: any;
|
|
20
|
+
environment: any;
|
|
21
|
+
repository: any;
|
|
22
|
+
tag: string;
|
|
23
|
+
sha: any;
|
|
24
|
+
digest: string;
|
|
25
|
+
buildId: any;
|
|
26
|
+
pushed: boolean;
|
|
27
|
+
} | null>;
|
|
28
|
+
export function deploy(root: any, manifest: any, name: any, component: any, { rollback, release: supplied }?: {
|
|
29
|
+
rollback?: boolean | undefined;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
component: any;
|
|
32
|
+
environment: any;
|
|
33
|
+
release: any;
|
|
34
|
+
digest: any;
|
|
35
|
+
url: any;
|
|
36
|
+
rollback: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=deploy.d.ts.map
|