#Module for creating a new S3 bucket for storing pipeline artifacts module "s3_artifacts_bucket" { source = "../../terraform-modules/s3" project_name = var.project_name kms_key_arn = module.codepipeline_kms.arn codepipeline_role_arn = module.codepipeline_iam_role.role_arn tags = { Project_Name = var.project_name Environment = var.environment Account_ID = local.account_id Region = local.region } } module "codebuild_terraform" { source = "../../terraform-modules/codebuild" project_name = var.project_name role_arn = module.codepipeline_iam_role.role_arn s3_bucket_name = module.s3_artifacts_bucket.bucket build_projects = var.build_projects build_project_source = var.build_project_source builder_compute_type = var.builder_compute_type buildspecyaml_directory = var.buildspecyaml_directory builder_image = var.builder_image builder_image_pull_credentials_type = var.builder_image_pull_credentials_type builder_type = var.builder_type kms_key_arn = module.codepipeline_kms.arn tags = { Project_Name = var.project_name Environment = var.environment Account_ID = local.account_id Region = local.region } } module "codepipeline_kms" { source = "../../terraform-modules/kms" codepipeline_role_arn = module.codepipeline_iam_role.role_arn tags = { Project_Name = var.project_name Environment = var.environment Account_ID = local.account_id Region = local.region } } module "codepipeline_iam_role" { source = "../../terraform-modules/iam-role" project_name = var.project_name codepipeline_iam_role_name = var.create_new_role == true ? "${var.project_name}-codepipeline-role" : var.codepipeline_iam_role_name source_repository_name = var.source_repo_name kms_key_arn = module.codepipeline_kms.arn s3_bucket_arn = module.s3_artifacts_bucket.arn tags = { Project_Name = var.project_name Environment = var.environment Account_ID = local.account_id Region = local.region } } module "codepipeline_terraform" { depends_on = [ module.codebuild_terraform, module.s3_artifacts_bucket ] source = "../../terraform-modules/codepipeline" project_name = var.project_name pipelinename = var.pipelinename source_repo_name = var.source_repo_name source_repo_branch = var.source_repo_branch s3_bucket_name = module.s3_artifacts_bucket.bucket codepipeline_role_arn = module.codepipeline_iam_role.role_arn stages = var.stage_input kms_key_arn = module.codepipeline_kms.arn approve_comment = var.approve_comment tags = { Project_Name = var.project_name Environment = var.environment Account_ID = local.account_id Region = local.region } }