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..eb6f6aef11 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,17 @@ 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" failed (${result.exitCode}):`, result); + throw new Error( + "Failed to find docker buildx. Please install it: https://github.com/docker/buildx#installing." + ); + } + } + 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'}