{"id":24630700,"url":"https://github.com/uplink-systems/terraform-module-github-repository","last_synced_at":"2026-05-17T12:04:04.019Z","repository":{"id":271706579,"uuid":"914298720","full_name":"uplink-systems/terraform-module-github-repository","owner":"uplink-systems","description":"Terraform module to manage GitHub repositories","archived":false,"fork":false,"pushed_at":"2025-01-22T14:40:23.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-25T07:12:33.047Z","etag":null,"topics":["github","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uplink-systems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2025-01-09T10:24:03.000Z","updated_at":"2025-01-22T14:40:26.000Z","dependencies_parsed_at":"2025-01-09T12:32:23.928Z","dependency_job_id":"e0662154-ebdd-4618-872a-a0dcc07aa9a5","html_url":"https://github.com/uplink-systems/terraform-module-github-repository","commit_stats":null,"previous_names":["uplink-systems/terraform-module-github-repository"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uplink-systems%2Fterraform-module-github-repository","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uplink-systems%2Fterraform-module-github-repository/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uplink-systems%2Fterraform-module-github-repository/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uplink-systems%2Fterraform-module-github-repository/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uplink-systems","download_url":"https://codeload.github.com/uplink-systems/terraform-module-github-repository/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244560385,"owners_count":20472218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["github","terraform"],"created_at":"2025-01-25T07:12:39.471Z","updated_at":"2026-05-17T12:04:04.012Z","avatar_url":"https://github.com/uplink-systems.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Module 'terraform-module-github-repository'\n\n### Description\n\nThe **terraform-module-github-repository** is intended to create and manage GitHub repository resources following my business needs and standards.  \nThis includes the following guidelines:  \n* Repository names  \n  * Names of GitHub repositories are lowercase and can contain the following characters only:  \n    * \"a-z\", \"0-9\", \".\", \"-\"  \n\n### Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.13.0 |\n| \u003ca name=\"requirement_github\"\u003e\u003c/a\u003e [integrations\\/github](#requirement\\_github) | ~\u003e 6.11.0 |\n| \u003ca name=\"requirement_time\"\u003e\u003c/a\u003e [hashicorp\\/time](#requirement\\_time) | ~\u003e 0.13.0 |\n\n### Resources\n\n| Name | Type |\n|------|------|\n| [github_repository.repository](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/repository) | resource |\n| [github_repository_collaborator.repository_collaborator](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/repository_collaborator) | resource |\n| [github_team_repository.team_repository](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/team_repository) | resource |\n| [github_branch.branch](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/branch) | resource |\n| [github_branch_default.branch_default](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/branch_default) | resource |\n| [time_offset.offset](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/offset) | resource |\n| [github_repository_milestone.repository_milestone](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/repository_milestone) | resource |\n| [github_issue_label.issue_label](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/issue_label) | resource |\n| [github_issue.issue](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/issue) | resource |\n| [github_release.release](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/release) | resource |\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_repository\"\u003e\u003c/a\u003e [repository](#input\\_repository) | 'var.repository' is the main variable for github_repository resource settings | \u003cpre\u003etype        = object({\u003cbr\u003e  name                                    = string\u003cbr\u003e  description                             = optional(string, null)\u003cbr\u003e  allow_auto_merge                        = optional(bool, false)\u003cbr\u003e  allow_merge_commit                      = optional(bool, true)\u003cbr\u003e  allow_rebase_merge                      = optional(bool, true)\u003cbr\u003e  allow_squash_merge                      = optional(bool, true)\u003cbr\u003e  allow_update_branch                     = optional(bool, false)\u003cbr\u003e  archive_on_destroy                      = optional(bool, null)\u003cbr\u003e  archived                                = optional(bool, null)\u003cbr\u003e  auto_init                               = optional(bool, true)\u003cbr\u003e  delete_branch_on_merge                  = optional(bool, false)\u003cbr\u003e  gitignore_template                      = optional(string, null)\u003cbr\u003e  has_discussions                         = optional(bool, false)\u003cbr\u003e  has_downloads                           = optional(bool, false)\u003cbr\u003e  has_issues                              = optional(bool, false)\u003cbr\u003e  has_projects                            = optional(bool, false)\u003cbr\u003e  has_wiki                                = optional(bool, false)\u003cbr\u003e  homepage_url                            = optional(string, null)\u003cbr\u003e  ignore_vulnerability_alerts_during_read = optional(bool, false)\u003cbr\u003e  is_template                             = optional(bool, false)\u003cbr\u003e  license_template                        = optional(string, null)\u003cbr\u003e  pages                                   = optional(any, null)\u003cbr\u003e  security_and_analysis                   = optional(any, null)\u003cbr\u003e  template                                = optional(object({\u003cbr\u003e    owner                                   = string\u003cbr\u003e    repository                              = string\u003cbr\u003e    include_all_branches                    = optional(bool, false)\u003cbr\u003e  }), null)\u003cbr\u003e  topics                                  = optional(list(string), null)\u003cbr\u003e  visibility                              = optional(string, null)\u003cbr\u003e  vulnerability_alerts                    = optional(bool, null)\u003cbr\u003e  web_commit_signoff_required             = optional(bool, false)\u003cbr\u003e})\u003cbr\u003e\u003c/pre\u003e | none | yes |\n| \u003ca name=\"input_repository_collaborator\"\u003e\u003c/a\u003e [repository\\_collaborator](#input\\_repository\\_collaborator) | 'var.repository_collaborator' specifies lists of different collaborator types for the repository | \u003cpre\u003etype        = object({\u003cbr\u003e  enabled     = optional(bool, true)\u003cbr\u003e  admin       = optional(list(string), [])\u003cbr\u003e  maintain    = optional(list(string), [])\u003cbr\u003e  pull        = optional(list(string), [])\u003cbr\u003e  push        = optional(list(string), [])\u003cbr\u003e  triage      = optional(list(string), [])\u003cbr\u003e})\u003cbr\u003e\u003c/pre\u003e |\u003cpre\u003e{ enabled = false }\u003c/pre\u003e | no |\n| \u003ca name=\"input_team_repository\"\u003e\u003c/a\u003e [team\\_repository](#input\\_team\\_repository) | 'var.team_repository' specifies lists of different team names for the repository | \u003cpre\u003etype        = object({\u003cbr\u003e  enabled     = optional(bool, true)\u003cbr\u003e  admin       = optional(list(string), [])\u003cbr\u003e  maintain    = optional(list(string), [])\u003cbr\u003e  pull        = optional(list(string), [])\u003cbr\u003e  push        = optional(list(string), [])\u003cbr\u003e  triage      = optional(list(string), [])\u003cbr\u003e})\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e{ enabled = false }\u003c/pre\u003e | no |\n| \u003ca name=\"input_branch\"\u003e\u003c/a\u003e [branch](#input\\_branch) | 'var.branch' is the optional variable for additional github_branch resource settings | \u003cpre\u003etype        = list(object({\u003cbr\u003e  branch          = string\u003cbr\u003e  source_branch   = optional(string, null)\u003cbr\u003e  source_sha      = optional(string, null)\u003cbr\u003e}))\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e[ ]\u003c/pre\u003e | no |\n| \u003ca name=\"input_branch_default\"\u003e\u003c/a\u003e [branch\\_default](#input\\_branch\\_default) | 'var.branch_default' is the optional variable for the github_branch_default resource settings | \u003cpre\u003etype        = object({\u003cbr\u003e  branch      = string\u003cbr\u003e})\u003cbr\u003e\u003c/pre\u003e | none | no |\n| \u003ca name=\"input_repository_milestone\"\u003e\u003c/a\u003e [repository\\_milestone](#input\\_repository\\_milestone) | 'var.repository_milestone' is the optional variable for the github_repository_milestone resource settings | \u003cpre\u003etype        = map(object({\u003cbr\u003e  owner           = string\u003cbr\u003e  title           = string\u003cbr\u003e  description     = optional(string, null)\u003cbr\u003e  due_date        = optional(string, null)\u003cbr\u003e  state           = optional(string, \"open\")\u003cbr\u003e}))\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e{ }\u003c/pre\u003e | no |\n| \u003ca name=\"input_issue_label\"\u003e\u003c/a\u003e [issue\\_label](#input\\_issue\\_label) | 'var.issue_label' is the optional variable for the github_issue_label resource settings | \u003cpre\u003etype        = object({\u003cbr\u003e  merge       = optional(bool, null)\u003cbr\u003e  label       = optional(list(object({\u003cbr\u003e    name        = string\u003cbr\u003e    color       = string\u003cbr\u003e    description = string\u003cbr\u003e  })), [])\u003cbr\u003e})\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e{ merge = false }\u003c/pre\u003e | no |\n| \u003ca name=\"input_issue\"\u003e\u003c/a\u003e [issue](#input\\_issue) | 'var.issue' is the optional variable for the github_issue resource settings | \u003cpre\u003etype        = map(object({\u003cbr\u003e  title             = string\u003cbr\u003e  body              = optional(string, null)\u003cbr\u003e  labels            = optional(list(string), [])\u003cbr\u003e  assignees         = optional(list(string), [])\u003cbr\u003e  milestone_number  = optional(number, null)\u003cbr\u003e}))\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e{ }\u003c/pre\u003e | no |\n| \u003ca name=\"input_release\"\u003e\u003c/a\u003e [release](#input\\_release) | 'var.release' is the optional variable for the github_release resource settings | \u003cpre\u003etype        = map(object({\u003cbr\u003e  tag_name                  = string\u003cbr\u003e  name                      = optional(string, null)\u003cbr\u003e  target_commitish          = optional(string, null)\u003cbr\u003e  body                      = optional(string, null)\u003cbr\u003e  generate_release_notes    = optional(bool, null)\u003cbr\u003e  draft                     = optional(bool, null)\u003cbr\u003e  prerelease                = optional(bool, null)\u003cbr\u003e  discussion_category_name  = optional(string, null)\u003cbr\u003e}))\u003cbr\u003e\u003c/pre\u003e | \u003cpre\u003e{ }\u003c/pre\u003e | no |\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_github_repository\"\u003e\u003c/a\u003e [github\\_repository](#output\\_github\\_repository) | list of all exported attributes values from the repository resource(s) |\n| \u003ca name=\"output_github_repository_collaborator\"\u003e\u003c/a\u003e [github\\_repository\\_collaborator](#output\\_github\\_repository\\_collaborator) | list of all exported attributes values from the repository_collaborator resource(s) |\n| \u003ca name=\"output_github_team_repository\"\u003e\u003c/a\u003e [github\\_team\\_repository](#output\\_github\\_team\\_repository) | list of all exported attributes values from the team_repository resource(s) |\n| \u003ca name=\"output_github_branch\"\u003e\u003c/a\u003e [github\\_branch](#output\\_github\\_branch) | list of all exported attributes values from the branch resource(s) |\n| \u003ca name=\"output_github_branch_default\"\u003e\u003c/a\u003e [github\\_branch\\_default](#output\\_github\\_branch\\_default) | list of all exported attributes values from the branch_default resource(s) |\n| \u003ca name=\"output_github_repository_milestone\"\u003e\u003c/a\u003e [github\\_repository\\_milestone](#output\\_github\\_repository\\_milestone) | list of all exported attributes values from the repository_milestone resource(s) |\n| \u003ca name=\"output_github_issue_label\"\u003e\u003c/a\u003e [github\\_issue\\_label](#output\\_github\\_issue\\_issue) | list of all exported attributes values from the issue_label resource(s) |\n| \u003ca name=\"output_github_issue\"\u003e\u003c/a\u003e [github\\_issue](#output\\_github\\_issue) | list of all exported attributes values from the issue resource(s) |\n| \u003ca name=\"output_github_release\"\u003e\u003c/a\u003e [github\\_release](#output\\_github\\_release) | list of all exported attributes values from the release resource(s) |\n  \n### Known Issues\n\nKnown issues are documented with the GitHub repo's issues functionality. Please filter the issues by **Types** and select **Known Issue** to get the appropriate issues and read the results carefully before using the module to avoid negative impacts on your infrastructure.  \n  \n\u003ca name=\"known_issues\"\u003e\u003c/a\u003e [list of Known Issues](https://github.com/uplink-systems/terraform-module-github-repository/issues?q=type%3A%22known%20issue%22)\n\n### Notes / Hints / HowTos\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eLifecycle values\u003c/b\u003e\u003c/summary\u003e\n\n######\n* 'repository_milestone' resource -\u003e the module ignores changes of the 'state' attribute because the state should be maintained by the repository's members after initial creation\n* 'issue' resource -\u003e the module ignores changes of the 'body' attribute because the issue's body/description should be maintained by the issue's owners after initial creation\n######\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eVariable setting 'issue_label.merge'\u003c/b\u003e\u003c/summary\u003e\n\n######\nThe variable setting 'issue_label.merge' can be used to manage the GitHub's default issue labels in addition to the custom created ones.  \nHow it works:  \n- The default value for the setting is 'false' if no custom issue label is specified to create as this situation implies that issue labels shall not be managed. Setting the value manually to 'true' adds the default GitHub issue labels to Terraform state during next apply and allows them to be managed.  \n- The default value for the setting is 'null' if one or more custom issue labels are specified to create. A 'null' value equals a 'true' value for the module and therefore adds the default GitHub issue labels to Terraform state and allows them to be managed. Setting the variable manually to 'false' skips importing the default issue labels.  \nThe variable setting also allows the admin to REMOVE the GitHub default issue labels. This can be done by setting the value to 'true' and apply. After successfull apply the value must be set to 'false' and applied again. This adds the existing default issue labels to Terraform state during first apply and destroys the issue labels (and removes it from GitHub) during second apply. Changing the variable setting to 'true' again restores the default issue labels again.  \n \n######\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuplink-systems%2Fterraform-module-github-repository","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuplink-systems%2Fterraform-module-github-repository","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuplink-systems%2Fterraform-module-github-repository/lists"}