in lib/registry-sync/mirror-source.ts [117:144]
public bind(options: MirrorSourceBindOptions) {
const asset = new s3Assets.Asset(options.scope, `BuildContext${this.directory}${JSON.stringify(opts.buildArgs ?? {})}`, { path: this.directory! });
if (options.syncJob) {
asset.grantRead(options.syncJob);
}
const ecrImageUri = `${options.ecrRegistry}/${this.repositoryName}:${this.tag}`;
const cmdFlags = [];
cmdFlags.push('--pull');
cmdFlags.push('-t', ecrImageUri);
if (opts.buildArgs) {
Object.entries(opts.buildArgs).forEach(([k, v]) => cmdFlags.push('--build-arg', `${k}=${v}`));
}
const zipFile = `${this.repositoryName}.zip`;
const tmpDir = this.repositoryName;
return {
commands: [
`rm -rf ${zipFile} ${tmpDir}`,
`aws s3 cp ${asset.s3ObjectUrl} ${zipFile}`,
`unzip ${zipFile} -d ${tmpDir}`,
`docker build ${cmdFlags.join(' ')} ${tmpDir}`,
],
repositoryName: this.repositoryName,
tag: this.tag,
};
}