From fa81ea567afe0c707f491ebbb950bb148dc66b8f Mon Sep 17 00:00:00 2001 From: GHOST Date: Sun, 17 Nov 2024 02:31:00 +0000 Subject: [PATCH 1/3] feat: exit if docker buildx can't be found for self-hosted builds --- .changeset/spicy-turkeys-hug.md | 5 +++++ packages/cli-v3/package.json | 2 +- packages/cli-v3/src/commands/deploy.ts | 10 ++++++++++ pnpm-lock.yaml | 12 ++++++------ 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 .changeset/spicy-turkeys-hug.md diff --git a/.changeset/spicy-turkeys-hug.md b/.changeset/spicy-turkeys-hug.md new file mode 100644 index 0000000000..3b25e391ec --- /dev/null +++ b/.changeset/spicy-turkeys-hug.md @@ -0,0 +1,5 @@ +--- +"trigger.dev": minor +--- + +feat: exit if docker buildx can't be found for self-hosted builds diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index a5367acc63..8eb7833b00 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -118,7 +118,7 @@ "std-env": "^3.7.0", "terminal-link": "^3.0.0", "tiny-invariant": "^1.2.0", - "tinyexec": "^0.2.0", + "tinyexec": "^0.3.1", "ws": "^8.18.0", "xdg-app-paths": "^8.3.0", "zod": "3.22.3", diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index 7552b52e3a..724066296d 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -37,6 +37,7 @@ import { spinner } from "../utilities/windows.js"; import { login } from "./login.js"; import { updateTriggerPackages } from "./update.js"; import { resolveAlwaysExternal } from "../build/externals.js"; +import { x } from "tinyexec"; const DeployCommandOptions = CommonCommandOptions.extend({ dryRun: z.boolean().default(false), @@ -265,6 +266,15 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) { ); } + if (options.selfHosted) { + const result = await x("docker", ["buildx", "version"]); + + if (result.exitCode !== 0) { + logger.debug("`docker buildx version` exited with a non-zero code:", result.exitCode); + throw new Error("Failed to find docker buildx, please install it."); + } + } + if ( buildManifest.deploy.sync && buildManifest.deploy.sync.env && diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb70f22a20..dc471f94cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1184,8 +1184,8 @@ importers: specifier: ^1.2.0 version: 1.3.1 tinyexec: - specifier: ^0.2.0 - version: 0.2.0 + specifier: ^0.3.1 + version: 0.3.1 ws: specifier: ^8.18.0 version: 8.18.0 @@ -28547,13 +28547,13 @@ packages: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} dev: false - /tinyexec@0.2.0: - resolution: {integrity: sha512-au8dwv4xKSDR+Fw52csDo3wcDztPdne2oM1o/7LFro4h6bdFmvyUAeAfX40pwDtzHgRFqz1XWaUqgKS2G83/ig==} - dev: false - /tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + /tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + dev: false + /tinyglobby@0.2.2: resolution: {integrity: sha512-mZ2sDMaySvi1PkTp4lTo1In2zjU+cY8OvZsfwrDrx3YGRbXPX1/cbPwCR9zkm3O/Fz9Jo0F1HNgIQ1b8BepqyQ==} engines: {node: '>=12.0.0'} From 778e2f7a3c0147298daebb43e8b84f813f036e88 Mon Sep 17 00:00:00 2001 From: GHOST Date: Sun, 17 Nov 2024 02:50:46 +0000 Subject: [PATCH 2/3] chore: tweak debug log message --- packages/cli-v3/src/commands/deploy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index 724066296d..cbab9ad85b 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -270,7 +270,7 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) { const result = await x("docker", ["buildx", "version"]); if (result.exitCode !== 0) { - logger.debug("`docker buildx version` exited with a non-zero code:", result.exitCode); + logger.debug(`"docker buildx version" failed (${result.exitCode}):`, result); throw new Error("Failed to find docker buildx, please install it."); } } From 87acfe1bd0820857b47aed757fc44d70276524d0 Mon Sep 17 00:00:00 2001 From: GHOST Date: Sun, 17 Nov 2024 03:00:56 +0000 Subject: [PATCH 3/3] chore: improve error message based on rabbit's suggestion --- packages/cli-v3/src/commands/deploy.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index cbab9ad85b..eb6f6aef11 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -271,7 +271,9 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) { if (result.exitCode !== 0) { logger.debug(`"docker buildx version" failed (${result.exitCode}):`, result); - throw new Error("Failed to find docker buildx, please install it."); + throw new Error( + "Failed to find docker buildx. Please install it: https://github.com/docker/buildx#installing." + ); } }