Skip to content

Commit f96b2fb

Browse files
kuwabarahiroshimergify[bot]
authored andcommitted
fix(ecr-assets): exclude option (#4354)
* fix(@aws-cdk/aws-ecr-assets): `exclude` option (#4353) fixed #4353 * .dockerignore itself should be included * fixed test path with image.sourceHash * modified excluded path to be tested
1 parent f9898ec commit f96b2fb

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class DockerImageAsset extends Construct implements assets.IAsset {
7575
throw new Error(`No 'Dockerfile' found in ${dir}`);
7676
}
7777

78-
let exclude: string[] = ['.dockerignore'];
78+
let exclude: string[] = props.exclude || [];
7979

8080
const ignore = path.join(dir, '.dockerignore');
8181

packages/@aws-cdk/aws-ecr-assets/test/dockerignore-image/subdirectory/baz.txt

Whitespace-only changes.

packages/@aws-cdk/aws-ecr-assets/test/test.image-asset.ts

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,30 +197,55 @@ export = {
197197
const app = new App();
198198
const stack = new Stack(app, 'stack');
199199

200-
new DockerImageAsset(stack, 'MyAsset', {
200+
const image = new DockerImageAsset(stack, 'MyAsset', {
201201
directory: path.join(__dirname, 'demo-image')
202202
});
203203

204204
const session = app.synth();
205205

206-
test.ok(fs.existsSync(path.join(session.directory, 'asset.1a17a141505ac69144931fe263d130f4612251caa4bbbdaf68a44ed0f405439c/Dockerfile')));
207-
test.ok(fs.existsSync(path.join(session.directory, 'asset.1a17a141505ac69144931fe263d130f4612251caa4bbbdaf68a44ed0f405439c/index.py')));
206+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'Dockerfile')));
207+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'index.py')));
208208
test.done();
209209
},
210210

211211
'docker directory is staged without files specified in .dockerignore'(test: Test) {
212212
const app = new App();
213213
const stack = new Stack(app, 'stack');
214214

215-
new DockerImageAsset(stack, 'MyAsset', {
215+
const image = new DockerImageAsset(stack, 'MyAsset', {
216216
directory: path.join(__dirname, 'dockerignore-image')
217217
});
218218

219219
const session = app.synth();
220220

221-
test.ok(fs.existsSync(path.join(session.directory, `asset.1a17a141505ac69144931fe263d130f4612251caa4bbbdaf68a44ed0f405439c/Dockerfile`)));
222-
test.ok(fs.existsSync(path.join(session.directory, 'asset.1a17a141505ac69144931fe263d130f4612251caa4bbbdaf68a44ed0f405439c/index.py')));
223-
test.ok(!fs.existsSync(path.join(session.directory, 'asset.1a17a141505ac69144931fe263d130f4612251caa4bbbdaf68a44ed0f405439c/foobar.txt')));
221+
// .dockerignore itself should be included in output to be processed during docker build
222+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, '.dockerignore')));
223+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, `Dockerfile`)));
224+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'index.py')));
225+
test.ok(!fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'foobar.txt')));
226+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'subdirectory')));
227+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'subdirectory', 'baz.txt')));
228+
229+
test.done();
230+
},
231+
232+
'docker directory is staged without files specified in exclude option'(test: Test) {
233+
const app = new App();
234+
const stack = new Stack(app, 'stack');
235+
236+
const image = new DockerImageAsset(stack, 'MyAsset', {
237+
directory: path.join(__dirname, 'dockerignore-image'),
238+
exclude: ['subdirectory']
239+
});
240+
241+
const session = app.synth();
242+
243+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, '.dockerignore')));
244+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, `Dockerfile`)));
245+
test.ok(fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'index.py')));
246+
test.ok(!fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'foobar.txt')));
247+
test.ok(!fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'subdirectory')));
248+
test.ok(!fs.existsSync(path.join(session.directory, `asset.${image.sourceHash}`, 'subdirectory', 'baz.txt')));
224249

225250
test.done();
226251
},

0 commit comments

Comments
 (0)