Skip to content

Commit 5c0b531

Browse files
committed
add staging
update bootstrap
1 parent 57f93d2 commit 5c0b531

6 files changed

Lines changed: 87 additions & 31 deletions

File tree

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/Configuration.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,14 @@ internal class Configuration
2929
public string GitHubOwner { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_OWNER");
3030
public string GitHubRepository { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_NAME");
3131
public string GitHubBranch { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_BRANCH");
32+
33+
public string GitHubOwnerStaging { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_OWNER_STAGING");
34+
public string GitHubRepositoryStaging { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_NAME_STAGING");
35+
public string GitHubBranchStaging { get; } = Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_BRANCH_STAGING");
36+
3237
public Ecrs Ecrs { get; } = new Ecrs();
3338
public const string ProjectRoot = "LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure";
34-
public static readonly string ProjectName = "aws-lambda-container-images";
39+
public string ProjectName { get; } = "aws-lambda-container-images";
3540

3641
public readonly FrameworkConfiguration[] Frameworks = new[]
3742
{

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/PipelineStack.cs

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ internal PipelineStack(
3434
string id,
3535
Configuration configuration,
3636
FrameworkConfiguration frameworkConfiguration,
37+
string gitHubOwner,
38+
string gitHubRepository,
39+
string gitHubBranch,
3740
IStackProps props = null) : base(scope, id, props)
3841
{
3942
var sourceArtifact = new Artifact_();
@@ -47,11 +50,11 @@ internal PipelineStack(
4750

4851
var sourceAction = new GitHubSourceAction(new GitHubSourceActionProps
4952
{
50-
ActionName = configuration.GitHubRepository,
53+
ActionName = gitHubRepository,
5154
Output = sourceArtifact,
52-
Owner = configuration.GitHubOwner,
53-
Repo = configuration.GitHubRepository,
54-
Branch = configuration.GitHubBranch,
55+
Owner = gitHubOwner,
56+
Repo = gitHubRepository,
57+
Branch = gitHubBranch,
5558
Trigger = GitHubTrigger.WEBHOOK,
5659
OauthToken = SecretValue.SecretsManager(configuration.GitHubTokenSecretName, new SecretsManagerSecretOptions
5760
{
@@ -62,7 +65,7 @@ internal PipelineStack(
6265
var pipeline = new Pipeline(this, "CodePipeline", new PipelineProps
6366
{
6467
PipelineType = PipelineType.V2,
65-
PipelineName = $"{Configuration.ProjectName}-{frameworkConfiguration.Framework}",
68+
PipelineName = id,
6669
RestartExecutionOnUpdate = true,
6770
Stages =
6871
[
@@ -91,9 +94,9 @@ internal PipelineStack(
9194
},
9295
Source = Source.GitHub(new GitHubSourceProps
9396
{
94-
Owner = configuration.GitHubOwner,
95-
Repo = configuration.GitHubRepository,
96-
BranchOrRef = configuration.GitHubBranch
97+
Owner = gitHubOwner,
98+
Repo = gitHubRepository,
99+
BranchOrRef = gitHubBranch
97100
}),
98101
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
99102
{
@@ -130,9 +133,9 @@ internal PipelineStack(
130133
},
131134
Source = Source.GitHub(new GitHubSourceProps
132135
{
133-
Owner = configuration.GitHubOwner,
134-
Repo = configuration.GitHubRepository,
135-
BranchOrRef = configuration.GitHubBranch
136+
Owner = gitHubOwner,
137+
Repo = gitHubRepository,
138+
BranchOrRef = gitHubBranch
136139
}),
137140
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
138141
{
@@ -174,9 +177,9 @@ internal PipelineStack(
174177
},
175178
Source = Source.GitHub(new GitHubSourceProps
176179
{
177-
Owner = configuration.GitHubOwner,
178-
Repo = configuration.GitHubRepository,
179-
BranchOrRef = configuration.GitHubBranch
180+
Owner = gitHubOwner,
181+
Repo = gitHubRepository,
182+
BranchOrRef = gitHubBranch
180183
}),
181184
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
182185
{
@@ -224,9 +227,9 @@ internal PipelineStack(
224227
},
225228
Source = Source.GitHub(new GitHubSourceProps
226229
{
227-
Owner = configuration.GitHubOwner,
228-
Repo = configuration.GitHubRepository,
229-
BranchOrRef = configuration.GitHubBranch
230+
Owner = gitHubOwner,
231+
Repo = gitHubRepository,
232+
BranchOrRef = gitHubBranch
230233
}),
231234
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
232235
{
@@ -338,9 +341,9 @@ internal PipelineStack(
338341
},
339342
Source = Source.GitHub(new GitHubSourceProps
340343
{
341-
Owner = configuration.GitHubOwner,
342-
Repo = configuration.GitHubRepository,
343-
BranchOrRef = configuration.GitHubBranch
344+
Owner = gitHubOwner,
345+
Repo = gitHubRepository,
346+
BranchOrRef = gitHubBranch
344347
}),
345348
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
346349
{
@@ -387,9 +390,9 @@ internal PipelineStack(
387390
},
388391
Source = Source.GitHub(new GitHubSourceProps
389392
{
390-
Owner = configuration.GitHubOwner,
391-
Repo = configuration.GitHubRepository,
392-
BranchOrRef = configuration.GitHubBranch
393+
Owner = gitHubOwner,
394+
Repo = gitHubRepository,
395+
BranchOrRef = gitHubBranch
393396
}),
394397
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
395398
{
@@ -447,9 +450,9 @@ internal PipelineStack(
447450
},
448451
Source = Source.GitHub(new GitHubSourceProps
449452
{
450-
Owner = configuration.GitHubOwner,
451-
Repo = configuration.GitHubRepository,
452-
BranchOrRef = configuration.GitHubBranch
453+
Owner = gitHubOwner,
454+
Repo = gitHubRepository,
455+
BranchOrRef = gitHubBranch
453456
}),
454457
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
455458
{

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/PipelinesStage.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,38 @@ public PipelinesStage(
1313
string id,
1414
Configuration configuration,
1515
IStageProps props = null) : base(scope, id, props)
16+
{
17+
// Create pipelines for main repository
18+
CreatePipelinesForRepository(configuration,
19+
configuration.ProjectName,
20+
configuration.GitHubOwner,
21+
configuration.GitHubRepository,
22+
configuration.GitHubBranch);
23+
24+
// Create pipelines for staging repository
25+
CreatePipelinesForRepository(configuration,
26+
$"{configuration.ProjectName}-staging",
27+
configuration.GitHubOwnerStaging,
28+
configuration.GitHubRepositoryStaging,
29+
configuration.GitHubBranchStaging);
30+
}
31+
32+
private void CreatePipelinesForRepository(
33+
Configuration configuration,
34+
string pipelinePrefix,
35+
string gitHubOwner,
36+
string gitHubRepository,
37+
string gitHubBranch)
1638
{
1739
for (var i = 0; i < configuration.Frameworks.Length; i++)
1840
{
1941
new PipelineStack(this,
20-
configuration.Frameworks[i].Framework,
42+
$"{pipelinePrefix}-{configuration.Frameworks[i].Framework}",
2143
configuration,
2244
configuration.Frameworks[i],
45+
gitHubOwner,
46+
gitHubRepository,
47+
gitHubBranch,
2348
new StackProps
2449
{
2550
TerminationProtection = true,

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void Main(string[] args)
2626

2727
new SelfMutatingPipelineStack(
2828
app,
29-
Configuration.ProjectName,
29+
configuration.ProjectName,
3030
configuration,
3131
new StackProps
3232
{

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/SelfMutatingPipelineStack.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,19 @@ internal SelfMutatingPipelineStack(
6565
{ "AWS_LAMBDA_DOTNET_FRAMEWORK_CHANNEL",
6666
new BuildEnvironmentVariable { Type = BuildEnvironmentVariableType.PLAINTEXT, Value =
6767
System.Environment.GetEnvironmentVariable("AWS_LAMBDA_DOTNET_FRAMEWORK_CHANNEL") ?? string.Empty } },
68+
{ "AWS_LAMBDA_GITHUB_REPO_OWNER_STAGING",
69+
new BuildEnvironmentVariable { Type = BuildEnvironmentVariableType.PLAINTEXT, Value =
70+
System.Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_OWNER_STAGING") ?? string.Empty } },
71+
{ "AWS_LAMBDA_GITHUB_REPO_NAME_STAGING",
72+
new BuildEnvironmentVariable { Type = BuildEnvironmentVariableType.PLAINTEXT, Value =
73+
System.Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_NAME_STAGING") ?? string.Empty } },
74+
{ "AWS_LAMBDA_GITHUB_REPO_BRANCH_STAGING",
75+
new BuildEnvironmentVariable { Type = BuildEnvironmentVariableType.PLAINTEXT, Value =
76+
System.Environment.GetEnvironmentVariable("AWS_LAMBDA_GITHUB_REPO_BRANCH_STAGING") ?? string.Empty } },
6877
};
6978

7079
// Self mutation
80+
7181
var pipeline = new CodePipeline(this, "SelfMutatingPipeline", new CodePipelineProps
7282
{
7383
PipelineName = id,
@@ -114,6 +124,6 @@ internal SelfMutatingPipelineStack(
114124
});
115125

116126
// Add a stage in the pipeline to deploy the Lambda container pipelines
117-
pipeline.AddStage(new PipelinesStage(this, Configuration.ProjectName, configuration));
127+
pipeline.AddStage(new PipelinesStage(this, configuration.ProjectName, configuration));
118128
}
119129
}

bootstrap.ps1

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ param (
2323
[Parameter(Mandatory = $true, HelpMessage = "GitHub repository branch name.")]
2424
[string] $GitHubRepoBranch,
2525

26+
[Parameter(Mandatory = $true, HelpMessage = "GitHub staging repository owner name.")]
27+
[string] $GitHubRepoOwnerStaging,
28+
29+
[Parameter(Mandatory = $true, HelpMessage = "GitHub staging repository name.")]
30+
[string] $GitHubRepoNameStaging,
31+
32+
[Parameter(Mandatory = $true, HelpMessage = "GitHub staging repository branch name.")]
33+
[string] $GitHubRepoBranchStaging,
34+
2635
[Parameter(Mandatory = $false, HelpMessage = "ECR URI to store Stage images.")]
2736
[string] $StageEcr,
2837

@@ -44,9 +53,13 @@ $env:AWS_LAMBDA_GITHUB_REPO_OWNER = $GitHubRepoOwner
4453
$env:AWS_LAMBDA_GITHUB_REPO_NAME = $GitHubRepoName
4554
$env:AWS_LAMBDA_GITHUB_REPO_BRANCH = $GitHubRepoBranch
4655

56+
$env:AWS_LAMBDA_GITHUB_REPO_OWNER_STAGING = $GitHubRepoOwnerStaging
57+
$env:AWS_LAMBDA_GITHUB_REPO_NAME_STAGING = $GitHubRepoNameStaging
58+
$env:AWS_LAMBDA_GITHUB_REPO_BRANCH_STAGING = $GitHubRepoBranchStaging
59+
4760
$env:AWS_LAMBDA_STAGE_ECR = $StageEcr
4861
$env:AWS_LAMBDA_BETA_ECRS = $BetaEcrs
4962
$env:AWS_LAMBDA_PROD_ECRS = $ProdEcrs
5063

5164
npx cdk bootstrap --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://$PipelineAccountId/$Region
52-
npx cdk deploy --require-approval never --all
65+
npx cdk deploy --require-approval never --all

0 commit comments

Comments
 (0)