{"id":29943308,"url":"https://github.com/sourcefuse/terraform-aws-arc-cicd","last_synced_at":"2026-02-07T22:34:02.289Z","repository":{"id":243894116,"uuid":"791221775","full_name":"sourcefuse/terraform-aws-arc-cicd","owner":"sourcefuse","description":"Terraform module creating CICD pipelines","archived":false,"fork":false,"pushed_at":"2025-12-15T07:56:02.000Z","size":189,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-18T05:42:12.415Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sourcefuse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-24T10:12:04.000Z","updated_at":"2024-06-11T16:25:29.000Z","dependencies_parsed_at":"2024-06-11T21:44:07.339Z","dependency_job_id":"f4a44113-a477-48a6-a20b-b8ee08ed3ba4","html_url":"https://github.com/sourcefuse/terraform-aws-arc-cicd","commit_stats":null,"previous_names":["sourcefuse/terraform-aws-arc-cicd"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sourcefuse/terraform-aws-arc-cicd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-cicd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-cicd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-cicd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-cicd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sourcefuse","download_url":"https://codeload.github.com/sourcefuse/terraform-aws-arc-cicd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-cicd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29211127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T22:22:11.602Z","status":"ssl_error","status_checked_at":"2026-02-07T22:22:10.684Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-03T02:14:57.942Z","updated_at":"2026-02-07T22:34:02.283Z","avatar_url":"https://github.com/sourcefuse.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [terraform-aws-arc-cicd](https://github.com/sourcefuse/terraform-aws-arc-cicd)\n\n\u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-cicd/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release/sourcefuse/terraform-aws-arc-cicd.svg?style=for-the-badge\" alt=\"Latest Release\"/\u003e\u003c/a\u003e \u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-cicd/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/sourcefuse/terraform-aws-arc-cicd.svg?style=for-the-badge\" alt=\"Last Updated\"/\u003e\u003c/a\u003e ![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge\u0026logo=terraform\u0026logoColor=white) ![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white)\n\n\n[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=sourcefuse_terraform-aws-arc-cicd\u0026token=b697edbb45222daad2f3184fdb06b908aec00460)](https://sonarcloud.io/summary/new_code?id=sourcefuse_terraform-aws-arc-cicd)\n\n[![Known Vulnerabilities](https://github.com/sourcefuse/terraform-aws-arc-cicd/actions/workflows/snyk.yaml/badge.svg)](https://github.com/sourcefuse/terraform-aws-arc-cicd/actions/workflows/snyk.yaml)\n## Overview\n\nFor more information about this repository and its usage, please see [Terraform AWS ARC GitHub CICD Module Usage Guide](https://github.com/sourcefuse/terraform-aws-arc-cicd/blob/main/docs/module-usage-guide/README.md).\n\n## Introduction\n\nSourceFuse's AWS Reference Architecture (ARC) Terraform module automates the creation of AWS CodePipeline and CodeBuild projects, facilitating the build and deployment of both application code and Terraform modules. By defining reusable CodeBuild projects, it ensures consistent and efficient build processes that can be shared across multiple CodePipelines. This approach promotes standardization and reduces redundancy in the CI/CD pipeline configuration.\n\n### Prerequisites\nBefore using this module, ensure you have the following:\n\n- AWS credentials configured.\n- Terraform installed.\n- A working knowledge of Terraform.\n\n## Getting Started\n\n1. **Define the Module**\n\nInitially, it's essential to define a Terraform module, which is organized as a distinct directory encompassing Terraform configuration files. Within this module directory, input variables and output values must be defined in the variables.tf and outputs.tf files, respectively. The following illustrates an example directory structure:\n\n\n\n```plaintext\nbilling/\n|-- main.tf\n|-- variables.tf\n|-- outputs.tf\n```\n\n\n2. **Define Input Variables**\n\nInside the `variables.tf` or in `*.tfvars` file, you should define values for the variables that the module requires.\n\n3. **Use the Module in Your Main Configuration**\nIn your main Terraform configuration file (e.g., main.tf), you can use the module. Specify the source of the module, and version, For Example\n\n```hcl\nmodule \"pipelines\" {\n  source = \"sourcefuse/arc-cicd/aws\"\n\n  artifacts_bucket    = local.artifacts_bucket\n  codestar_connection = local.codestar_connection\n\n  role_data          = local.role_data\n  codebuild_projects = local.codebuild_projects\n  codepipelines      = local.codepipeline_data\n  chatbot_data       = local.chatbot_data\n\n  tags = module.tags.tags\n}\n```\n\n4. **Output Values**\n\nInside the `outputs.tf` file of the module, you can define output values that can be referenced in the main configuration. For example:\n\n```hcl\noutput \"chatbot_sns_arns\" {\n  description = \"SNS topics created by AWS Chatbot\"\n  value       = module.example.chatbot_sns_arns\n}\n\n\n```\n\n5. **.tfvars**\n\nInside the `.tfvars` file of the module, you can provide desired values that can be referenced in the main configuration. For example:\n\nEdit the [locals.tf](./examples/application/locals.tf) file and provide desired values.  \n\n`artifacts_bucket` -  S3 Bucket name where artifacts are stored\n\n`codestar_connection` - Codestar connection for authenticating to Github\n\n`role_data` - Details about Roles to be created for Codepipeline and Codebuild projects\n\n`codebuild_projects` -  List of Codebuild projects to be created\n\n`codepipelines` - Codepipelines to be created\n\n`chatbot_data` - local.chatbot_data\n\n\n```hcl\nlocals {\n\n  environment_role = {\n    dev = \"arn:aws:iam::xxxx:role/example-dev-cicd-role\"\n  }\n\n  branch_map = {\n    dev = {\n      terraform = \"dev\"\n    }\n    poc = {\n      terraform = \"stg\"\n    }\n  }\n\n  prefix              = \"${var.namespace}-${var.environment}\"\n  codestar_connection = \"Github-Connection\"\n  artifacts_bucket    = \"${local.prefix}-pipeline-artifacts\"\n\n  policies = [{\n    policy_document = data.aws_iam_policy_document.pipeline.json\n    policy_name     = \"pipeline-policy-to-reject\"\n  }]\n\n  chatbot_data = {\n    name                     = \"${var.namespace}-slack\"\n    slack_channel_id         = \"C0xxxxxxx5\"\n    slack_workspace_id       = \"T0xxxxxxRT\"\n    managed_policy_arns      = [\"arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess\"]\n    guardrail_policies       = [\"arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess\"]\n    role_polices             = local.policies\n    enable_slack_integration = true\n  }\n\n  notification_event_and_type = {\n    event_type_ids = [\n      \"codepipeline-pipeline-pipeline-execution-failed\",\n      \"codepipeline-pipeline-pipeline-execution-canceled\",\n      \"codepipeline-pipeline-pipeline-execution-started\",\n      \"codepipeline-pipeline-pipeline-execution-resumed\",\n      \"codepipeline-pipeline-pipeline-execution-succeeded\",\n      \"codepipeline-pipeline-pipeline-execution-superseded\",\n      \"codepipeline-pipeline-manual-approval-failed\",\n      \"codepipeline-pipeline-manual-approval-needed\"\n    ]\n    targets = [{\n      address = \"arn:aws:chatbot::${data.aws_caller_identity.current.account_id}:chat-configuration/slack-channel/${var.namespace}-slack\" // it should match chatbot_data.name\n      type    = \"AWSChatbotSlack\"                                                                                                         // Type can be \"SNS\" , AWSChatbotSlack etc\n    }]\n  }\n\n  // IAM roles has to be created before creating Codebuild project and Codepipeline\n  role_data = {\n    \"${local.prefix}-codepipeline-role\" = {\n      pipeline_service                    = \"codepipeline\"\n      assume_role_arns                    = []\n      github_secret_arn                   = null\n      terraform_state_s3_bucket           = null\n      dynamodb_lock_table                 = null\n      additional_iam_policy_doc_json_list = []\n    },\n    \"${local.prefix}-codebuild-terraform\" = {\n      pipeline_service                    = \"codebuild\"\n      assume_role_arns                    = [local.environment_role[var.environment], \"arn:aws:iam::1111xxxx1111:role/example-management-mrr-role\"]\n      github_secret_arn                   = null\n      terraform_state_s3_bucket           = \"example-shared-services-terraform-state\"\n      dynamodb_lock_table                 = \"example-shared-services-terraform-state-lock\"\n      additional_iam_policy_doc_json_list = []\n    }\n  }\n\n  // Codebuild projects have to be created before creating Codepipelines\n  codebuild_projects = {\n    \"${local.prefix}-terraform-plan\" = {\n      description       = \"Codebuild project for Terraform Plan\"\n      build_type        = \"Terraform\"\n      terraform_version = \"terraform-1.8.3-1.x86_64\"\n      buildspec_file    = null\n      role_data = {\n        name = \"${local.prefix}-codebuild-terraform\"\n      }\n      artifacts_bucket    = local.artifacts_bucket\n      buildspec_file_name = \"buildspec-tf-apply\"\n    },\n    \"${local.prefix}-terraform-apply\" = {\n      description       = \"Codebuild project for Terraform Apply\"\n      build_type        = \"Terraform\"\n      terraform_version = \"terraform-1.8.3-1.x86_64\"\n      buildspec_file    = null\n      role_data = {\n        name = \"${local.prefix}-codebuild-terraform\"\n      }\n      artifacts_bucket    = local.artifacts_bucket\n      buildspec_file_name = \"buildspec-tf-apply\"\n    }\n  }\n\n\n  codepipeline_data = {\n    \"${local.prefix}-terrafomr-module\" = {\n      codestar_connection       = local.codestar_connection\n      artifacts_bucket          = local.artifacts_bucket\n      artifact_store_s3_kms_arn = null\n      auto_trigger              = false\n\n      source_repositories = [\n        {\n          name              = \"TF-Source\"\n          output_artifacts  = [\"tf_source_output\"]\n          github_repository = \"githuborg/tf-mono-infra\"\n          github_branch     = local.branch_map[var.environment].terraform\n          auto_trigger      = false\n        }\n      ]\n\n\n      pipeline_stages = [\n        {\n          stage_name       = \"Terraform-Plan\"\n          name             = \"Terraform-Plan\"\n          input_artifacts  = [\"tf_source_output\"]\n          output_artifacts = [\"tf_plan_output\"]\n          version          = \"1\"\n          project_name     = \"${local.prefix}-terraform-plan\" # This has to match the Codebuild project name\n          environment_variables = [\n            {\n              name  = \"ENVIRONMENT\",\n              value = var.environment\n            },\n            {\n              name  = \"TF_VAR_FILE\",\n              value = \"tfvars/${var.environment}.tfvars\"\n            },\n            {\n              name  = \"WORKING_DIR\",\n              value = \"terraform/example-module\"\n            },\n            {\n              name  = \"BACKEND_CONFIG_FILE\",\n              value = \"backend/config.shared-services.hcl\"\n            },\n            {\n              name  = \"WORKSPACE\",\n              value = var.environment\n            }\n          ]\n        },\n        {\n          stage_name = \"Approval\"\n          name       = \"Approval\"\n          category   = \"Approval\"\n          provider   = \"Manual\"\n          version    = \"1\"\n        },\n        {\n          stage_name       = \"Terraform-Apply\"\n          name             = \"Terraform-Apply\"\n          input_artifacts  = [\"tf_plan_output\"]\n          output_artifacts = [\"tf_apply_output\"]\n          version          = \"1\"\n          project_name     = \"${local.prefix}-terraform-apply\" # This has to match the Codebuild project name\n          environment_variables = [\n            {\n              name  = \"ENVIRONMENT\",\n              value = var.environment\n            },\n            {\n              name  = \"TF_VAR_FILE\",\n              value = \"tfvars/${var.environment}.tfvars\"\n            },\n            {\n              name  = \"WORKING_DIR\",\n              value = \"terraform/example-module\"\n            },\n            {\n              name  = \"BACKEND_CONFIG_FILE\",\n              value = \"backend/config.shared-services.hcl\"\n            },\n            {\n              name  = \"WORKSPACE\",\n              value = var.environment\n            }\n          ]\n        }\n      ]\n      role_data = {\n        name = \"${local.prefix}-codepipeline-role\"\n      }\n      notification_data = {\n        \"${local.prefix}--api-notification\" = local.notification_event_and_type // \"${local.prefix}--api-notification\" name has to be unique for each pipeline\n      }\n    }\n  }\n\n}\n\n```\n\n## First Time Usage\n***uncomment the backend block in [main.tf](./example/main.tf)***\n```shell\nterraform init -backend-config=config.dev.hcl\n```\n***If testing locally, `terraform init` should be fine***\n\nCreate a `dev` workspace\n```shell\nterraform workspace new dev\n```\n\nPlan Terraform\n```shell\nterraform plan -var-file dev.tfvars\n```\n\nApply Terraform\n```shell\nterraform apply -var-file dev.tfvars\n```\n\n## Production Setup\n```shell\nterraform init -backend-config=config.prod.hcl\n```\n\nCreate a `prod` workspace\n```shell\nterraform workspace new prod\n```\n\nPlan Terraform\n```shell\nterraform plan -var-file prod.tfvars\n```\n\nApply Terraform\n```shell\nterraform apply -var-file prod.tfvars  \n```\n\n## Cleanup  \nDestroy Terraform\n```shell\nterraform destroy -var-file dev.tfvars\n```\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.5.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.53.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_chatbot\"\u003e\u003c/a\u003e [chatbot](#module\\_chatbot) | ./modules/chatbot | n/a |\n| \u003ca name=\"module_codebuild\"\u003e\u003c/a\u003e [codebuild](#module\\_codebuild) | ./modules/codebuild | n/a |\n| \u003ca name=\"module_codepipeline\"\u003e\u003c/a\u003e [codepipeline](#module\\_codepipeline) | ./modules/codepipeline | n/a |\n| \u003ca name=\"module_role\"\u003e\u003c/a\u003e [role](#module\\_role) | ./modules/iam-role | n/a |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_s3_bucket.artifact](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/s3_bucket) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_artifacts_bucket\"\u003e\u003c/a\u003e [artifacts\\_bucket](#input\\_artifacts\\_bucket) | s3 bucket used for codepipeline artifacts | `string` | n/a | yes |\n| \u003ca name=\"input_chatbot_data\"\u003e\u003c/a\u003e [chatbot\\_data](#input\\_chatbot\\_data) | (optional) Chatbot details to create integration | \u003cpre\u003eobject({\u003cbr\u003e    name                     = string\u003cbr\u003e    slack_channel_id         = string\u003cbr\u003e    slack_workspace_id       = string\u003cbr\u003e    guardrail_policies       = optional(list(string), [\"arn:aws:iam::aws:policy/AWSAccountManagementReadOnlyAccess\"])\u003cbr\u003e    enable_slack_integration = bool\u003cbr\u003e    role_polices = optional(list(object({\u003cbr\u003e      policy_document = any\u003cbr\u003e      policy_name     = string\u003cbr\u003e\u003cbr\u003e    })), [])\u003cbr\u003e    managed_policy_arns = optional(list(string), [\"arn:aws:iam::aws:policy/AWSResourceExplorerReadOnlyAccess\"])\u003cbr\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_codebuild_projects\"\u003e\u003c/a\u003e [codebuild\\_projects](#input\\_codebuild\\_projects) | Values to create Codebuild project | \u003cpre\u003emap(object({\u003cbr\u003e    description                 = optional(string, \"\")\u003cbr\u003e    build_timeout               = optional(number, 15)\u003cbr\u003e    queued_timeout              = optional(number, 15)\u003cbr\u003e    compute_type                = optional(string, \"BUILD_GENERAL1_SMALL\")\u003cbr\u003e    compute_image               = optional(string, \"aws/codebuild/amazonlinux2-x86_64-standard:5.0\")\u003cbr\u003e    compute_type_container      = optional(string, \"LINUX_CONTAINER\")\u003cbr\u003e    image_pull_credentials_type = optional(string, \"CODEBUILD\")\u003cbr\u003e    privileged_mode             = optional(bool, false)\u003cbr\u003e    build_type                  = string\u003cbr\u003e    buildspec_file_name         = optional(string, null)\u003cbr\u003e    buildspec_file              = optional(string, null)\u003cbr\u003e    terraform_version           = optional(string, \"terraform-1.5.0-1.x86_64\")\u003cbr\u003e    create_role                 = optional(bool, false)\u003cbr\u003e    role_data = optional(object({\u003cbr\u003e      name                                = string\u003cbr\u003e      pipeline_service                    = optional(string, null)\u003cbr\u003e      assume_role_arns                    = optional(list(string), null)\u003cbr\u003e      github_secret_arn                   = optional(string, null)\u003cbr\u003e      terraform_state_s3_bucket           = optional(string, null)\u003cbr\u003e      dynamodb_lock_table                 = optional(string, null)\u003cbr\u003e      additional_iam_policy_doc_json_list = optional(list(any), [])\u003cbr\u003e    }), null)\u003cbr\u003e  }))\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_codepipelines\"\u003e\u003c/a\u003e [codepipelines](#input\\_codepipelines) | Codepipeline data to create pipeline and stages | \u003cpre\u003emap(object({\u003cbr\u003e    artifact_store_s3_kms_arn = string\u003cbr\u003e\u003cbr\u003e    source_repositories = list(object({\u003cbr\u003e      name              = string\u003cbr\u003e      output_artifacts  = optional(list(string), [\"source_output\"])\u003cbr\u003e      github_repository = string\u003cbr\u003e      github_branch     = string\u003cbr\u003e      auto_trigger      = optional(bool, true)\u003cbr\u003e    }))\u003cbr\u003e\u003cbr\u003e    pipeline_stages = list(object({\u003cbr\u003e      stage_name       = string\u003cbr\u003e      name             = string\u003cbr\u003e      category         = optional(string, \"Build\")\u003cbr\u003e      provider         = optional(string, \"CodeBuild\")\u003cbr\u003e      input_artifacts  = optional(list(string), [])\u003cbr\u003e      output_artifacts = optional(list(string), [])\u003cbr\u003e      version          = string\u003cbr\u003e      project_name     = optional(string, null)\u003cbr\u003e      environment_variables = optional(list(object({\u003cbr\u003e        name  = string\u003cbr\u003e        value = string\u003cbr\u003e        type  = optional(string, \"PLAINTEXT\")\u003cbr\u003e        })),\u003cbr\u003e        []\u003cbr\u003e      )\u003cbr\u003e    }))\u003cbr\u003e    create_role = optional(bool, false)\u003cbr\u003e    role_data = optional(object({\u003cbr\u003e      name                                = string\u003cbr\u003e      github_secret_arn                   = optional(string, null)\u003cbr\u003e      additional_iam_policy_doc_json_list = optional(list(any), [])\u003cbr\u003e      }),\u003cbr\u003e    null)\u003cbr\u003e\u003cbr\u003e    trigger = optional(list(object({\u003cbr\u003e      source_action_name = string\u003cbr\u003e\u003cbr\u003e      push = list(object({\u003cbr\u003e        branches = object({\u003cbr\u003e          includes = list(string)\u003cbr\u003e          excludes = list(string)\u003cbr\u003e        })\u003cbr\u003e        file_paths = object({\u003cbr\u003e          includes = list(string)\u003cbr\u003e          excludes = list(string)\u003cbr\u003e        })\u003cbr\u003e        })\u003cbr\u003e      )\u003cbr\u003e\u003cbr\u003e      pull_request = list(object({\u003cbr\u003e        events = list(string)\u003cbr\u003e        filter = list(object({\u003cbr\u003e          branches = object({\u003cbr\u003e            includes = list(string)\u003cbr\u003e            excludes = list(string)\u003cbr\u003e          })\u003cbr\u003e          file_paths = object({\u003cbr\u003e            includes = list(string)\u003cbr\u003e            excludes = list(string)\u003cbr\u003e          })\u003cbr\u003e          })\u003cbr\u003e      ) }))\u003cbr\u003e\u003cbr\u003e    })), [])\u003cbr\u003e\u003cbr\u003e    notification_data = optional(map(object({\u003cbr\u003e      detail_type = optional(string, \"FULL\")\u003cbr\u003e      event_type_ids = optional(list(string), [\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-failed\",\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-canceled\",\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-started\",\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-resumed\",\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-succeeded\",\u003cbr\u003e        \"codepipeline-pipeline-pipeline-execution-superseded\",\u003cbr\u003e        \"codepipeline-pipeline-manual-approval-failed\",\u003cbr\u003e        \"codepipeline-pipeline-manual-approval-needed\"\u003cbr\u003e      ])\u003cbr\u003e      targets = list(object({\u003cbr\u003e        address = string                  // eg SNS arn\u003cbr\u003e        type    = optional(string, \"SNS\") // Type can be \"SNS\" , AWSChatbotSlack etc\u003cbr\u003e      }))\u003cbr\u003e    })), null)\u003cbr\u003e\u003cbr\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_codestar_connection\"\u003e\u003c/a\u003e [codestar\\_connection](#input\\_codestar\\_connection) | codestar connection arn for github repository | `string` | n/a | yes |\n| \u003ca name=\"input_role_data\"\u003e\u003c/a\u003e [role\\_data](#input\\_role\\_data) | Roles to be created | \u003cpre\u003emap(object({\u003cbr\u003e    pipeline_service                    = string\u003cbr\u003e    assume_role_arns                    = optional(list(string), null)\u003cbr\u003e    github_secret_arn                   = optional(string, null)\u003cbr\u003e    terraform_state_s3_bucket           = optional(string, null)\u003cbr\u003e    dynamodb_lock_table                 = optional(string, null)\u003cbr\u003e    additional_iam_policy_doc_json_list = optional(list(any), [])\u003cbr\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Tags for AWS resources | `map(string)` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_chatbot_sns_arns\"\u003e\u003c/a\u003e [chatbot\\_sns\\_arns](#output\\_chatbot\\_sns\\_arns) | SNS topic integrated to AWS Chatbot |\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n\n### Git commits\n\nwhile Contributing or doing git commit please specify the breaking change in your commit message whether its major,minor or patch\n\nFor Example\n\n```sh\ngit commit -m \"your commit message #major\"\n```\nBy specifying this , it will bump the version and if you dont specify this in your commit message then by default it will consider patch and will bump that accordingly\n\n\n\n## Development\n\n### Prerequisites\n\n- [terraform](https://learn.hashicorp.com/terraform/getting-started/install#installing-terraform)\n- [terraform-docs](https://github.com/segmentio/terraform-docs)\n- [pre-commit](https://pre-commit.com/#install)\n- [golang](https://golang.org/doc/install#install)\n- [golint](https://github.com/golang/lint#installation)\n\n### Configurations\n\n- Configure pre-commit hooks\n  ```sh\n  pre-commit install\n  ```\n\n### Tests\n- Tests are available in `test` directory\n- Configure the dependencies\n  ```sh\n  cd test/\n  go mod init github.com/sourcefuse/terraform-aws-refarch-\u003cmodule_name\u003e\n  go get github.com/gruntwork-io/terratest/modules/terraform\n  ```\n- Now execute the test  \n  ```sh\n  go test -timeout  30m\n  ```\n\n## Authors\n\nThis project is authored by:\n- SourceFuse\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-cicd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-cicd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-cicd/lists"}