public async build()

in packages/cdk-assets/lib/private/docker.ts [104:139]


  public async build(options: BuildOptions) {
    const buildCommand = [
      'build',
      ...flatten(
        Object.entries(options.buildArgs || {}).map(([k, v]) => ['--build-arg', `${k}=${v}`]),
      ),
      ...flatten(
        Object.entries(options.buildSecrets || {}).map(([k, v]) => ['--secret', `id=${k},${v}`]),
      ),
      ...(options.buildSsh ? ['--ssh', options.buildSsh] : []),
      '--tag',
      options.tag,
      ...(options.target ? ['--target', options.target] : []),
      ...(options.file ? ['--file', options.file] : []),
      ...(options.networkMode ? ['--network', options.networkMode] : []),
      ...(options.platform ? ['--platform', options.platform] : []),
      ...(options.outputs ? options.outputs.map((output) => [`--output=${output}`]) : []),
      ...(options.cacheFrom
        ? [
          ...options.cacheFrom
            .map((cacheFrom) => ['--cache-from', this.cacheOptionToFlag(cacheFrom)])
            .flat(),
        ]
        : []),
      ...(options.cacheTo ? ['--cache-to', this.cacheOptionToFlag(options.cacheTo)] : []),
      ...(options.cacheDisabled ? ['--no-cache'] : []),
      '.',
    ];
    await this.execute(buildCommand, {
      cwd: options.directory,
      subprocessOutputDestination: this.subprocessOutputDestination,
      env: {
        BUILDX_NO_DEFAULT_ATTESTATIONS: '1', // Docker Build adds provenance attestations by default that confuse cdk-assets
      },
    });
  }