Skip to content

Commit 6b04427

Browse files
Omit generated image name when --image-name is given (#812)
1 parent 4a5e266 commit 6b04427

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/spec-node/containerFeatures.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,8 @@ export async function extendImage(params: DockerResolverParameters, config: Subs
111111
cliHost.mkdirp(emptyTempDir);
112112
args.push(
113113
'--target', featureBuildInfo.overrideTarget,
114-
'-t', updatedImageName,
115-
...additionalImageNames.map(name => ['-t', name]).flat(),
116114
'-f', dockerfilePath,
115+
...additionalImageNames.length > 0 ? additionalImageNames.map(name => ['-t', name]).flat() : ['-t', updatedImageName],
117116
emptyTempDir
118117
);
119118

@@ -125,7 +124,7 @@ export async function extendImage(params: DockerResolverParameters, config: Subs
125124
await dockerCLI(infoParams, ...args);
126125
}
127126
return {
128-
updatedImageName: [ updatedImageName ],
127+
updatedImageName: additionalImageNames.length > 0 ? additionalImageNames : [updatedImageName],
129128
imageMetadata: getDevcontainerMetadata(imageBuildInfo.metadata, config, featuresConfig),
130129
imageDetails: async () => imageBuildInfo.imageDetails,
131130
};

src/test/cli.build.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ describe('Dev Containers CLI', function () {
2727

2828
describe('Command build', () => {
2929

30+
it('should correctly configure the image name to push from --image-name with --push true', async () => {
31+
const testFolder = `${__dirname}/configs/example`;
32+
try {
33+
await shellExec(`${cli} build --workspace-folder ${testFolder} --image-name demo:v1`);
34+
const tags = await shellExec(`docker images --format "{{.Tag}}" demo`);
35+
const imageTags = tags.stdout.trim().split('\n').filter(tag => tag !== '<none>');
36+
assert.equal(imageTags.length, 1, 'There should be only one tag for demo:v1');
37+
} catch (error) {
38+
assert.equal(error.code, 'ERR_ASSERTION', 'Should fail with ERR_ASSERTION');
39+
}
40+
});
41+
3042
buildKitOptions.forEach(({ text, options }) => {
3143
it(`should execute successfully with valid image config [${text}]`, async () => {
3244
const testFolder = `${__dirname}/configs/image`;

0 commit comments

Comments
 (0)