Skip to content

Commit c1addcb

Browse files
committed
Updating pipeline trigger mechanism to even based
1 parent 0022ef5 commit c1addcb

9 files changed

Lines changed: 115 additions & 10 deletions

File tree

build/automation/var/project.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ TF_VAR_pipeline_topic_name := $(PROJECT_ID)-$(ENVIRONMENT)-pipeline-topic
5050
TF_VAR_pipeline_notification_name := $(PROJECT_ID)-$(ENVIRONMENT)-pipeline-notification
5151
TF_VAR_cicd_blue_green_deployment_pipeline_nofitication_name := $(PROJECT_ID)-$(ENVIRONMENT)-blue-green-pipeline-notification
5252
TF_VAR_cicd_shared_resources_deployment_pipeline_nofitication_name := $(PROJECT_ID)-$(ENVIRONMENT)-shared-resources-pipeline-notification
53+
TF_VAR_cicd_blue_green_deployment_pipeline_eventbridge_rule_name := $(PROJECT_ID)-$(ENVIRONMENT)-trigger-blue-green-pipeline
54+
TF_VAR_cicd_shared_resources_deployment_pipeline_eventbridge_rule_name := $(PROJECT_ID)-$(ENVIRONMENT)-trigger-shared-resources-pipeline
5355
TF_VAR_pipeline_chatbot_channel := $(PROJECT_ID)-cicd-slk-channel
5456
TF_VAR_nightly_rule_name := $(PROJECT_ID)-$(ENVIRONMENT)-performance-pipeline-nightly-rule
5557

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
resource "aws_cloudwatch_event_rule" "trigger_pipeline" {
2+
name = var.rule_name
3+
description = var.description
4+
event_pattern = <<EOF
5+
{
6+
"source": ["aws.s3"],
7+
"detail-type": ["Object Created"],
8+
"resources": ["arn:aws:s3:::${var.bucket_name}"],
9+
"detail": {
10+
"object": {
11+
"key": ["${var.object_key}"]
12+
}
13+
}
14+
}
15+
EOF
16+
}
17+
18+
resource "aws_cloudwatch_event_target" "pipeline_target" {
19+
rule = aws_cloudwatch_event_rule.trigger_pipeline.name
20+
arn = var.pipeline_arn
21+
role_arn = var.pipeline_role_arn
22+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
output "eventbridge_rule_id" {
2+
description = "The EventBridge rule Name we just created."
3+
value = aws_cloudwatch_event_rule.trigger_pipeline.id
4+
}
5+
6+
output "eventbridge_rule_arn" {
7+
description = "The EventBridge rule ARN we just created."
8+
value = aws_cloudwatch_event_rule.trigger_pipeline.arn
9+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
variable "bucket_name" {
2+
description = "Name of the S3 bucket to monitor."
3+
type = string
4+
}
5+
6+
variable "pipeline_arn" {
7+
description = "ARN of the CodePipeline to trigger."
8+
type = string
9+
}
10+
11+
variable "pipeline_role_arn" {
12+
description = "Role ARN for EventBridge to trigger the pipeline."
13+
type = string
14+
}
15+
16+
variable "rule_name" {
17+
description = "Name of the EventBridge rule."
18+
type = string
19+
}
20+
21+
variable "description" {
22+
description = "Description of the EventBridge rule."
23+
type = string
24+
}
25+
26+
variable "object_key" {
27+
description = "S3 object key to filter on."
28+
type = string
29+
default = "repository.zip"
30+
}

infrastructure/stacks/development-and-deployment-tools/cicd_blue_green_deployment_pipeline.tf

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ resource "aws_codepipeline" "cicd_blue_green_deployment_pipeline" {
2121
configuration = {
2222
S3Bucket = var.cicd_blue_green_deployment_pipeline_artefact_bucket
2323
S3ObjectKey = "repository.zip"
24-
DetectChanges = "True"
24+
PollForSourceChanges = "False"
2525
}
2626
}
2727
}
@@ -332,7 +332,6 @@ resource "aws_codepipeline" "cicd_blue_green_deployment_pipeline" {
332332
]
333333
}
334334

335-
336335
module "cicd_blue_green_deployment_pipeline_artefact_bucket" {
337336
source = "../../modules/s3"
338337
name = var.cicd_blue_green_deployment_pipeline_artefact_bucket
@@ -341,3 +340,19 @@ module "cicd_blue_green_deployment_pipeline_artefact_bucket" {
341340
versioning_enabled = "true"
342341
force_destroy = "true"
343342
}
343+
344+
resource "aws_s3_bucket_notification" "uec-dos-int-dev-eventbridge_blue_green" {
345+
bucket = module.cicd_blue_green_deployment_pipeline_artefact_bucket.s3_bucket_id
346+
eventbridge = true
347+
depends_on = [module.cicd_blue_green_deployment_pipeline_artefact_bucket]
348+
}
349+
350+
module "blue_green_eventbridge_trigger" {
351+
source = "../../modules/eventbridge_pipeline_trigger"
352+
bucket_name = module.cicd_blue_green_deployment_pipeline_artefact_bucket.s3_bucket_id
353+
pipeline_arn = aws_codepipeline.cicd_blue_green_deployment_pipeline.arn
354+
pipeline_role_arn = data.aws_iam_role.pipeline_role.arn
355+
rule_name = var.cicd_blue_green_deployment_pipeline_eventbridge_rule_name
356+
description = "Trigger Blue/Green pipeline when repository.zip is updated"
357+
depends_on = [module.cicd_blue_green_deployment_pipeline_artefact_bucket]
358+
}

infrastructure/stacks/development-and-deployment-tools/cicd_shared_resources_pipeline.tf

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ resource "aws_codepipeline" "cicd_shared_resources_deployment_pipeline" {
2020
configuration = {
2121
S3Bucket = var.cicd_shared_resoures_deployment_pipeline_artefact_bucket
2222
S3ObjectKey = "repository.zip"
23-
DetectChanges = "True"
23+
PollForSourceChanges = "False"
2424
}
2525
}
2626
}
@@ -212,3 +212,19 @@ module "cicd_shared_resoures_deployment_pipeline_artefact_bucket" {
212212
versioning_enabled = "true"
213213
force_destroy = "true"
214214
}
215+
216+
resource "aws_s3_bucket_notification" "uec-dos-int-dev-eventbridge_shared_resources" {
217+
bucket = module.cicd_shared_resoures_deployment_pipeline_artefact_bucket.s3_bucket_id
218+
eventbridge = true
219+
depends_on = [module.cicd_shared_resoures_deployment_pipeline_artefact_bucket]
220+
}
221+
222+
module "shared_resources_eventbridge_trigger" {
223+
source = "../../modules/eventbridge_pipeline_trigger"
224+
bucket_name = module.cicd_shared_resoures_deployment_pipeline_artefact_bucket.s3_bucket_id
225+
pipeline_arn = aws_codepipeline.cicd_shared_resources_deployment_pipeline.arn
226+
pipeline_role_arn = data.aws_iam_role.pipeline_role.arn
227+
rule_name = var.cicd_shared_resources_deployment_pipeline_eventbridge_rule_name
228+
description = "Trigger Shared Resources pipeline when repository.zip is updated"
229+
depends_on = [module.cicd_shared_resoures_deployment_pipeline_artefact_bucket]
230+
}

infrastructure/stacks/development-and-deployment-tools/variables.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ variable "cicd_shared_resources_deployment_pipeline_nofitication_name" {
4141
description = "Shared resources deployment pipeline notification name"
4242
}
4343

44+
variable "cicd_blue_green_deployment_pipeline_eventbridge_rule_name" {
45+
type = string
46+
description = "Shared resources deployment pipeline notification name"
47+
}
48+
49+
variable "cicd_shared_resources_deployment_pipeline_eventbridge_rule_name" {
50+
type = string
51+
description = "Shared resources deployment pipeline notification name"
52+
}
53+
54+
4455
variable "pipeline_chatbot_channel" {
4556
type = string
4657
description = ""

infrastructure/stacks/shared-resources/dynamodb.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
resource "aws_dynamodb_table" "message-history-table" {
2-
name = var.change_events_table_name
3-
billing_mode = "PAY_PER_REQUEST"
4-
hash_key = "Id"
5-
range_key = "ODSCode"
2+
name = var.change_events_table_name
3+
billing_mode = "PAY_PER_REQUEST"
4+
hash_key = "Id"
5+
range_key = "ODSCode"
66
deletion_protection_enabled = var.ddb_delete_protection
77

88
server_side_encryption {

infrastructure/stacks/shared-resources/waf.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@ resource "aws_wafv2_web_acl" "di_endpoint_waf" {
7676
sensitivity_level = "HIGH"
7777
text_transformation {
7878
priority = 0
79-
type = "NONE"
79+
type = "NONE"
8080
}
8181
}
8282
}
8383
visibility_config {
84-
sampled_requests_enabled = true
85-
metric_name = var.waf_custom_sqli_rule_name
84+
sampled_requests_enabled = true
85+
metric_name = var.waf_custom_sqli_rule_name
8686
cloudwatch_metrics_enabled = true
8787
}
8888
}

0 commit comments

Comments
 (0)