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.
Files changed (45) hide show
  1. package/dist/adopt.d.ts.map +1 -1
  2. package/dist/adopt.js +93 -97
  3. package/dist/adopt.js.map +1 -1
  4. package/dist/deploy/coolify-app.d.ts +12 -0
  5. package/dist/deploy/coolify-app.d.ts.map +1 -1
  6. package/dist/deploy/coolify-app.js +42 -101
  7. package/dist/deploy/coolify-app.js.map +1 -1
  8. package/dist/deploy/coolify-mongo.d.ts.map +1 -1
  9. package/dist/deploy/coolify-mongo.js +15 -3
  10. package/dist/deploy/coolify-mongo.js.map +1 -1
  11. package/dist/deploy/gh-actions-secrets.d.ts +44 -0
  12. package/dist/deploy/gh-actions-secrets.d.ts.map +1 -0
  13. package/dist/deploy/gh-actions-secrets.js +111 -0
  14. package/dist/deploy/gh-actions-secrets.js.map +1 -0
  15. package/dist/deploy/github.d.ts +10 -1
  16. package/dist/deploy/github.d.ts.map +1 -1
  17. package/dist/deploy/github.js +32 -3
  18. package/dist/deploy/github.js.map +1 -1
  19. package/dist/index.js +39 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/prompts.d.ts +54 -0
  22. package/dist/prompts.d.ts.map +1 -1
  23. package/dist/prompts.js +115 -20
  24. package/dist/prompts.js.map +1 -1
  25. package/dist/scaffold/app.js +1 -1
  26. package/dist/scaffold/app.js.map +1 -1
  27. package/dist/scaffold/infra.d.ts.map +1 -1
  28. package/dist/scaffold/infra.js +17 -8
  29. package/dist/scaffold/infra.js.map +1 -1
  30. package/dist/scaffold/manifest.d.ts.map +1 -1
  31. package/dist/scaffold/manifest.js +2 -1
  32. package/dist/scaffold/manifest.js.map +1 -1
  33. package/dist/scaffold/update.js +1 -1
  34. package/dist/scaffold/update.js.map +1 -1
  35. package/dist/templates/build-pipeline/deploy.yml.hbs +15 -5
  36. package/dist/utils/coolify-api.d.ts.map +1 -1
  37. package/dist/utils/coolify-api.js.map +1 -1
  38. package/dist/utils/coolify-server-ips.d.ts +26 -0
  39. package/dist/utils/coolify-server-ips.d.ts.map +1 -0
  40. package/dist/utils/coolify-server-ips.js +135 -0
  41. package/dist/utils/coolify-server-ips.js.map +1 -0
  42. package/dist/utils/errors.js +1 -1
  43. package/dist/utils/errors.js.map +1 -1
  44. package/package.json +2 -2
  45. 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,CAkF/B"}
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
- if (ip)
49
- server = await api.findServer({ ip });
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,CACb,oBAAoB,MAAM,CAAC,IAAI,yCAAyC,CACzE,CAAC;QACJ,CAAC;QACD,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QAE3B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,IAAI,MAAM,GAAsD,IAAI,CAAC;QACrE,IAAI,EAAE;YAAE,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,+DAA+D;YAC/D,+DAA+D;YAC/D,yCAAyC;YACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC9D,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QACpF,CAAC;QACD,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,uDAAuD,CAAC,CAAC,KAAK,EAAE,CAAC;IACpF,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC;YAC1C,UAAU;YACV,WAAW;YACX,mEAAmE;YACnE,gEAAgE;YAChE,6BAA6B;YAC7B,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,QAAQ;YAC5B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAC9C,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,WAAW,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,4DAA4D;YAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACnD,WAAW,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,wBAAwB,YAAY,GAAG,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,mEAAmE;IACnE,mEAAmE;IACnE,oEAAoE;IACpE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC1D,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,kCAAkC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CACvF,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC"}
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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"}
@@ -1,4 +1,13 @@
1
1
  import type { ProjectConfig } from "../prompts.js";
2
- /** Initialize git repo, create GitHub remote, and push. */
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,2DAA2D;AAC3D,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiD/F"}
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"}
@@ -1,6 +1,10 @@
1
1
  import chalk from "chalk";
2
2
  import { exec } from "../utils/exec.js";
3
- /** Initialize git repo, create GitHub remote, and push. */
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
- const createResult = await exec("gh", ["repo", "create", config.name, "--private", "--source=.", "--push"], { cwd: appDir, spinner: `Creating GitHub repo: ${config.name}...` });
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,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAqB,EAAE,MAAc;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAE5F,WAAW;IACX,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;QAC1B,GAAG,EAAE,MAAM;QACX,OAAO,EAAE,0BAA0B;KACpC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE;QACtD,GAAG,EAAE,MAAM;QACX,OAAO,EAAE,4BAA4B;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,MAAM,IAAI,CAC7B,IAAI,EACJ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,EACpE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,MAAM,CAAC,IAAI,KAAK,EAAE,CACpE,CAAC;IAEF,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,8BAA8B,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iFAAiF,CAClF,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;QAClF,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC;AACjB,CAAC"}
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 &&