diff --git a/__tests__/docker/docker.test.itg.ts b/__tests__/docker/docker.test.itg.ts index 5996d3d..5c7db47 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/buildx/history.ts b/src/buildx/history.ts index c28b12e..ae227d8 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'); } diff --git a/src/docker/docker.ts b/src/docker/docker.ts index 2584b06..517b0d8 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)); }