Skip to content
GitHubXDiscord

Pipeline

The Pipeline resource lets you create and manage AWS CodePipeline Pipelines for automating the building, testing, and deployment of applications.

This example demonstrates how to create a basic pipeline with required properties and a few common optional configurations.

import AWS from "alchemy/aws/control";
const simplePipeline = await AWS.CodePipeline.Pipeline("simplePipeline", {
RoleArn: "arn:aws:iam::123456789012:role/AWSCodePipelineServiceRole",
Stages: [
{
Name: "Source",
Actions: [
{
Name: "SourceAction",
ActionTypeId: {
Category: "Source",
Owner: "ThirdParty",
Provider: "GitHub",
Version: "1"
},
OutputArtifacts: [
{
Name: "SourceOutput"
}
],
Configuration: {
Owner: "my-github-user",
Repo: "my-repo",
Branch: "main",
OAuthToken: AWS.secret(process.env.GITHUB_TOKEN!)
}
}
]
},
{
Name: "Build",
Actions: [
{
Name: "BuildAction",
ActionTypeId: {
Category: "Build",
Owner: "AWS",
Provider: "CodeBuild",
Version: "1"
},
InputArtifacts: [
{
Name: "SourceOutput"
}
],
OutputArtifacts: [
{
Name: "BuildOutput"
}
],
Configuration: {
ProjectName: "my-codebuild-project"
}
}
]
}
]
});

This example illustrates how to configure a pipeline with triggers and additional artifact stores.

const advancedPipeline = await AWS.CodePipeline.Pipeline("advancedPipeline", {
RoleArn: "arn:aws:iam::123456789012:role/AWSCodePipelineServiceRole",
Stages: [
{
Name: "Source",
Actions: [
{
Name: "SourceAction",
ActionTypeId: {
Category: "Source",
Owner: "AWS",
Provider: "S3",
Version: "1"
},
OutputArtifacts: [
{
Name: "SourceOutput"
}
],
Configuration: {
S3Bucket: "my-source-bucket",
S3ObjectKey: "source.zip"
}
}
]
},
{
Name: "Deploy",
Actions: [
{
Name: "DeployAction",
ActionTypeId: {
Category: "Deploy",
Owner: "AWS",
Provider: "CloudFormation",
Version: "1"
},
InputArtifacts: [
{
Name: "BuildOutput"
}
],
Configuration: {
ActionMode: "CREATE_UPDATE",
StackName: "my-app-stack",
TemplatePath: "BuildOutput::template.yaml",
RoleArn: "arn:aws:iam::123456789012:role/AWSCloudFormationRole"
}
}
]
}
],
ArtifactStores: [
{
Location: "my-artifact-store-bucket",
Type: "S3"
}
],
Triggers: [
{
TriggerType: "CloudWatchEvents",
Trigger: {
Source: "aws.codepipeline",
DetailType: "AWS API Call via CloudTrail",
Detail: {
eventSource: "codepipeline.amazonaws.com"
}
}
}
]
});

This example demonstrates how to apply tags to a pipeline for better resource management.

const taggedPipeline = await AWS.CodePipeline.Pipeline("taggedPipeline", {
RoleArn: "arn:aws:iam::123456789012:role/AWSCodePipelineServiceRole",
Stages: [
{
Name: "Source",
Actions: [
{
Name: "SourceAction",
ActionTypeId: {
Category: "Source",
Owner: "AWS",
Provider: "GitHub",
Version: "1"
},
OutputArtifacts: [
{
Name: "SourceOutput"
}
],
Configuration: {
Owner: "my-github-user",
Repo: "my-repo",
Branch: "main",
OAuthToken: AWS.secret(process.env.GITHUB_TOKEN!)
}
}
]
}
],
Tags: [
{
Key: "Environment",
Value: "Production"
},
{
Key: "Project",
Value: "MyApp"
}
]
});