modules/github/repository_templates.tf (40 lines of code) (raw):

resource "github_repository" "alz_templates" { count = var.use_template_repository ? 1 : 0 name = var.repository_name_templates description = var.repository_name_templates auto_init = true visibility = data.github_organization.alz.plan == local.free_plan ? "public" : "private" allow_update_branch = true allow_merge_commit = false allow_rebase_merge = false vulnerability_alerts = true } resource "github_repository_file" "alz_templates" { for_each = var.use_template_repository ? var.template_repository_files : {} repository = github_repository.alz_templates[0].name file = each.key content = each.value.content commit_author = local.default_commit_email commit_email = local.default_commit_email commit_message = "Add ${each.key} [skip ci]" overwrite_on_create = true } resource "github_branch_protection" "alz_templates" { count = var.use_template_repository && var.create_branch_policies ? 1 : 0 depends_on = [github_repository_file.alz_templates] repository_id = github_repository.alz_templates[0].name pattern = "main" enforce_admins = true required_linear_history = true require_conversation_resolution = true required_pull_request_reviews { dismiss_stale_reviews = true restrict_dismissals = true required_approving_review_count = length(var.approvers) > 1 ? 1 : 0 } } resource "github_actions_repository_access_level" "alz_templates" { count = var.use_template_repository && data.github_organization.alz.plan == local.enterprise_plan ? 1 : 0 access_level = "organization" repository = github_repository.alz_templates[0].name }