Merge pull request #416 from crazy-max/docker-daemon-up

buildx(history): check docker daemon is running before exporting
This commit is contained in:
CrazyMax 2024-07-19 16:18:17 +02:00 committed by GitHub
commit f7a8b21610
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 0 deletions

View File

@ -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; 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', () => { maybe('pull', () => {
// prettier-ignore // prettier-ignore
test.each([ test.each([

View File

@ -50,6 +50,9 @@ export class History {
if (!(await Docker.isAvailable())) { if (!(await Docker.isAvailable())) {
throw new Error('Docker is required to export a build record'); 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'))) { if (!(await this.buildx.versionSatisfies('>=0.13.0'))) {
throw new Error('Buildx >= 0.13.0 is required to export a build record'); throw new Error('Buildx >= 0.13.0 is required to export a build record');
} }

View File

@ -54,6 +54,17 @@ export class Docker {
}); });
} }
public static async isDaemonRunning(): Promise<boolean> {
try {
await Docker.getExecOutput([`version`], {
silent: true
});
return true;
} catch (e) {
return false;
}
}
public static async exec(args?: string[], options?: ExecOptions): Promise<number> { public static async exec(args?: string[], options?: ExecOptions): Promise<number> {
return Exec.exec('docker', args, Docker.execOptions(options)); return Exec.exec('docker', args, Docker.execOptions(options));
} }