Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/aws-cdk-lib/aws-ecr-assets/lib/tarball-asset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export class TarballImageAsset extends Construct implements IAsset {
this.assetHash = stagedTarball.assetHash;

const stage = Stage.of(this);
const relativePathInOutDir = stage ? path.relative(stage.assetOutdir, stagedTarball.absoluteStagedPath) : stagedTarball.absoluteStagedPath;
const relativePathInOutDir = stage ? path.relative(stage.outdir, stagedTarball.absoluteStagedPath) : stagedTarball.absoluteStagedPath;

const stack = Stack.of(this);
const location = stack.synthesizer.addDockerImageAsset({
Expand Down
29 changes: 28 additions & 1 deletion packages/aws-cdk-lib/aws-ecr-assets/test/tarball-asset.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import * as path from 'path';
import { Template } from '../../assertions';
import * as iam from '../../aws-iam';
import * as cxschema from '../../cloud-assembly-schema';
import { App, Stack, DefaultStackSynthesizer } from '../../core';
import { App, Stage, Stack, DefaultStackSynthesizer } from '../../core';
import * as cxapi from '../../cx-api';
import { TarballImageAsset, DOCKER_LOAD_OUTPUT_REGEX } from '../lib';

Expand Down Expand Up @@ -51,6 +51,33 @@ describe('image asset', () => {
expect(asset.node.tryFindChild('Staging')).toBeDefined();
});

test('test instantiating Asset Image in a Stage', () => {
// GIVEN
const app = new App();
const stage = new Stage(app, 'Stage1');
const stack = new Stack(stage);
const asset = new TarballImageAsset(stack, 'Image', {
tarballFile,
});

// WHEN
const asm = stage.synth();

// THEN
const manifestArtifact = getAssetManifest(asm);
const manifest = readAssetManifest(manifestArtifact);

expect(manifest.dockerImages?.[asset.assetHash]?.source).toStrictEqual(
{
executable: [
'sh',
'-c',
`docker load -i ../asset.${asset.assetHash}.tar | tail -n 1 | sed "${DOCKER_LOAD_OUTPUT_REGEX}"`,
],
},
);
});

test('asset.repository.grantPull can be used to grant a principal permissions to use the image', () => {
// GIVEN
const stack = new Stack();
Expand Down
Loading