diff --git a/packages/cdk-assets/lib/private/handlers/container-images.ts b/packages/cdk-assets/lib/private/handlers/container-images.ts index ec4327775c37c..d2fd7373eb1cf 100644 --- a/packages/cdk-assets/lib/private/handlers/container-images.ts +++ b/packages/cdk-assets/lib/private/handlers/container-images.ts @@ -83,14 +83,16 @@ export class ContainerImageAssetHandler implements IAssetHandler { * External command is responsible for deduplicating the build if possible, * and is expected to return the generated image identifier on stdout. */ - private async buildExternalAsset(executable: string[]): Promise { + private async buildExternalAsset(executable: string[], cwd?: string): Promise { + + const assetPath = cwd ?? this.workDir; + this.host.emitMessage(EventType.BUILD, `Building Docker image using command '${executable}'`); if (this.host.aborted) { return undefined; } - return (await shell(executable, { quiet: true })).trim(); + return (await shell(executable, { cwd: assetPath, quiet: true })).trim(); } - /** * Check whether the image already exists in the ECR repo * diff --git a/packages/cdk-assets/test/docker-images.test.ts b/packages/cdk-assets/test/docker-images.test.ts index 1f36b88025725..cfbb8fc70379b 100644 --- a/packages/cdk-assets/test/docker-images.test.ts +++ b/packages/cdk-assets/test/docker-images.test.ts @@ -183,7 +183,7 @@ describe('external assets', () => { const expectAllSpawns = mockSpawn( { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, - { commandLine: ['sometool'], stdout: externalTag }, + { commandLine: ['sometool'], stdout: externalTag, cwd: '/external/cdk.out' }, { commandLine: ['docker', 'tag', externalTag, '12345.amazonaws.com/repo:ghijkl'] }, { commandLine: ['docker', 'push', '12345.amazonaws.com/repo:ghijkl'] }, );