hatchkit 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adopt.d.ts.map +1 -1
- package/dist/adopt.js +93 -97
- package/dist/adopt.js.map +1 -1
- package/dist/deploy/coolify-app.d.ts +12 -0
- package/dist/deploy/coolify-app.d.ts.map +1 -1
- package/dist/deploy/coolify-app.js +42 -101
- package/dist/deploy/coolify-app.js.map +1 -1
- package/dist/deploy/coolify-mongo.d.ts.map +1 -1
- package/dist/deploy/coolify-mongo.js +15 -3
- package/dist/deploy/coolify-mongo.js.map +1 -1
- package/dist/deploy/gh-actions-secrets.d.ts +44 -0
- package/dist/deploy/gh-actions-secrets.d.ts.map +1 -0
- package/dist/deploy/gh-actions-secrets.js +111 -0
- package/dist/deploy/gh-actions-secrets.js.map +1 -0
- package/dist/deploy/github.d.ts +10 -1
- package/dist/deploy/github.d.ts.map +1 -1
- package/dist/deploy/github.js +32 -3
- package/dist/deploy/github.js.map +1 -1
- package/dist/index.js +39 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +54 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +115 -20
- package/dist/prompts.js.map +1 -1
- package/dist/scaffold/app.js +1 -1
- package/dist/scaffold/app.js.map +1 -1
- package/dist/scaffold/infra.d.ts.map +1 -1
- package/dist/scaffold/infra.js +17 -8
- package/dist/scaffold/infra.js.map +1 -1
- package/dist/scaffold/manifest.d.ts.map +1 -1
- package/dist/scaffold/manifest.js +2 -1
- package/dist/scaffold/manifest.js.map +1 -1
- package/dist/scaffold/update.js +1 -1
- package/dist/scaffold/update.js.map +1 -1
- package/dist/templates/build-pipeline/deploy.yml.hbs +15 -5
- package/dist/utils/coolify-api.d.ts.map +1 -1
- package/dist/utils/coolify-api.js.map +1 -1
- package/dist/utils/coolify-server-ips.d.ts +26 -0
- package/dist/utils/coolify-server-ips.d.ts.map +1 -0
- package/dist/utils/coolify-server-ips.js +135 -0
- package/dist/utils/coolify-server-ips.js.map +1 -0
- package/dist/utils/errors.js +1 -1
- package/dist/utils/errors.js.map +1 -1
- package/package.json +2 -2
- package/scripts/release-prep.mjs +5 -23
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
* provider whose record CRUD is wired up today). INWX users get
|
|
25
25
|
* a clear "add an A record yourself" hint.
|
|
26
26
|
*/
|
|
27
|
-
import { resolve4, resolve6 } from "node:dns/promises";
|
|
28
27
|
import chalk from "chalk";
|
|
29
28
|
import ora from "ora";
|
|
30
29
|
import { getCoolifyConfig, getDnsConfig } from "../config.js";
|
|
31
30
|
import { CloudflareApi } from "../utils/cloudflare-api.js";
|
|
32
31
|
import { CoolifyApi } from "../utils/coolify-api.js";
|
|
32
|
+
import { discoverPublicIps } from "../utils/coolify-server-ips.js";
|
|
33
33
|
import { SECRET_KEYS, getSecret } from "../utils/secrets.js";
|
|
34
34
|
/** Top-level wire-up. Throws on the first hard failure (no project,
|
|
35
35
|
* no server, app create rejected). The DNS step is best-effort —
|
|
@@ -204,106 +204,6 @@ export async function wireProjectIntoCoolify(input) {
|
|
|
204
204
|
dnsManaged: dnsResult.managed,
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
|
-
/** True for valid public-routable IPv4 strings. Filters out the
|
|
208
|
-
* values Coolify hands back on Docker installs (`host.docker.internal`,
|
|
209
|
-
* `localhost`, `127.0.0.1`) plus IPv6, which we don't auto-manage. */
|
|
210
|
-
function isPublicIpv4(s) {
|
|
211
|
-
if (!/^\d{1,3}(\.\d{1,3}){3}$/.test(s))
|
|
212
|
-
return false;
|
|
213
|
-
const parts = s.split(".").map((n) => Number(n));
|
|
214
|
-
if (parts.some((n) => n < 0 || n > 255))
|
|
215
|
-
return false;
|
|
216
|
-
if (parts[0] === 127)
|
|
217
|
-
return false; // loopback
|
|
218
|
-
if (parts[0] === 0)
|
|
219
|
-
return false;
|
|
220
|
-
return true;
|
|
221
|
-
}
|
|
222
|
-
/** True for valid public-routable IPv6 strings. Filters loopback
|
|
223
|
-
* (::1) and link-local. Coarse — node:net.isIPv6 would be stricter
|
|
224
|
-
* but the obvious filters cover the practical cases. */
|
|
225
|
-
function isPublicIpv6(s) {
|
|
226
|
-
if (!/^[0-9a-fA-F:]+$/.test(s) || !s.includes(":"))
|
|
227
|
-
return false;
|
|
228
|
-
if (s === "::" || s === "::1")
|
|
229
|
-
return false;
|
|
230
|
-
if (s.toLowerCase().startsWith("fe80:"))
|
|
231
|
-
return false; // link-local
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
/** Resolve the box's public IPv4 + IPv6, preferring Coolify's
|
|
235
|
-
* configured values (via /servers/{uuid}/domains, which surfaces the
|
|
236
|
-
* instance's `public_ipv4` / `public_ipv6` for localhost-Coolify
|
|
237
|
-
* installs that report `host.docker.internal` on /servers), falling
|
|
238
|
-
* back to DNS resolution of the dashboard hostname. Cross-checks
|
|
239
|
-
* the two IPv4 sources and surfaces a warning when they disagree. */
|
|
240
|
-
async function discoverPublicIps(api, serverUuid, fallbackServerIp, dashboardUrl) {
|
|
241
|
-
// Step 1: Coolify-reported IPs. /servers/{uuid}/domains returns
|
|
242
|
-
// entries with `ip` set per running domain; for localhost-Coolify
|
|
243
|
-
// this falls back to the configured public_ipv4 / public_ipv6.
|
|
244
|
-
let coolifyV4;
|
|
245
|
-
let coolifyV6;
|
|
246
|
-
try {
|
|
247
|
-
const domains = await api.getServerDomains(serverUuid);
|
|
248
|
-
for (const d of domains) {
|
|
249
|
-
const ip = (d.ip ?? "").trim();
|
|
250
|
-
if (!coolifyV4 && isPublicIpv4(ip))
|
|
251
|
-
coolifyV4 = ip;
|
|
252
|
-
if (!coolifyV6 && isPublicIpv6(ip))
|
|
253
|
-
coolifyV6 = ip;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
catch {
|
|
257
|
-
// /servers/{uuid}/domains can 404 / 501 on older Coolify builds.
|
|
258
|
-
// Treat as "Coolify doesn't know" and fall back to DNS only.
|
|
259
|
-
}
|
|
260
|
-
// /servers itself may return a real IPv4 on non-Docker installs —
|
|
261
|
-
// use it as a last-resort source.
|
|
262
|
-
if (!coolifyV4 && isPublicIpv4(fallbackServerIp))
|
|
263
|
-
coolifyV4 = fallbackServerIp;
|
|
264
|
-
if (!coolifyV6 && isPublicIpv6(fallbackServerIp))
|
|
265
|
-
coolifyV6 = fallbackServerIp;
|
|
266
|
-
// Step 2: independent DNS resolution of the dashboard hostname.
|
|
267
|
-
let host;
|
|
268
|
-
try {
|
|
269
|
-
host = new URL(dashboardUrl).hostname;
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
/* ignore — dashboard URL might be malformed */
|
|
273
|
-
}
|
|
274
|
-
let dnsV4;
|
|
275
|
-
let dnsV6;
|
|
276
|
-
if (host && !isPublicIpv4(host)) {
|
|
277
|
-
const spinner = ora(`Resolving ${host} for cross-check`).start();
|
|
278
|
-
try {
|
|
279
|
-
const [v4, v6] = await Promise.allSettled([resolve4(host), resolve6(host)]);
|
|
280
|
-
if (v4.status === "fulfilled" && v4.value[0] && isPublicIpv4(v4.value[0])) {
|
|
281
|
-
dnsV4 = v4.value[0];
|
|
282
|
-
}
|
|
283
|
-
if (v6.status === "fulfilled" && v6.value[0] && isPublicIpv6(v6.value[0])) {
|
|
284
|
-
dnsV6 = v6.value[0];
|
|
285
|
-
}
|
|
286
|
-
const parts = [dnsV4 && `A ${dnsV4}`, dnsV6 && `AAAA ${dnsV6}`].filter(Boolean);
|
|
287
|
-
spinner.succeed(`DNS for ${host}: ${parts.length > 0 ? parts.join(", ") : "no records"}`);
|
|
288
|
-
}
|
|
289
|
-
catch {
|
|
290
|
-
spinner.fail(`Couldn't resolve ${host}`);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
else if (host && isPublicIpv4(host)) {
|
|
294
|
-
dnsV4 = host;
|
|
295
|
-
}
|
|
296
|
-
// Step 3: cross-check + decide. Prefer Coolify's value when we have
|
|
297
|
-
// it (it's the box's self-reported truth); fall back to DNS.
|
|
298
|
-
const v4 = coolifyV4 ?? dnsV4;
|
|
299
|
-
const v6 = coolifyV6 ?? dnsV6;
|
|
300
|
-
let mismatchWarning;
|
|
301
|
-
if (coolifyV4 && dnsV4 && coolifyV4 !== dnsV4) {
|
|
302
|
-
mismatchWarning = `Coolify reports public IPv4 ${coolifyV4} but ${host} resolves to ${dnsV4}. Using Coolify's value; double-check the DNS records and any floating-IP / proxy setup.`;
|
|
303
|
-
console.log(chalk.yellow(` ⚠ ${mismatchWarning}`));
|
|
304
|
-
}
|
|
305
|
-
return { v4, v6, mismatchWarning };
|
|
306
|
-
}
|
|
307
207
|
/** Upsert A and/or AAAA records for `domain` on Cloudflare. Either
|
|
308
208
|
* IP being undefined is fine — we only upsert what we've got, so a
|
|
309
209
|
* v6-only deploy gets just an AAAA record and v4-only gets just an A. */
|
|
@@ -396,4 +296,45 @@ function inferZone(domain) {
|
|
|
396
296
|
return domain;
|
|
397
297
|
return parts.slice(-2).join(".");
|
|
398
298
|
}
|
|
299
|
+
/** Look up the Coolify apps belonging to a project for the
|
|
300
|
+
* Actions-secrets push. Tries the names hatchkit / the starter
|
|
301
|
+
* conventions produce, in priority order:
|
|
302
|
+
* · `<name>-server` + `<name>-client` → starter split layout
|
|
303
|
+
* · `<name>` → adopt single-app layout
|
|
304
|
+
* · `<name>-web` / `<name>-app` / `<name>-api` → setup-coolify-stack.sh
|
|
305
|
+
* defaults (treated as single-app, no SERVER/CLIENT label).
|
|
306
|
+
*
|
|
307
|
+
* Returns an empty array when Coolify isn't configured or no app
|
|
308
|
+
* matches — callers log a manual-recipe hint in that case. */
|
|
309
|
+
export async function findCoolifyAppsForProject(projectName) {
|
|
310
|
+
const cfg = await getCoolifyConfig();
|
|
311
|
+
if (!cfg)
|
|
312
|
+
return [];
|
|
313
|
+
const api = new CoolifyApi({ url: cfg.url, token: cfg.token });
|
|
314
|
+
const apps = await api.listApplications();
|
|
315
|
+
const byName = new Map(apps.map((a) => [a.name, a.uuid]));
|
|
316
|
+
const found = [];
|
|
317
|
+
const serverUuid = byName.get(`${projectName}-server`);
|
|
318
|
+
const clientUuid = byName.get(`${projectName}-client`);
|
|
319
|
+
if (serverUuid)
|
|
320
|
+
found.push({ uuid: serverUuid, label: "SERVER" });
|
|
321
|
+
if (clientUuid)
|
|
322
|
+
found.push({ uuid: clientUuid, label: "CLIENT" });
|
|
323
|
+
if (found.length === 0) {
|
|
324
|
+
// Single-app fallbacks. Picked in priority order — first match wins.
|
|
325
|
+
for (const candidate of [
|
|
326
|
+
projectName,
|
|
327
|
+
`${projectName}-web`,
|
|
328
|
+
`${projectName}-app`,
|
|
329
|
+
`${projectName}-api`,
|
|
330
|
+
]) {
|
|
331
|
+
const uuid = byName.get(candidate);
|
|
332
|
+
if (uuid) {
|
|
333
|
+
found.push({ uuid });
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return found;
|
|
339
|
+
}
|
|
399
340
|
//# sourceMappingURL=coolify-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coolify-app.js","sourceRoot":"","sources":["../../src/deploy/coolify-app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coolify-app.js","sourceRoot":"","sources":["../../src/deploy/coolify-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coolify-mongo.d.ts","sourceRoot":"","sources":["../../src/deploy/coolify-mongo.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;uEAEuE;AACvE,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"coolify-mongo.d.ts","sourceRoot":"","sources":["../../src/deploy/coolify-mongo.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;uEAEuE;AACvE,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CA+F/B"}
|
|
@@ -43,10 +43,22 @@ export async function provisionCoolifyMongo(config, serverEnvDir) {
|
|
|
43
43
|
throw new Error(`Coolify project "${config.name}" not found — did the stack script run?`);
|
|
44
44
|
}
|
|
45
45
|
projectUuid = project.uuid;
|
|
46
|
-
const ip = config.serverIp;
|
|
47
46
|
let server = null;
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
// Prefer the uuid we resolved up front during server selection
|
|
48
|
+
// (`hatchkit create` populates `config.serverUuid` after picking
|
|
49
|
+
// an existing Coolify server). Falls back to IP- / name-keyed
|
|
50
|
+
// lookups for the new-Hetzner path, where the uuid only exists
|
|
51
|
+
// after Terraform creates the server and we never re-prompt.
|
|
52
|
+
if (config.serverUuid) {
|
|
53
|
+
const servers = await api.listServers();
|
|
54
|
+
const cached = servers.find((s) => s.id === config.serverId) ?? servers[0];
|
|
55
|
+
server = cached
|
|
56
|
+
? { uuid: config.serverUuid, name: cached.name, ip: cached.ip }
|
|
57
|
+
: { uuid: config.serverUuid, name: "(server)", ip: config.serverIp ?? "" };
|
|
58
|
+
}
|
|
59
|
+
if (!server && config.serverIp) {
|
|
60
|
+
server = await api.findServer({ ip: config.serverIp });
|
|
61
|
+
}
|
|
50
62
|
if (!server) {
|
|
51
63
|
// Fall back to the first server. Single-server Hetzner deploys
|
|
52
64
|
// are the common case, and the alternative is the user picking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coolify-mongo.js","sourceRoot":"","sources":["../../src/deploy/coolify-mongo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AASrD;;uEAEuE;AACvE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAqB,EACrB,YAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAEjG,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,WAAmB,CAAC;IACxB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"coolify-mongo.js","sourceRoot":"","sources":["../../src/deploy/coolify-mongo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** A Coolify application the workflow should redeploy on push.
|
|
2
|
+
* `label`:
|
|
3
|
+
* · undefined → single-app project (adopt-style). Sets
|
|
4
|
+
* COOLIFY_WEBHOOK_URL.
|
|
5
|
+
* · "SERVER" → starter-style server app. Sets
|
|
6
|
+
* COOLIFY_SERVER_RESOURCE_UUID +
|
|
7
|
+
* COOLIFY_SERVER_DEPLOY_WEBHOOK.
|
|
8
|
+
* · "CLIENT" → starter-style client app. Sets
|
|
9
|
+
* COOLIFY_CLIENT_RESOURCE_UUID +
|
|
10
|
+
* COOLIFY_CLIENT_DEPLOY_WEBHOOK. */
|
|
11
|
+
export interface CoolifyDeployApp {
|
|
12
|
+
label?: "SERVER" | "CLIENT";
|
|
13
|
+
/** Coolify application uuid. */
|
|
14
|
+
uuid: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CoolifyDeploySecretsInput {
|
|
17
|
+
/** Working directory that has `.git` + `gh` access. */
|
|
18
|
+
projectDir: string;
|
|
19
|
+
/** GitHub `<owner>/<repo>` slug. */
|
|
20
|
+
repoSlug: string;
|
|
21
|
+
/** One or more apps to wire deploy hooks for. Pass a single
|
|
22
|
+
* unlabelled entry for adopt-style single-app repos; pass two
|
|
23
|
+
* labelled entries (SERVER + CLIENT) for the split layout the
|
|
24
|
+
* starter ships. */
|
|
25
|
+
apps: CoolifyDeployApp[];
|
|
26
|
+
}
|
|
27
|
+
export interface CoolifyDeploySecretsResult {
|
|
28
|
+
ok: boolean;
|
|
29
|
+
/** Names of the secrets that were upserted. Used by the caller for
|
|
30
|
+
* the success log line. */
|
|
31
|
+
pushed: string[];
|
|
32
|
+
}
|
|
33
|
+
/** Push the secrets that the scaffolded GH Actions workflows need
|
|
34
|
+
* to talk to Coolify. Best-effort — failures don't roll anything
|
|
35
|
+
* back; the caller gets a copy-pasteable manual recipe instead. */
|
|
36
|
+
export declare function setCoolifyDeploySecrets(input: CoolifyDeploySecretsInput): Promise<CoolifyDeploySecretsResult>;
|
|
37
|
+
/** Extract `owner/repo` from a git remote URL.
|
|
38
|
+
* git@github.com:owner/repo.git → owner/repo
|
|
39
|
+
* https://github.com/owner/repo[.git] → owner/repo
|
|
40
|
+
* Returns undefined for non-GitHub URLs. */
|
|
41
|
+
export declare function repoSlugFromRemote(url: string | undefined): string | undefined;
|
|
42
|
+
/** Extract the `owner` segment alone from a GitHub remote URL. */
|
|
43
|
+
export declare function ownerFromRemote(url: string | undefined): string | undefined;
|
|
44
|
+
//# sourceMappingURL=gh-actions-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gh-actions-secrets.d.ts","sourceRoot":"","sources":["../../src/deploy/gh-actions-secrets.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;uDASuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;yBAGqB;IACrB,IAAI,EAAE,gBAAgB,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ;gCAC4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;oEAEoE;AACpE,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,0BAA0B,CAAC,CA2DrC;AAWD;;;6CAG6C;AAC7C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO9E;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG3E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* GitHub Actions secrets helpers shared by `hatchkit adopt` and
|
|
3
|
+
* `hatchkit create`.
|
|
4
|
+
*
|
|
5
|
+
* Both flows scaffold a GitHub Actions workflow that builds the
|
|
6
|
+
* Docker image, pushes to GHCR, and triggers Coolify to redeploy.
|
|
7
|
+
* Setting the workflow's secrets must happen BEFORE the first git
|
|
8
|
+
* push, otherwise the workflow's first run hits the "secret not
|
|
9
|
+
* set — skipping deploy trigger" branch and silently no-ops.
|
|
10
|
+
*
|
|
11
|
+
* Two workflow shapes coexist today:
|
|
12
|
+
* · adopt's `deploy.yml` uses COOLIFY_WEBHOOK_URL + COOLIFY_TOKEN
|
|
13
|
+
* for a single app.
|
|
14
|
+
* · the starter's `build-and-deploy.yml` uses COOLIFY_BASE_URL +
|
|
15
|
+
* COOLIFY_API_TOKEN + COOLIFY_<SERVER|CLIENT>_RESOURCE_UUID +
|
|
16
|
+
* COOLIFY_<SERVER|CLIENT>_DEPLOY_WEBHOOK for split server/client
|
|
17
|
+
* apps (with API-vs-webhook fallback).
|
|
18
|
+
*
|
|
19
|
+
* setCoolifyDeploySecrets sets BOTH naming conventions so a project
|
|
20
|
+
* works regardless of which workflow file is checked into the repo.
|
|
21
|
+
* Idempotent (`gh secret set` upserts).
|
|
22
|
+
*/
|
|
23
|
+
import chalk from "chalk";
|
|
24
|
+
import ora from "ora";
|
|
25
|
+
import { getCoolifyConfig } from "../config.js";
|
|
26
|
+
import { exec } from "../utils/exec.js";
|
|
27
|
+
/** Push the secrets that the scaffolded GH Actions workflows need
|
|
28
|
+
* to talk to Coolify. Best-effort — failures don't roll anything
|
|
29
|
+
* back; the caller gets a copy-pasteable manual recipe instead. */
|
|
30
|
+
export async function setCoolifyDeploySecrets(input) {
|
|
31
|
+
const cfg = await getCoolifyConfig();
|
|
32
|
+
if (!cfg) {
|
|
33
|
+
console.log(chalk.dim(" · Coolify not configured — skipping Actions secret push."));
|
|
34
|
+
return { ok: false, pushed: [] };
|
|
35
|
+
}
|
|
36
|
+
if (input.apps.length === 0) {
|
|
37
|
+
console.log(chalk.dim(" · No Coolify apps to wire deploy hooks for — skipping."));
|
|
38
|
+
return { ok: false, pushed: [] };
|
|
39
|
+
}
|
|
40
|
+
// Build the secret map.
|
|
41
|
+
// Always set the starter's API-style triple — once those are in
|
|
42
|
+
// place the workflow uses the per-resource uuid + bearer token to
|
|
43
|
+
// call Coolify directly, which is more robust than webhooks.
|
|
44
|
+
// Per-app webhook URLs are still set as a fallback.
|
|
45
|
+
const baseUrl = cfg.url.replace(/\/$/, "");
|
|
46
|
+
const secrets = {
|
|
47
|
+
COOLIFY_BASE_URL: baseUrl,
|
|
48
|
+
COOLIFY_API_TOKEN: cfg.token,
|
|
49
|
+
// Alias kept for adopt's simpler `deploy.yml` template.
|
|
50
|
+
COOLIFY_TOKEN: cfg.token,
|
|
51
|
+
};
|
|
52
|
+
for (const app of input.apps) {
|
|
53
|
+
const webhook = `${baseUrl}/api/v1/deploy?uuid=${app.uuid}`;
|
|
54
|
+
if (app.label === undefined) {
|
|
55
|
+
// Single-app convention (adopt's template).
|
|
56
|
+
secrets.COOLIFY_WEBHOOK_URL = webhook;
|
|
57
|
+
secrets.COOLIFY_RESOURCE_UUID = app.uuid;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Split server/client convention (starter's template).
|
|
61
|
+
secrets[`COOLIFY_${app.label}_RESOURCE_UUID`] = app.uuid;
|
|
62
|
+
secrets[`COOLIFY_${app.label}_DEPLOY_WEBHOOK`] = webhook;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const names = Object.keys(secrets);
|
|
66
|
+
const spinner = ora(`GitHub: setting ${names.length} Actions secret${names.length === 1 ? "" : "s"} on ${input.repoSlug}`).start();
|
|
67
|
+
try {
|
|
68
|
+
for (const [name, value] of Object.entries(secrets)) {
|
|
69
|
+
await ghSecretSet(input.projectDir, input.repoSlug, name, value);
|
|
70
|
+
}
|
|
71
|
+
spinner.succeed(`GitHub: Actions secrets set (${names.join(", ")})`);
|
|
72
|
+
return { ok: true, pushed: names };
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
spinner.fail(`GitHub: setting secrets failed — ${err.message}`);
|
|
76
|
+
console.log(chalk.dim(` Set them manually with:\n` +
|
|
77
|
+
names
|
|
78
|
+
.map((n) => ` gh secret set ${n} --repo ${input.repoSlug} --body '${secrets[n]}'`)
|
|
79
|
+
.join("\n")));
|
|
80
|
+
return { ok: false, pushed: [] };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function ghSecretSet(cwd, repo, name, value) {
|
|
84
|
+
const res = await exec("gh", ["secret", "set", name, "--repo", repo, "--body", value], {
|
|
85
|
+
cwd,
|
|
86
|
+
});
|
|
87
|
+
if (res.exitCode !== 0) {
|
|
88
|
+
throw new Error(`gh secret set ${name} exited ${res.exitCode}: ${res.stderr.trim()}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Extract `owner/repo` from a git remote URL.
|
|
92
|
+
* git@github.com:owner/repo.git → owner/repo
|
|
93
|
+
* https://github.com/owner/repo[.git] → owner/repo
|
|
94
|
+
* Returns undefined for non-GitHub URLs. */
|
|
95
|
+
export function repoSlugFromRemote(url) {
|
|
96
|
+
if (!url)
|
|
97
|
+
return undefined;
|
|
98
|
+
const ssh = url.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
99
|
+
if (ssh)
|
|
100
|
+
return `${ssh[1]}/${ssh[2]}`;
|
|
101
|
+
const https = url.match(/^https?:\/\/github\.com\/([^/]+)\/([^/]+?)(?:\.git)?(?:\/.*)?$/);
|
|
102
|
+
if (https)
|
|
103
|
+
return `${https[1]}/${https[2]}`;
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
/** Extract the `owner` segment alone from a GitHub remote URL. */
|
|
107
|
+
export function ownerFromRemote(url) {
|
|
108
|
+
const slug = repoSlugFromRemote(url);
|
|
109
|
+
return slug?.split("/")[0];
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=gh-actions-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gh-actions-secrets.js","sourceRoot":"","sources":["../../src/deploy/gh-actions-secrets.ts"],"names":[],"mappings":"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"}
|
package/dist/deploy/github.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { ProjectConfig } from "../prompts.js";
|
|
2
|
-
/** Initialize git repo
|
|
2
|
+
/** Initialize git repo + create GitHub remote. Does NOT push — the
|
|
3
|
+
* caller (handleCreate / runAdopt) finishes the deploy wiring (env,
|
|
4
|
+
* Coolify app, GH Actions secrets) before invoking pushInitialBranch
|
|
5
|
+
* so the workflow's first run has the secrets it needs to redeploy
|
|
6
|
+
* Coolify. */
|
|
3
7
|
export declare function setupGitHub(config: ProjectConfig, appDir: string): Promise<string | null>;
|
|
8
|
+
/** Push the working branch to `origin`. Run AFTER Coolify wiring +
|
|
9
|
+
* GH Actions secrets are in place so the workflow's first run can
|
|
10
|
+
* hit the redeploy webhook successfully. Best-effort — failures
|
|
11
|
+
* print a copy-pasteable manual command rather than throwing. */
|
|
12
|
+
export declare function pushInitialBranch(projectDir: string): Promise<void>;
|
|
4
13
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/deploy/github.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/deploy/github.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;eAIe;AACf,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmD/F;AAED;;;kEAGkE;AAClE,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzE"}
|
package/dist/deploy/github.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { exec } from "../utils/exec.js";
|
|
3
|
-
/** Initialize git repo
|
|
3
|
+
/** Initialize git repo + create GitHub remote. Does NOT push — the
|
|
4
|
+
* caller (handleCreate / runAdopt) finishes the deploy wiring (env,
|
|
5
|
+
* Coolify app, GH Actions secrets) before invoking pushInitialBranch
|
|
6
|
+
* so the workflow's first run has the secrets it needs to redeploy
|
|
7
|
+
* Coolify. */
|
|
4
8
|
export async function setupGitHub(config, appDir) {
|
|
5
9
|
console.log(chalk.bold("\n ── GitHub ────────────────────────────────────────────────\n"));
|
|
6
10
|
// Git init
|
|
@@ -18,8 +22,10 @@ export async function setupGitHub(config, appDir) {
|
|
|
18
22
|
console.log(chalk.dim(" Skipped GitHub remote creation."));
|
|
19
23
|
return null;
|
|
20
24
|
}
|
|
21
|
-
// Create GitHub repo
|
|
22
|
-
|
|
25
|
+
// Create GitHub repo + register `origin`, but DO NOT push yet.
|
|
26
|
+
// pushInitialBranch is called by the caller after Coolify wiring
|
|
27
|
+
// and Actions-secret upserts have completed.
|
|
28
|
+
const createResult = await exec("gh", ["repo", "create", config.name, "--private", "--source=."], { cwd: appDir, spinner: `Creating GitHub repo: ${config.name}...` });
|
|
23
29
|
if (createResult.exitCode !== 0) {
|
|
24
30
|
console.log(chalk.yellow(" Could not create GitHub repo. Your local git repo is ready;"));
|
|
25
31
|
console.log(chalk.yellow(` push it manually once the remote exists:`));
|
|
@@ -36,4 +42,27 @@ export async function setupGitHub(config, appDir) {
|
|
|
36
42
|
console.log(chalk.green(` ✓ GitHub repo: ${repoUrl}`));
|
|
37
43
|
return repoUrl;
|
|
38
44
|
}
|
|
45
|
+
/** Push the working branch to `origin`. Run AFTER Coolify wiring +
|
|
46
|
+
* GH Actions secrets are in place so the workflow's first run can
|
|
47
|
+
* hit the redeploy webhook successfully. Best-effort — failures
|
|
48
|
+
* print a copy-pasteable manual command rather than throwing. */
|
|
49
|
+
export async function pushInitialBranch(projectDir) {
|
|
50
|
+
// `git symbolic-ref --short HEAD` is more reliable than rev-parse
|
|
51
|
+
// for the brand-new `git init` case where HEAD points at an unborn
|
|
52
|
+
// ref (no commits yet would error on rev-parse).
|
|
53
|
+
const headRes = await exec("git", ["symbolic-ref", "--short", "HEAD"], {
|
|
54
|
+
cwd: projectDir,
|
|
55
|
+
silent: true,
|
|
56
|
+
});
|
|
57
|
+
const branch = headRes.exitCode === 0 ? headRes.stdout.trim() : "main";
|
|
58
|
+
const push = await exec("git", ["push", "-u", "origin", branch], {
|
|
59
|
+
cwd: projectDir,
|
|
60
|
+
spinner: `Pushing ${branch} to origin...`,
|
|
61
|
+
});
|
|
62
|
+
if (push.exitCode !== 0) {
|
|
63
|
+
console.log(chalk.yellow(` Couldn't push ${branch} to origin — push manually:\n` +
|
|
64
|
+
` cd ${projectDir}\n` +
|
|
65
|
+
` git push -u origin ${branch}`));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
39
68
|
//# sourceMappingURL=github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/deploy/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/deploy/github.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -483,7 +483,10 @@ async function handleCreate() {
|
|
|
483
483
|
console.log(chalk.bold("\n ── Summary ───────────────────────────────────────────────\n"));
|
|
484
484
|
console.log(` Project: ${chalk.cyan(config.name)}`);
|
|
485
485
|
console.log(` Domain: ${chalk.cyan(config.domain)}`);
|
|
486
|
-
console.log(` Deploy to: ${config.deployTarget === "existing" ? `existing server (${config.serverIp})` : `new Hetzner ${config.serverSize}`}`);
|
|
486
|
+
console.log(` Deploy to: ${config.deployTarget === "existing" ? `existing server (${config.serverIpv4 ?? config.serverIp ?? "?"}${config.serverIpv6 ? ` · ${config.serverIpv6}` : ""})` : `new Hetzner ${config.serverSize}`}`);
|
|
487
|
+
if (config.serverIpMismatchWarning) {
|
|
488
|
+
console.log(chalk.yellow(` ⚠ ${config.serverIpMismatchWarning}`));
|
|
489
|
+
}
|
|
487
490
|
console.log(` Features: ${config.features.length > 0 ? config.features.join(", ") : "none"}`);
|
|
488
491
|
console.log(` ML: ${config.mlServices.length > 0 ? config.mlServices.join(", ") : "none"}`);
|
|
489
492
|
console.log(` Scaffold: ${config.scaffoldRepo ? "yes" : "no"}`);
|
|
@@ -684,6 +687,41 @@ async function handleCreate() {
|
|
|
684
687
|
console.log(chalk.dim(` Push manually once the Coolify app exists: hatchkit keys push ${config.name}`));
|
|
685
688
|
}
|
|
686
689
|
}
|
|
690
|
+
// Set the GH Actions deploy secrets so the starter's
|
|
691
|
+
// build-and-deploy.yml workflow can hit Coolify on push.
|
|
692
|
+
// Mirrors the same flow `hatchkit adopt` runs: discover the
|
|
693
|
+
// matching Coolify app(s) by name, push COOLIFY_BASE_URL +
|
|
694
|
+
// COOLIFY_API_TOKEN + per-app resource uuids + webhook URLs.
|
|
695
|
+
// Best-effort — failures print a manual recipe.
|
|
696
|
+
if (repoUrl && config.scaffoldRepo) {
|
|
697
|
+
try {
|
|
698
|
+
const { findCoolifyAppsForProject } = await import("./deploy/coolify-app.js");
|
|
699
|
+
const { repoSlugFromRemote, setCoolifyDeploySecrets } = await import("./deploy/gh-actions-secrets.js");
|
|
700
|
+
const slug = repoSlugFromRemote(repoUrl);
|
|
701
|
+
const apps = await findCoolifyAppsForProject(config.name);
|
|
702
|
+
if (slug && apps.length > 0) {
|
|
703
|
+
await setCoolifyDeploySecrets({
|
|
704
|
+
projectDir: appDir,
|
|
705
|
+
repoSlug: slug,
|
|
706
|
+
apps,
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
else if (apps.length === 0) {
|
|
710
|
+
console.log(chalk.dim(` · No Coolify app named "${config.name}" / "${config.name}-server" / "${config.name}-client" / "${config.name}-web" found — skipping Actions secret push.`));
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
catch (err) {
|
|
714
|
+
console.log(chalk.yellow(` Couldn't push GH Actions deploy secrets: ${err.message}`));
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
// Step 6.5: push the working branch to origin. Done AFTER Coolify
|
|
719
|
+
// wiring + Actions-secret upserts so the workflow's first run
|
|
720
|
+
// already has the secrets it needs to deploy. setupGitHub above
|
|
721
|
+
// created the repo + `origin` but deliberately skipped the push.
|
|
722
|
+
if (config.scaffoldRepo && config.createGithubRepo && repoUrl) {
|
|
723
|
+
const { pushInitialBranch } = await import("./deploy/github.js");
|
|
724
|
+
await pushInitialBranch(appDir);
|
|
687
725
|
}
|
|
688
726
|
// Step 7: Deploy ML services
|
|
689
727
|
if (config.runDeployment &&
|