From a14ead6486b59ab6f9f237e75c60ec172070844d Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Fri, 19 Jul 2024 13:25:38 +0200 Subject: [PATCH 1/2] docker: isDaemonRunning func Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- __tests__/docker/docker.test.itg.ts | 6 ++++++ src/docker/docker.ts | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/__tests__/docker/docker.test.itg.ts b/__tests__/docker/docker.test.itg.ts index 5996d3df..5c7db47a 100644 --- a/__tests__/docker/docker.test.itg.ts +++ b/__tests__/docker/docker.test.itg.ts @@ -20,6 +20,12 @@ import {Docker} from '../../src/docker/docker'; const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; +maybe('isDaemonRunning', () => { + it('checks if daemon is running', async () => { + expect(await Docker.isDaemonRunning()).toBe(true); + }); +}); + maybe('pull', () => { // prettier-ignore test.each([ diff --git a/src/docker/docker.ts b/src/docker/docker.ts index 2584b060..517b0d8c 100644 --- a/src/docker/docker.ts +++ b/src/docker/docker.ts @@ -54,6 +54,17 @@ export class Docker { }); } + public static async isDaemonRunning(): Promise { + try { + await Docker.getExecOutput([`version`], { + silent: true + }); + return true; + } catch (e) { + return false; + } + } + public static async exec(args?: string[], options?: ExecOptions): Promise { return Exec.exec('docker', args, Docker.execOptions(options)); } From 8177e153d6c96d785044f085574633a45aca95d0 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Fri, 19 Jul 2024 13:31:04 +0200 Subject: [PATCH 2/2] buildx(history): check docker daemon is running before exporting Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- src/buildx/history.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/buildx/history.ts b/src/buildx/history.ts index c28b12e8..ae227d89 100644 --- a/src/buildx/history.ts +++ b/src/buildx/history.ts @@ -50,6 +50,9 @@ export class History { if (!(await Docker.isAvailable())) { throw new Error('Docker is required to export a build record'); } + if (!(await Docker.isDaemonRunning())) { + throw new Error('Docker daemon is not running, skipping build record export'); + } if (!(await this.buildx.versionSatisfies('>=0.13.0'))) { throw new Error('Buildx >= 0.13.0 is required to export a build record'); }