From 31e915c0174850f3297cb40b5019d3445a7439b3 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 18 Feb 2023 07:31:21 +0100 Subject: [PATCH] buildkit: use node info to retrieve version Signed-off-by: CrazyMax --- __tests__/buildkit/buildkit.test.ts | 9 ++++++--- src/buildkit/buildkit.ts | 28 +++++++++------------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/__tests__/buildkit/buildkit.test.ts b/__tests__/buildkit/buildkit.test.ts index 3ecbf06..ca261a9 100644 --- a/__tests__/buildkit/buildkit.test.ts +++ b/__tests__/buildkit/buildkit.test.ts @@ -15,7 +15,6 @@ */ import {beforeEach, describe, expect, it, jest, test} from '@jest/globals'; -import * as semver from 'semver'; import {BuildKit} from '../../src/buildkit/buildkit'; import {Builder} from '../../src/buildx/builder'; @@ -48,11 +47,15 @@ jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise { it('valid', async () => { + const builder = new Builder({ + context: new Context() + }); + const builderInfo = await builder.inspect('builder2'); const buildkit = new BuildKit({ context: new Context() }); - const version = await buildkit.getVersion('builder2'); - expect(semver.valid(version)).not.toBeNull(); + const version = await buildkit.getVersion(builderInfo.nodes[0]); + expect(version).toBe('v0.11.0'); }); }); diff --git a/src/buildkit/buildkit.ts b/src/buildkit/buildkit.ts index b0301bf..42e5994 100644 --- a/src/buildkit/buildkit.ts +++ b/src/buildkit/buildkit.ts @@ -23,7 +23,7 @@ import {Buildx} from '../buildx/buildx'; import {Builder} from '../buildx/builder'; import {Config} from './config'; -import {BuilderInfo} from '../types/builder'; +import {BuilderInfo, NodeInfo} from '../types/builder'; export interface BuildKitOpts { context: Context; @@ -46,14 +46,7 @@ export class BuildKit { }); } - public async getVersion(builderName: string): Promise { - const builderInfo = await this.getBuilderInfo(builderName); - if (builderInfo.nodes.length == 0) { - // a builder always have on node, should not happen. - return undefined; - } - // TODO: get version for all nodes - const node = builderInfo.nodes[0]; + public async getVersion(node: NodeInfo): Promise { if (!node.buildkitVersion && node.name) { try { return await this.getVersionWithinImage(node.name); @@ -92,8 +85,13 @@ export class BuildKit { }); } - public async versionSatisfies(builderName: string, range: string): Promise { - const builderInfo = await this.getBuilderInfo(builderName); + public async versionSatisfies(builderName: string, range: string, builderInfo?: BuilderInfo): Promise { + if (!builderInfo) { + builderInfo = await new Builder({ + context: this.context, + buildx: this.buildx + }).inspect(builderName); + } for (const node of builderInfo.nodes) { let bkversion = node.buildkitVersion; if (!bkversion) { @@ -113,12 +111,4 @@ export class BuildKit { } return true; } - - private async getBuilderInfo(name: string): Promise { - const builder = new Builder({ - context: this.context, - buildx: this.buildx - }); - return builder.inspect(name); - } }