Skip to content

Commit 36d9cc3

Browse files
Add configuration for staging repo (#2141) (#2142)
* add staging update bootstrap * update stack names * add comments * update naming * update naming convetion * update naming convetion
1 parent d26fd17 commit 36d9cc3

File tree

6 files changed

+92
-31
lines changed

6 files changed

+92
-31
lines changed

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: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ internal PipelineStack(
3434
string id,
3535
Configuration configuration,
3636
FrameworkConfiguration frameworkConfiguration,
37+
string gitHubOwner,
38+
string gitHubRepository,
39+
string gitHubBranch,
40+
string pipelineName,
3741
IStackProps props = null) : base(scope, id, props)
3842
{
3943
var sourceArtifact = new Artifact_();
@@ -47,11 +51,11 @@ internal PipelineStack(
4751

4852
var sourceAction = new GitHubSourceAction(new GitHubSourceActionProps
4953
{
50-
ActionName = configuration.GitHubRepository,
54+
ActionName = gitHubRepository,
5155
Output = sourceArtifact,
52-
Owner = configuration.GitHubOwner,
53-
Repo = configuration.GitHubRepository,
54-
Branch = configuration.GitHubBranch,
56+
Owner = gitHubOwner,
57+
Repo = gitHubRepository,
58+
Branch = gitHubBranch,
5559
Trigger = GitHubTrigger.WEBHOOK,
5660
OauthToken = SecretValue.SecretsManager(configuration.GitHubTokenSecretName, new SecretsManagerSecretOptions
5761
{
@@ -62,7 +66,7 @@ internal PipelineStack(
6266
var pipeline = new Pipeline(this, "CodePipeline", new PipelineProps
6367
{
6468
PipelineType = PipelineType.V2,
65-
PipelineName = $"{Configuration.ProjectName}-{frameworkConfiguration.Framework}",
69+
PipelineName = pipelineName,
6670
RestartExecutionOnUpdate = true,
6771
Stages =
6872
[
@@ -91,9 +95,9 @@ internal PipelineStack(
9195
},
9296
Source = Source.GitHub(new GitHubSourceProps
9397
{
94-
Owner = configuration.GitHubOwner,
95-
Repo = configuration.GitHubRepository,
96-
BranchOrRef = configuration.GitHubBranch
98+
Owner = gitHubOwner,
99+
Repo = gitHubRepository,
100+
BranchOrRef = gitHubBranch
97101
}),
98102
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
99103
{
@@ -130,9 +134,9 @@ internal PipelineStack(
130134
},
131135
Source = Source.GitHub(new GitHubSourceProps
132136
{
133-
Owner = configuration.GitHubOwner,
134-
Repo = configuration.GitHubRepository,
135-
BranchOrRef = configuration.GitHubBranch
137+
Owner = gitHubOwner,
138+
Repo = gitHubRepository,
139+
BranchOrRef = gitHubBranch
136140
}),
137141
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
138142
{
@@ -174,9 +178,9 @@ internal PipelineStack(
174178
},
175179
Source = Source.GitHub(new GitHubSourceProps
176180
{
177-
Owner = configuration.GitHubOwner,
178-
Repo = configuration.GitHubRepository,
179-
BranchOrRef = configuration.GitHubBranch
181+
Owner = gitHubOwner,
182+
Repo = gitHubRepository,
183+
BranchOrRef = gitHubBranch
180184
}),
181185
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
182186
{
@@ -224,9 +228,9 @@ internal PipelineStack(
224228
},
225229
Source = Source.GitHub(new GitHubSourceProps
226230
{
227-
Owner = configuration.GitHubOwner,
228-
Repo = configuration.GitHubRepository,
229-
BranchOrRef = configuration.GitHubBranch
231+
Owner = gitHubOwner,
232+
Repo = gitHubRepository,
233+
BranchOrRef = gitHubBranch
230234
}),
231235
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
232236
{
@@ -338,9 +342,9 @@ internal PipelineStack(
338342
},
339343
Source = Source.GitHub(new GitHubSourceProps
340344
{
341-
Owner = configuration.GitHubOwner,
342-
Repo = configuration.GitHubRepository,
343-
BranchOrRef = configuration.GitHubBranch
345+
Owner = gitHubOwner,
346+
Repo = gitHubRepository,
347+
BranchOrRef = gitHubBranch
344348
}),
345349
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
346350
{
@@ -387,9 +391,9 @@ internal PipelineStack(
387391
},
388392
Source = Source.GitHub(new GitHubSourceProps
389393
{
390-
Owner = configuration.GitHubOwner,
391-
Repo = configuration.GitHubRepository,
392-
BranchOrRef = configuration.GitHubBranch
394+
Owner = gitHubOwner,
395+
Repo = gitHubRepository,
396+
BranchOrRef = gitHubBranch
393397
}),
394398
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
395399
{
@@ -447,9 +451,9 @@ internal PipelineStack(
447451
},
448452
Source = Source.GitHub(new GitHubSourceProps
449453
{
450-
Owner = configuration.GitHubOwner,
451-
Repo = configuration.GitHubRepository,
452-
BranchOrRef = configuration.GitHubBranch
454+
Owner = gitHubOwner,
455+
Repo = gitHubRepository,
456+
BranchOrRef = gitHubBranch
453457
}),
454458
EnvironmentVariables = new Dictionary<string, IBuildEnvironmentVariable>
455459
{

LambdaRuntimeDockerfiles/Infrastructure/src/Infrastructure/PipelinesStage.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,42 @@ 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
{
41+
42+
var pipelineName = $"{pipelinePrefix}-{configuration.Frameworks[i].Framework}";
43+
1944
new PipelineStack(this,
20-
configuration.Frameworks[i].Framework,
45+
$"{pipelinePrefix}-{configuration.Frameworks[i].Framework}",
2146
configuration,
2247
configuration.Frameworks[i],
48+
gitHubOwner,
49+
gitHubRepository,
50+
gitHubBranch,
51+
pipelineName,
2352
new StackProps
2453
{
2554
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)