aws-cdk-lib.pipelines.CodePipelineSource

class CodePipelineSource

LanguageType name
.NETAmazon.CDK.Pipelines.CodePipelineSource
Gogithub.com/aws/aws-cdk-go/awscdk/v2/pipelines#CodePipelineSource
Javasoftware.amazon.awscdk.pipelines.CodePipelineSource
Pythonaws_cdk.pipelines.CodePipelineSource
TypeScript (source)aws-cdk-lib » pipelines » CodePipelineSource

Implements IFileSetProducer, ICodePipelineActionFactory

Extends Step

Factory for CodePipeline source steps.

This class contains a number of factory methods for the different types of sources that CodePipeline supports.

Example

// Access the CommitId of a GitHub source in the synth
const source = pipelines.CodePipelineSource.gitHub('owner/repo', 'main');

const pipeline = new pipelines.CodePipeline(scope, 'MyPipeline', {
  synth: new pipelines.ShellStep('Synth', {
    input: source,
    commands: [],
    env: {
      'COMMIT_ID': source.sourceAttribute('CommitId'),
    }
  })
});

Initializer

new CodePipelineSource(id: string)

Parameters

  • id string — Identifier for this step.

Properties

NameTypeDescription
consumedStackOutputsStackOutputReference[]StackOutputReferences this step consumes.
dependenciesStep[]Return the steps this step depends on, based on the FileSets it requires.
dependencyFileSetsFileSet[]The list of FileSets consumed by this Step.
idstringIdentifier for this step.
isSourcebooleanWhether or not this is a Source step.
primaryOutput?FileSetThe primary FileSet produced by this Step.

consumedStackOutputs

Type: StackOutputReference[]

StackOutputReferences this step consumes.


dependencies

Type: Step[]

Return the steps this step depends on, based on the FileSets it requires.


dependencyFileSets

Type: FileSet[]

The list of FileSets consumed by this Step.


id

Type: string

Identifier for this step.


isSource

Type: boolean

Whether or not this is a Source step.

What it means to be a Source step depends on the engine.


primaryOutput?

Type: FileSet (optional)

The primary FileSet produced by this Step.

Not all steps produce an output FileSet--if they do you can substitute the Step object for the FileSet object.

Methods

NameDescription
addStepDependency(step)Add a dependency on another step.
produceAction(stage, options)Create the desired Action and add it to the pipeline.
sourceAttribute(name)Return an attribute of the current source revision.
toString()Return a string representation of this Step.
protected getAction(output, actionName, runOrder, variablesNamespace?)
static codeCommit(repository, branch, props?)Returns a CodeCommit source.
static connection(repoString, branch, props)Returns a CodeStar connection source.
static ecr(repository, props?)Returns an ECR source.
static gitHub(repoString, branch, props?)Returns a GitHub source, using OAuth tokens to authenticate with GitHub and a separate webhook to detect changes.
static s3(bucket, objectKey, props?)Returns an S3 source.

addStepDependency(step)

public addStepDependency(step: Step): void

Parameters

  • step Step

Add a dependency on another step.


produceAction(stage, options)

public produceAction(stage: IStage, options: ProduceActionOptions): CodePipelineActionFactoryResult

Parameters

  • stage IStage
  • options ProduceActionOptions

Returns

  • CodePipelineActionFactoryResult

Create the desired Action and add it to the pipeline.


sourceAttribute(name)

public sourceAttribute(name: string): string

Parameters

  • name string

Returns

  • string

Return an attribute of the current source revision.

These values can be passed into the environment variables of pipeline steps, so your steps can access information about the source revision.

Pipeline synth step has some source attributes predefined in the environment. If these suffice, you don't need to use this method for the synth step.

See also: https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-variables.html#reference-variables-list Example

// Access the CommitId of a GitHub source in the synth
const source = pipelines.CodePipelineSource.gitHub('owner/repo', 'main');

const pipeline = new pipelines.CodePipeline(scope, 'MyPipeline', {
  synth: new pipelines.ShellStep('Synth', {
    input: source,
    commands: [],
    env: {
      'COMMIT_ID': source.sourceAttribute('CommitId'),
    }
  })
});

toString()

public toString(): string

Returns

  • string

Return a string representation of this Step.


protected getAction(output, actionName, runOrder, variablesNamespace?)

protected getAction(output: Artifact, actionName: string, runOrder: number, variablesNamespace?: string): Action

Parameters

  • output Artifact
  • actionName string
  • runOrder number
  • variablesNamespace string

Returns

  • Action

static codeCommit(repository, branch, props?)

public static codeCommit(repository: IRepository, branch: string, props?: CodeCommitSourceOptions): CodePipelineSource

Parameters

  • repository IRepository — The CodeCommit repository.
  • branch string — The branch to use.
  • props CodeCommitSourceOptions — The source properties.

Returns

  • CodePipelineSource

Returns a CodeCommit source.

If you need access to symlinks or the repository history, be sure to set codeBuildCloneOutput. Example

declare const repository: codecommit.IRepository;
pipelines.CodePipelineSource.codeCommit(repository, 'main');

static connection(repoString, branch, props)

public static connection(repoString: string, branch: string, props: ConnectionSourceOptions): CodePipelineSource

Parameters

  • repoString string — A string that encodes owner and repository separated by a slash (e.g. 'owner/repo').
  • branch string — The branch to use.
  • props ConnectionSourceOptions — The source properties, including the connection ARN.

Returns

  • CodePipelineSource

Returns a CodeStar connection source.

A CodeStar connection allows AWS CodePipeline to access external resources, such as repositories in GitHub, GitHub Enterprise or BitBucket.

To use this method, you first need to create a CodeStar connection using the AWS console. In the process, you may have to sign in to the external provider -- GitHub, for example -- to authorize AWS to read and modify your repository. Once you have done this, copy the connection ARN and use it to create the source.

Example:

pipelines.CodePipelineSource.connection('owner/repo', 'main', {
  connectionArn: 'arn:aws:codestar-connections:us-east-1:222222222222:connection/7d2469ff-514a-4e4f-9003-5ca4a43cdc41', // Created using the AWS console
});

If you need access to symlinks or the repository history, be sure to set codeBuildCloneOutput.

See also: https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html


static ecr(repository, props?)

public static ecr(repository: IRepository, props?: ECRSourceOptions): CodePipelineSource

Parameters

  • repository IRepository — The repository that will be watched for changes.
  • props ECRSourceOptions — The options, which include the image tag to be checked for changes.

Returns

  • CodePipelineSource

Returns an ECR source. Example

declare const repository: ecr.IRepository;
pipelines.CodePipelineSource.ecr(repository, {
  imageTag: 'latest',
});

static gitHub(repoString, branch, props?)

public static gitHub(repoString: string, branch: string, props?: GitHubSourceOptions): CodePipelineSource

Parameters

  • repoString string
  • branch string
  • props GitHubSourceOptions

Returns

  • CodePipelineSource

Returns a GitHub source, using OAuth tokens to authenticate with GitHub and a separate webhook to detect changes.

This is no longer the recommended method. Please consider using connection() instead.

Pass in the owner and repository in a single string, like this:

pipelines.CodePipelineSource.gitHub('owner/repo', 'main');

Authentication will be done by a secret called github-token in AWS Secrets Manager (unless specified otherwise).

If you rotate the value in the Secret, you must also change at least one property on the Pipeline, to force CloudFormation to re-read the secret.

The token should have these permissions:

  • repo - to read the repository
  • admin:repo_hook - if you plan to use webhooks (true by default)

If you need access to symlinks or the repository history, use a source of type connection instead.


static s3(bucket, objectKey, props?)

public static s3(bucket: IBucket, objectKey: string, props?: S3SourceOptions): CodePipelineSource

Parameters

  • bucket IBucket — The bucket where the source code is located.
  • objectKey string
  • props S3SourceOptions — The options, which include the key that identifies the source code file and and how the pipeline should be triggered.

Returns

  • CodePipelineSource

Returns an S3 source. Example

declare const bucket: s3.Bucket;
pipelines.CodePipelineSource.s3(bucket, 'path/to/file.zip');