@styleflow.app/flowpress-deploy 1.0.0-beta.2 → 1.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +5 -0
  3. package/containers/cms/Dockerfile +35 -0
  4. package/containers/cms/Dockerfile.dockerignore +20 -0
  5. package/containers/cms/healthz.php +17 -0
  6. package/containers/cms/install-languages.sh +16 -0
  7. package/containers/cms/mpm.conf +10 -0
  8. package/containers/cms/php.ini +16 -0
  9. package/containers/cms/sanitize-integrations.php +14 -0
  10. package/containers/cms/sanitize.php +37 -0
  11. package/containers/cms/smtp.php +13 -0
  12. package/containers/cms/vhost.conf +61 -0
  13. package/containers/cms/wp-cli.yml +1 -0
  14. package/containers/local/cms/Dockerfile +18 -0
  15. package/containers/local/cms/entrypoint.sh +7 -0
  16. package/containers/local/cms/php.ini +8 -0
  17. package/containers/local/cms/vhost.conf +14 -0
  18. package/containers/local/web/Dockerfile +8 -0
  19. package/containers/local/web/entrypoint.sh +10 -0
  20. package/containers/php-runtime/Dockerfile +21 -0
  21. package/containers/web-ssr/Dockerfile +27 -0
  22. package/containers/web-ssr/Dockerfile.dockerignore +10 -0
  23. package/containers/web-static/Caddyfile +40 -0
  24. package/containers/web-static/Dockerfile +17 -0
  25. package/containers/web-static/Dockerfile.dockerignore +7 -0
  26. package/dist/development.d.ts +4 -0
  27. package/dist/development.d.ts.map +1 -0
  28. package/dist/development.js +10 -0
  29. package/dist/development.js.map +1 -0
  30. package/dist/node-fetch.d.ts +3 -0
  31. package/dist/node-fetch.d.ts.map +1 -0
  32. package/dist/node-fetch.js +20 -0
  33. package/dist/node-fetch.js.map +1 -0
  34. package/dist/ops/bootstrap.d.ts +21 -0
  35. package/dist/ops/bootstrap.d.ts.map +1 -0
  36. package/dist/ops/bootstrap.js +123 -0
  37. package/dist/ops/bootstrap.js.map +1 -0
  38. package/dist/ops/build.d.ts +39 -0
  39. package/dist/ops/build.d.ts.map +1 -0
  40. package/dist/ops/build.js +110 -0
  41. package/dist/ops/build.js.map +1 -0
  42. package/dist/ops/check.d.ts +18 -0
  43. package/dist/ops/check.d.ts.map +1 -0
  44. package/dist/ops/check.js +46 -0
  45. package/dist/ops/check.js.map +1 -0
  46. package/dist/ops/cli.d.ts +3 -0
  47. package/dist/ops/cli.d.ts.map +1 -0
  48. package/dist/ops/cli.js +166 -0
  49. package/dist/ops/cli.js.map +1 -0
  50. package/dist/ops/config.d.ts +54 -0
  51. package/dist/ops/config.d.ts.map +1 -0
  52. package/dist/ops/config.js +202 -0
  53. package/dist/ops/config.js.map +1 -0
  54. package/dist/ops/coolify.d.ts +2 -0
  55. package/dist/ops/coolify.d.ts.map +1 -0
  56. package/dist/ops/coolify.js +44 -0
  57. package/dist/ops/coolify.js.map +1 -0
  58. package/dist/ops/data.d.ts +31 -0
  59. package/dist/ops/data.d.ts.map +1 -0
  60. package/dist/ops/data.js +163 -0
  61. package/dist/ops/data.js.map +1 -0
  62. package/dist/ops/deploy.d.ts +38 -0
  63. package/dist/ops/deploy.d.ts.map +1 -0
  64. package/dist/ops/deploy.js +127 -0
  65. package/dist/ops/deploy.js.map +1 -0
  66. package/dist/ops/editorial.d.ts +23 -0
  67. package/dist/ops/editorial.d.ts.map +1 -0
  68. package/dist/ops/editorial.js +79 -0
  69. package/dist/ops/editorial.js.map +1 -0
  70. package/dist/ops/environment-files.d.ts +9 -0
  71. package/dist/ops/environment-files.d.ts.map +1 -0
  72. package/dist/ops/environment-files.js +125 -0
  73. package/dist/ops/environment-files.js.map +1 -0
  74. package/dist/ops/environment.d.ts +29 -0
  75. package/dist/ops/environment.d.ts.map +1 -0
  76. package/dist/ops/environment.js +159 -0
  77. package/dist/ops/environment.js.map +1 -0
  78. package/dist/ops/health.d.ts +26 -0
  79. package/dist/ops/health.d.ts.map +1 -0
  80. package/dist/ops/health.js +27 -0
  81. package/dist/ops/health.js.map +1 -0
  82. package/dist/ops/local.d.ts +161 -0
  83. package/dist/ops/local.d.ts.map +1 -0
  84. package/dist/ops/local.js +173 -0
  85. package/dist/ops/local.js.map +1 -0
  86. package/dist/ops/monitor.d.ts +23 -0
  87. package/dist/ops/monitor.d.ts.map +1 -0
  88. package/dist/ops/monitor.js +143 -0
  89. package/dist/ops/monitor.js.map +1 -0
  90. package/dist/ops/process.d.ts +9 -0
  91. package/dist/ops/process.d.ts.map +1 -0
  92. package/dist/ops/process.js +56 -0
  93. package/dist/ops/process.js.map +1 -0
  94. package/dist/ops/provision.d.ts +41 -0
  95. package/dist/ops/provision.d.ts.map +1 -0
  96. package/dist/ops/provision.js +268 -0
  97. package/dist/ops/provision.js.map +1 -0
  98. package/dist/ops/registry.d.ts +7 -0
  99. package/dist/ops/registry.d.ts.map +1 -0
  100. package/dist/ops/registry.js +73 -0
  101. package/dist/ops/registry.js.map +1 -0
  102. package/dist/ops/release.d.ts +26 -0
  103. package/dist/ops/release.d.ts.map +1 -0
  104. package/dist/ops/release.js +79 -0
  105. package/dist/ops/release.js.map +1 -0
  106. package/dist/ops/s3.d.ts +8 -0
  107. package/dist/ops/s3.d.ts.map +1 -0
  108. package/dist/ops/s3.js +38 -0
  109. package/dist/ops/s3.js.map +1 -0
  110. package/dist/ops/static-config.d.ts +14 -0
  111. package/dist/ops/static-config.d.ts.map +1 -0
  112. package/dist/ops/static-config.js +96 -0
  113. package/dist/ops/static-config.js.map +1 -0
  114. package/flowpress-deploy.php +2 -2
  115. package/includes/automatic-build.php +22 -5
  116. package/package.json +40 -6
  117. package/schema/deployment.schema.json +185 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/ops/monitor.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export function run(command: any, args: any, options?: {}): import("child_process").SpawnSyncReturns<NonSharedBuffer>;
2
+ export function capture(command: any, args: any, options?: {}): any;
3
+ export function shellQuote(value: any): string;
4
+ export function ssh(platform: any, command: any, options?: {}): any;
5
+ export function sshFile(platform: any, command: any, { input, output }?: {}): Promise<void>;
6
+ export function argValue(args: any, flag: any): any;
7
+ export function containerFor(platform: any, uuid: any): any;
8
+ export function sleep(ms: any): Promise<any>;
9
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/ops/process.js"],"names":[],"mappings":"AAKA,sHAaC;AACD,oEAEC;AACD,+CAAgG;AAChG,oEAGC;AACD,4FAQC;AAED,oDAKC;AACD,4DAKC;AAZM,6CAAmE"}
@@ -0,0 +1,56 @@
1
+ import { spawnSync, spawn } from "node:child_process";
2
+ import { createReadStream, createWriteStream, mkdirSync, writeFileSync, chmodSync } from "node:fs";
3
+ import { dirname, isAbsolute } from "node:path";
4
+ import { pipeline } from "node:stream/promises";
5
+ export function run(command, args, options = {}) {
6
+ const result = spawnSync(command, args, { stdio: "inherit", ...options });
7
+ if (result.error)
8
+ throw new Error("Cannot start " + command + ": " + result.error.code);
9
+ if (result.status !== 0) {
10
+ const diagnostic = process.env.FLOWPRESS_DIAGNOSTICS_FILE;
11
+ if (diagnostic && isAbsolute(diagnostic) && result.stderr) {
12
+ mkdirSync(dirname(diagnostic), { recursive: true, mode: 0o700 });
13
+ writeFileSync(diagnostic, String(result.stderr).slice(-65536), { mode: 0o600 });
14
+ chmodSync(diagnostic, 0o600);
15
+ }
16
+ throw new Error(command + " failed (exit " + result.status + ")." + (diagnostic ? " Private diagnostic saved to " + diagnostic : ""));
17
+ }
18
+ return result;
19
+ }
20
+ export function capture(command, args, options = {}) {
21
+ return run(command, args, { encoding: "utf8", stdio: ["pipe", "pipe", "pipe"], maxBuffer: 64 * 1024 * 1024, ...options }).stdout.trim();
22
+ }
23
+ export function shellQuote(value) { return "'" + String(value).replaceAll("'", "'\\''") + "'"; }
24
+ export function ssh(platform, command, options = {}) {
25
+ if (!/^[a-zA-Z0-9_.@-]+$/.test(platform.ssh || ""))
26
+ throw new Error("Invalid SSH target.");
27
+ return capture("ssh", ["-o", "BatchMode=yes", "-o", "ConnectTimeout=15", platform.ssh, command], options);
28
+ }
29
+ export async function sshFile(platform, command, { input, output } = {}) {
30
+ if (!/^[a-zA-Z0-9_.@-]+$/.test(platform.ssh || ""))
31
+ throw new Error("Invalid SSH target.");
32
+ const child = spawn("ssh", ["-o", "BatchMode=yes", "-o", "ConnectTimeout=15", platform.ssh, command], { stdio: [input ? "pipe" : "ignore", output ? "pipe" : "inherit", "inherit"] });
33
+ const completion = new Promise((resolve, reject) => {
34
+ child.on("error", reject);
35
+ child.on("exit", code => code === 0 ? resolve() : reject(new Error("SSH stream failed (exit " + code + ").")));
36
+ });
37
+ await Promise.all([completion, ...(input ? [pipeline(createReadStream(input), child.stdin)] : []), ...(output ? [pipeline(child.stdout, createWriteStream(output, { mode: 0o600 }))] : [])]);
38
+ }
39
+ export const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
40
+ export function argValue(args, flag) {
41
+ const index = args.indexOf(flag);
42
+ if (index < 0)
43
+ return undefined;
44
+ if (!args[index + 1] || args[index + 1].startsWith("--"))
45
+ throw new Error("Missing value for " + flag);
46
+ return args[index + 1];
47
+ }
48
+ export function containerFor(platform, uuid) {
49
+ if (!/^[a-z0-9]+$/.test(uuid || ""))
50
+ throw new Error("Invalid resource UUID.");
51
+ const names = ssh(platform, "docker ps --filter name=^" + uuid + " --format '{{.Names}}'").split("\n").filter(Boolean);
52
+ if (names.length !== 1)
53
+ throw new Error("Expected exactly one running container for " + uuid + ".");
54
+ return names[0];
55
+ }
56
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/ops/process.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export function sqlIdentifier(value: any): any;
2
+ export function schemaSql(values: any): string;
3
+ export function poolSecretsPath(root: any, platformId: any): string;
4
+ export function poolSecrets(root: any, platformId: any, { create }?: {
5
+ create?: boolean | undefined;
6
+ }): import("dotenv").DotenvParseOutput;
7
+ export function poolSql(platform: any, password: any, sql: any): any;
8
+ export function provisionPlatform(root: any, manifest: any, { file, apply }?: {
9
+ apply?: boolean | undefined;
10
+ }): Promise<{
11
+ actions: string[];
12
+ platform: {
13
+ id: any;
14
+ coolifyUrl: any;
15
+ serverUuid: any;
16
+ ssh: any;
17
+ network: any;
18
+ subnet: any;
19
+ registry: any;
20
+ registryProject: any;
21
+ backupStorageUuid: any;
22
+ poolUuid: any;
23
+ destinationUuid: any;
24
+ phpImage: any;
25
+ };
26
+ applied: boolean;
27
+ }>;
28
+ export function provision(root: any, manifest: any, name: any, { file, apply, components }?: {
29
+ apply?: boolean | undefined;
30
+ components?: never[] | undefined;
31
+ }): Promise<{
32
+ project: string;
33
+ environment: any;
34
+ components: any;
35
+ actions: string[];
36
+ applied: boolean;
37
+ }>;
38
+ export function syncEnvironment(root: any, name: any, api: any): Promise<{
39
+ keys: string[];
40
+ }>;
41
+ //# sourceMappingURL=provision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/ops/provision.js"],"names":[],"mappings":"AAUA,+CAGC;AACD,+CAMC;AACD,oEAEC;AACD;;uCAUC;AACD,qEAKC;AASD;;;;;;;;;;;;;;;;;;;GA8EC;AAED;;;;;;;;;GAmGC;AACD;;GAWC"}
@@ -0,0 +1,268 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
5
+ import { allowedComponents, ensureSecrets, identity, imageRepository, loadState, operatorEnvironment, platformConfig, publicPlatform, readEnv, saveState, targetConfig } from "./config.js";
6
+ import { cmsEnvironment, manifestEnvironment, resolveFrontendEnvironment } from "./environment.js";
7
+ import { coolifyClient } from "./coolify.js";
8
+ import { shellQuote, ssh, sleep } from "./process.js";
9
+ const list = data => Array.isArray(data) ? data : data?.data || [];
10
+ export function sqlIdentifier(value) {
11
+ if (!/^[a-z][a-z0-9]{1,63}$/.test(value || ""))
12
+ throw new Error("SQL identifiers must be lowercase alphanumeric; wildcards are forbidden.");
13
+ return value;
14
+ }
15
+ export function schemaSql(values) {
16
+ const name = sqlIdentifier(values.DB_NAME), user = sqlIdentifier(values.DB_USER);
17
+ if (!/^[a-f0-9]{64}$/.test(values.DB_PASSWORD))
18
+ throw new Error("Expected a generated 256-bit database password.");
19
+ return "CREATE DATABASE IF NOT EXISTS " + name + " CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
20
+ + "CREATE USER IF NOT EXISTS '" + user + "'@'%' IDENTIFIED BY '" + values.DB_PASSWORD + "' WITH MAX_USER_CONNECTIONS 12 MAX_STATEMENT_TIME 60;\n"
21
+ + "GRANT ALL PRIVILEGES ON " + name + ".* TO '" + user + "'@'%';\n";
22
+ }
23
+ export function poolSecretsPath(root, platformId) {
24
+ return operatorEnvironment(root).FLOWPRESS_PLATFORM_SECRETS_FILE || join(root, ".secrets", "platform-" + platformId + ".env");
25
+ }
26
+ export function poolSecrets(root, platformId, { create = false } = {}) {
27
+ const file = poolSecretsPath(root, platformId);
28
+ const current = readEnv(file);
29
+ if (!current.POOL_ROOT_PASSWORD) {
30
+ if (!create)
31
+ throw new Error("The shared pool operator secret is missing. Restore it from the private platform vault.");
32
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
33
+ current.POOL_ROOT_PASSWORD = randomBytes(32).toString("hex");
34
+ writeFileSync(file, "POOL_ROOT_PASSWORD=" + current.POOL_ROOT_PASSWORD + "\n", { mode: 0o600 });
35
+ }
36
+ return current;
37
+ }
38
+ export function poolSql(platform, password, sql) {
39
+ if (!/^[a-z0-9]+$/.test(platform.poolUuid || "") || !password || /[\r\n]/.test(password))
40
+ throw new Error("Invalid shared pool credentials.");
41
+ const command = "docker exec -i " + platform.poolUuid + " sh -c "
42
+ + shellQuote('read -r MYSQL_PWD; export MYSQL_PWD; exec mariadb -uroot --batch --skip-column-names');
43
+ return ssh(platform, command, { input: password + "\n" + sql });
44
+ }
45
+ async function waitPool(api, uuid) {
46
+ for (let attempt = 0; attempt < 60; attempt++) {
47
+ const pool = await api("GET", "/databases/" + uuid);
48
+ if (pool.status === "running:healthy")
49
+ return;
50
+ await sleep(3000);
51
+ }
52
+ throw new Error("Shared MariaDB did not start.");
53
+ }
54
+ export async function provisionPlatform(root, manifest, { file, apply = false } = {}) {
55
+ const path = file || process.env.FLOWPRESS_PLATFORMS_FILE;
56
+ if (!path)
57
+ throw new Error("A platform catalog file is required.");
58
+ const catalog = parseYaml(readFileSync(path, "utf8"));
59
+ const binding = catalog.platforms?.[manifest.platform];
60
+ if (!binding)
61
+ throw new Error("Platform not configured.");
62
+ const platform = platformConfig(root, manifest, path);
63
+ const operator = operatorEnvironment(root);
64
+ const api = coolifyClient(platform.coolifyUrl, operator.COOLIFY_TOKEN);
65
+ if (!/^[a-zA-Z0-9_-]+$/.test(platform.network || "") || !/^10\.\d+\.\d+\.0\/24$/.test(platform.subnet || ""))
66
+ throw new Error("Explicit private network name and /24 subnet required.");
67
+ const save = () => {
68
+ if (apply) {
69
+ for (const key of ["destinationUuid", "poolUuid"])
70
+ if (platform[key])
71
+ binding[key] = platform[key];
72
+ writeFileSync(path, stringifyYaml(catalog));
73
+ }
74
+ };
75
+ const actions = [];
76
+ const projects = list(await api("GET", "/projects"));
77
+ let project = projects.find(item => item.name === "flowpress-platform");
78
+ if (!project) {
79
+ actions.push("Create shared platform project");
80
+ if (apply)
81
+ project = await api("POST", "/projects", { name: "flowpress-platform", description: "Shared FlowPress infrastructure. No client content." });
82
+ }
83
+ if (!platform.destinationUuid) {
84
+ const destinations = list(await api("GET", "/destinations"));
85
+ let destination = destinations.find(item => item.network === platform.network && item.server?.uuid === platform.serverUuid);
86
+ if (!destination) {
87
+ actions.push("Create data network " + platform.network + " (" + platform.subnet + ")");
88
+ if (apply) {
89
+ const existing = ssh(platform, "docker network ls --filter name=^" + platform.network + "$ --format '{{.Name}}'");
90
+ if (!existing) {
91
+ const networks = ssh(platform, "docker network ls -q | xargs docker network inspect --format '{{range .IPAM.Config}}{{.Subnet}}{{\"\\n\"}}{{end}}'");
92
+ const number = ip => ip.split(".").reduce((result, part) => ((result << 8) >>> 0) + Number(part), 0) >>> 0;
93
+ const desired = number(platform.subnet.split("/")[0]);
94
+ for (const subnet of networks.split(/\s+/).filter(value => /^\d+\.\d+\.\d+\.\d+\/\d+$/.test(value))) {
95
+ const [address, prefix] = subnet.split("/");
96
+ const mask = (0xffffffff << (32 - Math.min(24, Number(prefix)))) >>> 0;
97
+ if ((number(address) & mask) === (desired & mask))
98
+ throw new Error("Network subnet overlaps " + subnet);
99
+ }
100
+ ssh(platform, "docker network create --subnet " + shellQuote(platform.subnet) + " " + shellQuote(platform.network));
101
+ }
102
+ else if (ssh(platform, "docker network inspect " + shellQuote(platform.network) + " --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}'") !== platform.subnet)
103
+ throw new Error("Existing data network has a different subnet.");
104
+ destination = await api("POST", "/servers/" + platform.serverUuid + "/destinations", { name: platform.network, network: platform.network, type: "standalone" });
105
+ }
106
+ }
107
+ if (destination)
108
+ platform.destinationUuid = destination.uuid;
109
+ save();
110
+ }
111
+ const needsDatabase = Object.values(manifest.environments).some(target => target.publish.includes("cms"));
112
+ if (needsDatabase && !platform.poolUuid) {
113
+ const resources = list(await api("GET", "/resources"));
114
+ const found = resources.find(item => item.name === "flowpress-mariadb-" + manifest.platform && item.type === "standalone-mariadb");
115
+ if (found) {
116
+ // Recover interrupted provisioning only when the saved root secret exists.
117
+ const secretsFile = poolSecretsPath(root, manifest.platform);
118
+ if (!readEnv(secretsFile).POOL_ROOT_PASSWORD)
119
+ throw new Error("Existing pool found but its operator secret is missing.");
120
+ platform.poolUuid = found.uuid;
121
+ }
122
+ else {
123
+ actions.push("Create shared MariaDB (2 GiB, 1 CPU, no public port)");
124
+ if (apply) {
125
+ const envs = list(await api("GET", "/projects/" + project.uuid + "/environments"));
126
+ const environment = envs.find(item => item.name === "shared") || await api("POST", "/projects/" + project.uuid + "/environments", { name: "shared" });
127
+ const secrets = poolSecrets(root, manifest.platform, { create: true });
128
+ const pool = await api("POST", "/databases/mariadb", {
129
+ project_uuid: project.uuid, server_uuid: platform.serverUuid, destination_uuid: platform.destinationUuid,
130
+ environment_uuid: environment.uuid, environment_name: "shared",
131
+ name: "flowpress-mariadb-" + manifest.platform, image: "mariadb:11.4",
132
+ mariadb_database: "flowpresscontrol", mariadb_user: "flowpresscontrol",
133
+ mariadb_password: randomBytes(32).toString("hex"), mariadb_root_password: secrets.POOL_ROOT_PASSWORD,
134
+ mariadb_conf: Buffer.from("[mariadb]\ninnodb_buffer_pool_size=512M\nmax_connections=128\n").toString("base64"),
135
+ is_public: false, limits_memory: "2g", limits_cpus: "1", instant_deploy: true,
136
+ });
137
+ platform.poolUuid = pool.uuid;
138
+ }
139
+ }
140
+ save();
141
+ }
142
+ if (apply && needsDatabase && platform.poolUuid)
143
+ await waitPool(api, platform.poolUuid);
144
+ return { actions, platform: publicPlatform(manifest.platform, platform), applied: apply };
145
+ }
146
+ export async function provision(root, manifest, name, { file, apply = false, components = [] } = {}) {
147
+ const selected = allowedComponents(manifest, name, components);
148
+ if (name === "local")
149
+ throw new Error("Remote provisioning does not accept local.");
150
+ const target = targetConfig(manifest, name), projectIdentity = identity(root);
151
+ const platform = publicPlatform(manifest.platform, platformConfig(root, manifest, file));
152
+ if (!platform.destinationUuid || (selected.includes("cms") && !platform.poolUuid))
153
+ throw new Error("Provision the required shared platform capabilities first.");
154
+ const api = coolifyClient(platform.coolifyUrl, operatorEnvironment(root).COOLIFY_TOKEN);
155
+ const state = loadState(root, name);
156
+ if (state.project && state.project !== projectIdentity.slug)
157
+ throw new Error("Deployment state belongs to a different project.");
158
+ const actions = [];
159
+ const save = () => { if (apply)
160
+ saveState(root, name, state); };
161
+ state.platform = platform;
162
+ state.project = projectIdentity.slug;
163
+ state.environment = name;
164
+ state.apps ||= {};
165
+ async function resource(description, current, create) {
166
+ if (current)
167
+ return current;
168
+ actions.push(description);
169
+ const uuid = apply ? (await create()).uuid : undefined;
170
+ return uuid;
171
+ }
172
+ const projects = list(await api("GET", "/projects"));
173
+ state.projectUuid = await resource("Create client project", state.projectUuid || projects.find(item => item.name === projectIdentity.slug)?.uuid, () => api("POST", "/projects", { name: projectIdentity.slug, description: "FlowPress installation managed by flowpress.deploy.yaml" }));
174
+ save();
175
+ if (state.projectUuid) {
176
+ const envs = list(await api("GET", "/projects/" + state.projectUuid + "/environments"));
177
+ state.environmentUuid = await resource("Create " + name + " environment", state.environmentUuid || envs.find(item => item.name === name)?.uuid, () => api("POST", "/projects/" + state.projectUuid + "/environments", { name }));
178
+ save();
179
+ }
180
+ if (selected.includes("cms")) {
181
+ actions.push(state.database ? "Verify isolated database binding" : "Create isolated database and user in shared pool");
182
+ if (apply) {
183
+ const values = ensureSecrets(root, name, projectIdentity.slug);
184
+ poolSql(platform, poolSecrets(root, manifest.platform).POOL_ROOT_PASSWORD, schemaSql(values));
185
+ state.database = { ...state.database, name: values.DB_NAME, user: values.DB_USER };
186
+ save();
187
+ const schedules = list(await api("GET", "/databases/" + platform.poolUuid + "/backups"));
188
+ const found = schedules.find(item => item.uuid === state.database.backupUuid)
189
+ || schedules.find(item => item.databases_to_backup === values.DB_NAME && item.save_s3 && !item.dump_all);
190
+ state.database.backupUuid = await resource("Schedule daily offsite database backup", found?.uuid, () => api("POST", "/databases/" + platform.poolUuid + "/backups", {
191
+ frequency: "35 2 * * *", enabled: true, save_s3: true, s3_storage_uuid: platform.backupStorageUuid,
192
+ databases_to_backup: values.DB_NAME, dump_all: false,
193
+ database_backup_retention_amount_s3: 14, database_backup_retention_amount_locally: 2, missing_backup_notification_days: 2,
194
+ }));
195
+ save();
196
+ }
197
+ }
198
+ for (const component of selected) {
199
+ const appName = projectIdentity.slug + "-" + name + "-" + component;
200
+ const repository = imageRepository(platform, projectIdentity.slug, component);
201
+ const url = component === "cms" ? target.backendUrl : target.frontendUrl;
202
+ const health = component === "cms" ? "/healthz.php" : "/healthz.json";
203
+ const app = state.apps[component] ||= {};
204
+ const resources = list(await api("GET", "/resources"));
205
+ app.uuid = await resource("Create " + component + " application", app.uuid || resources.find(item => item.name === appName)?.uuid, () => api("POST", "/applications/dockerimage", {
206
+ project_uuid: state.projectUuid, server_uuid: platform.serverUuid, destination_uuid: platform.destinationUuid,
207
+ environment_uuid: state.environmentUuid, environment_name: name, name: appName,
208
+ docker_registry_image_name: repository, docker_registry_image_tag: name,
209
+ domains: url, is_force_https_enabled: true, ports_exposes: "8080",
210
+ health_check_enabled: true, health_check_path: health, health_check_port: "8080",
211
+ health_check_host: "127.0.0.1", health_check_interval: 30, health_check_timeout: 5, health_check_retries: 5, health_check_start_period: 30,
212
+ limits_memory: component === "cms" ? "1536m" : component === "web-static" ? "256m" : "512m",
213
+ limits_cpus: component === "cms" ? "1" : "0.5", custom_docker_run_options: "--cap-drop=ALL --init",
214
+ stop_grace_period: 30, docker_images_to_keep: 3, is_preview_deployments_enabled: false, instant_deploy: false,
215
+ }));
216
+ Object.assign(app, { name: appName, repository, url, health });
217
+ save();
218
+ if (!app.uuid || !apply)
219
+ continue;
220
+ const configured = await api("GET", "/applications/" + app.uuid);
221
+ if (configured.docker_registry_image_name !== repository || configured.fqdn !== url || configured.docker_registry_image_tag !== name) {
222
+ await api("PATCH", "/applications/" + app.uuid, { docker_registry_image_name: repository, docker_registry_image_tag: name, domains: url });
223
+ }
224
+ if (component === "cms") {
225
+ const storageData = await api("GET", "/applications/" + app.uuid + "/storages");
226
+ const storages = Array.isArray(storageData) ? storageData : storageData.persistent_storages || [];
227
+ for (const [volume, mount] of [["uploads", "/srv/cms/web/app/uploads"], ["webp", "/srv/cms/web/app/webp-express"]]) {
228
+ if (!storages.some(item => item.mount_path === mount))
229
+ await api("POST", "/applications/" + app.uuid + "/storages", { type: "persistent", name: appName + "-" + volume, mount_path: mount });
230
+ }
231
+ const currentStorages = await api("GET", "/applications/" + app.uuid + "/storages");
232
+ const uploads = (Array.isArray(currentStorages) ? currentStorages : currentStorages.persistent_storages || []).find(item => item.mount_path === "/srv/cms/web/app/uploads");
233
+ if (uploads?.uuid)
234
+ await api("PUT", "/applications/" + app.uuid + "/storages/" + uploads.uuid + "/backups", {
235
+ frequency: "50 2 * * *", enabled: true, save_s3: true, s3_storage_uuid: platform.backupStorageUuid,
236
+ retention_amount_s3: 14, retention_amount_locally: 2, missing_backup_notification_days: 2,
237
+ });
238
+ app.uploadsStorageUuid = uploads?.uuid;
239
+ const tasks = list(await api("GET", "/applications/" + app.uuid + "/scheduled-tasks"));
240
+ if (!tasks.some(item => item.name === "wp-cron"))
241
+ await api("POST", "/applications/" + app.uuid + "/scheduled-tasks", { name: "wp-cron", command: "wp cron event run --due-now --quiet", frequency: "*/5 * * * *", timeout: 280, enabled: true });
242
+ await syncEnvironment(root, name, api);
243
+ }
244
+ else {
245
+ const values = resolveFrontendEnvironment(manifestEnvironment(root, name, {}), target => manifestEnvironment(root, target, {}));
246
+ const keys = ["APP_ENV", "SITE_URL", "BACKEND_URL", "BACKEND_GRAPHQL_URL", "FLOWPRESS_MEDIA", "FLOWPRESS_COMPOSITION_MODE", "FRONTEND_BACKEND_TARGET", "PROJECT_NAME", "PROJECT_SLUG", "ASTRO_OUTPUT_MODE"];
247
+ await api("PATCH", "/applications/" + app.uuid + "/envs/bulk", { data: keys.map(key => ({ key, value: String(values[key] || ""), is_runtime: true, is_buildtime: false, is_preview: false, is_literal: true })) });
248
+ }
249
+ save();
250
+ }
251
+ return { project: projectIdentity.slug, environment: name, components: selected, actions, applied: apply };
252
+ }
253
+ export async function syncEnvironment(root, name, api) {
254
+ const state = loadState(root, name);
255
+ const app = state.apps?.cms;
256
+ if (!app?.uuid)
257
+ throw new Error("CMS not provisioned.");
258
+ const values = cmsEnvironment(root, name);
259
+ const existing = list(await api("GET", "/applications/" + app.uuid + "/envs"));
260
+ const envs = Object.entries(values).map(([key, value]) => ({ key, value, is_buildtime: false, is_runtime: true, is_preview: false, is_literal: true, is_multiline: false }));
261
+ // Remove credentials of deactivated capabilities rather than preserving old secrets.
262
+ for (const item of existing)
263
+ if (!Object.hasOwn(values, item.key) && /^(SMTP_|ADVMO_|CMS_GITHUB_DISPATCH_TOKEN)/.test(item.key))
264
+ envs.push({ key: item.key, value: "", is_buildtime: false, is_runtime: true, is_preview: false, is_literal: true });
265
+ await api("PATCH", "/applications/" + app.uuid + "/envs/bulk", { data: envs });
266
+ return { keys: Object.keys(values) };
267
+ }
268
+ //# sourceMappingURL=provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/ops/provision.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export function existingDigest(image: any, credentials: any, fetchImpl?: typeof fetch): Promise<string | null>;
2
+ export function imageMetadata(image: any, credentials: any, fetchImpl?: typeof fetch): Promise<{
3
+ digest: string;
4
+ sha: any;
5
+ buildId: any;
6
+ } | null>;
7
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/ops/registry.js"],"names":[],"mappings":"AAmCA,+GAGC;AACD;;;;UAkBC"}
@@ -0,0 +1,73 @@
1
+ import { createHash } from 'node:crypto';
2
+ function registry(image, credentials, fetchImpl) {
3
+ const slash = image.indexOf('/'), colon = image.lastIndexOf(':');
4
+ if (slash < 1 || colon < slash)
5
+ throw new Error('Expected a tagged registry image.');
6
+ const origin = 'https://' + image.slice(0, slash), repository = image.slice(slash + 1, colon), tag = image.slice(colon + 1);
7
+ let token;
8
+ async function request(path) {
9
+ const headers = { accept: 'application/vnd.oci.image.index.v1+json, application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v2+json' };
10
+ if (token)
11
+ headers.authorization = 'Bearer ' + token;
12
+ const options = () => ({ headers, redirect: 'error', signal: AbortSignal.timeout(30000) });
13
+ const url = origin + '/v2/' + repository + path;
14
+ let response = await fetchImpl(url, options());
15
+ if (response.status === 401 && !token) {
16
+ const challenge = response.headers.get('www-authenticate') || '';
17
+ const realm = challenge.match(/realm="([^"]+)"/i)?.[1], service = challenge.match(/service="([^"]+)"/i)?.[1];
18
+ if (!realm || new URL(realm).origin !== origin)
19
+ throw new Error('Unexpected registry authentication realm.');
20
+ const tokenUrl = new URL(realm);
21
+ tokenUrl.searchParams.set('scope', 'repository:' + repository + ':pull');
22
+ if (service)
23
+ tokenUrl.searchParams.set('service', service);
24
+ const auth = await fetchImpl(tokenUrl, { headers: { authorization: 'Basic ' + Buffer.from(credentials.REGISTRY_USERNAME + ':' + credentials.REGISTRY_PASSWORD).toString('base64') }, redirect: 'error', signal: AbortSignal.timeout(30000) });
25
+ if (!auth.ok)
26
+ throw new Error('Registry token request refused (HTTP ' + auth.status + ').');
27
+ const data = await auth.json();
28
+ token = data.token || data.access_token;
29
+ headers.authorization = 'Bearer ' + token;
30
+ response = await fetchImpl(url, options());
31
+ }
32
+ if (response.status === 404)
33
+ return null;
34
+ if (!response.ok)
35
+ throw new Error('Cannot verify immutable registry tag (HTTP ' + response.status + ').');
36
+ const body = await response.text();
37
+ const digest = 'sha256:' + createHash('sha256').update(body).digest('hex');
38
+ if (response.headers.get('docker-content-digest') && response.headers.get('docker-content-digest') !== digest)
39
+ throw new Error('Registry manifest digest mismatch.');
40
+ return { body, digest };
41
+ }
42
+ return { tag, request };
43
+ }
44
+ // A genuine 404 is the only condition that permits a new immutable tag.
45
+ export async function existingDigest(image, credentials, fetchImpl = fetch) {
46
+ const client = registry(image, credentials, fetchImpl);
47
+ return (await client.request('/manifests/' + encodeURIComponent(client.tag)))?.digest || null;
48
+ }
49
+ export async function imageMetadata(image, credentials, fetchImpl = fetch) {
50
+ const client = registry(image, credentials, fetchImpl);
51
+ const first = await client.request('/manifests/' + encodeURIComponent(client.tag));
52
+ if (!first)
53
+ return null;
54
+ let manifest = JSON.parse(first.body);
55
+ if (manifest.manifests) {
56
+ const platform = manifest.manifests.find(item => item.platform?.os === 'linux' && item.platform?.architecture === 'amd64');
57
+ if (!platform)
58
+ throw new Error('Release has no linux/amd64 image.');
59
+ const concrete = await client.request('/manifests/' + encodeURIComponent(platform.digest));
60
+ if (!concrete || concrete.digest !== platform.digest)
61
+ throw new Error('Image platform digest mismatch.');
62
+ manifest = JSON.parse(concrete.body);
63
+ }
64
+ const config = manifest.config?.digest && await client.request('/blobs/' + encodeURIComponent(manifest.config.digest));
65
+ if (!config || config.digest !== manifest.config.digest)
66
+ throw new Error('Image configuration digest mismatch.');
67
+ const labels = JSON.parse(config.body).config?.Labels || {};
68
+ const sha = labels['org.opencontainers.image.revision'];
69
+ if (!/^[a-f0-9]{40}$/.test(sha || ''))
70
+ throw new Error('Image has no valid release SHA label.');
71
+ return { digest: first.digest, sha, buildId: labels['app.flowpress.build-id'] };
72
+ }
73
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ops/registry.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export function changedComponents(paths: any, available: any): any;
2
+ export function editorialCommit(root: any, manifest: any, payload: any): Promise<{
3
+ request: {
4
+ target: any;
5
+ batchId: any;
6
+ mode: any;
7
+ paths: string[];
8
+ deletedPaths: string[];
9
+ };
10
+ sha: any;
11
+ }>;
12
+ export function release(root: any, manifest: any, name: any, { component, sha, buildId, editorial }?: {
13
+ editorial?: boolean | undefined;
14
+ }): Promise<{
15
+ environment: any;
16
+ components: any;
17
+ results: {
18
+ component: any;
19
+ environment: any;
20
+ release: any;
21
+ digest: any;
22
+ url: any;
23
+ rollback: boolean;
24
+ }[];
25
+ }>;
26
+ //# sourceMappingURL=release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/ops/release.js"],"names":[],"mappings":"AAOA,mEAQC;AACD;;;;;;;;;GASC;AACD;;;;;;;;;;;;;GAoCC"}