# FileSet

A set of files traveling through the deployment pipeline.

Individual steps in the pipeline produce or consume
`FileSet`s.

Extends: FileSet
Implements: IFileSetProducer
Superclass of: CodePipelineFileSet

- Source: [`pipelines/lib/blueprint/file-set.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/pipelines/lib/blueprint/file-set.ts#L11)

## Example

```ts
class MyJenkinsStep
  extends pipelines.Step
  implements pipelines.ICodePipelineActionFactory
{
  constructor(
    private readonly provider: cpactions.JenkinsProvider,
    private readonly input: pipelines.FileSet
  ) {
    super('MyJenkinsStep');

    // This is necessary if your step accepts parameters, like environment variables,
    // that may contain outputs from other steps. It doesn't matter what the
    // structure is, as long as it contains the values that may contain outputs.
    this.discoverReferencedOutputs({
      env: {
        /* ... */
      },
    });
  }

  public produceAction(
    stage: codepipeline.IStage,
    options: pipelines.ProduceActionOptions
  ): pipelines.CodePipelineActionFactoryResult {
    // This is where you control what type of Action gets added to the
    // CodePipeline
    stage.addAction(
      new cpactions.JenkinsAction({
        // Copy 'actionName' and 'runOrder' from the options
        actionName: options.actionName,
        runOrder: options.runOrder,

        // Jenkins-specific configuration
        type: cpactions.JenkinsActionType.TEST,
        jenkinsProvider: this.provider,
        projectName: 'MyJenkinsProject',

        // Translate the FileSet into a codepipeline.Artifact
        inputs: [options.artifacts.toCodePipeline(this.input)],
      })
    );

    return { runOrdersConsumed: 1 };
  }
}
```

## Initializer

```ts
new FileSet(id: string, producer?: Step)
```

## Properties

- `id`: string — Human-readable descriptor for this file set (does not need to be unique).

- `primaryOutput`: [FileSet](/cdk/api/v2/docs/aws-cdk-lib.pipelines.FileSet.html) — The primary output of a file set producer.

  The primary output of a FileSet is itself.

- `producer`: [Step](/cdk/api/v2/docs/aws-cdk-lib.pipelines.Step.html) — The Step that produces this FileSet.

## Methods

- `producedBy(producer?: Step): void` — Mark the given Step as the producer for this FileSet.

  This method can only be called once.

- `toString(): string` — Return a string representation of this FileSet.
