modules/azure_devops/repository_templates.tf (55 lines of code) (raw):
resource "azuredevops_git_repository" "alz_templates" {
count = var.use_template_repository ? 1 : 0
project_id = local.project_id
name = var.repository_name_templates
default_branch = local.default_branch
initialization {
init_type = "Clean"
}
}
resource "azuredevops_git_repository_file" "alz_templates" {
for_each = var.use_template_repository ? var.template_repository_files : {}
repository_id = azuredevops_git_repository.alz_templates[0].id
file = each.key
content = each.value.content
branch = local.default_branch
commit_message = "[skip ci]"
overwrite_on_create = true
}
resource "azuredevops_branch_policy_min_reviewers" "alz_templates" {
count = var.use_template_repository ? 1 : 0
depends_on = [azuredevops_git_repository_file.alz_templates]
project_id = local.project_id
enabled = length(var.approvers) > 1 && var.create_branch_policies
blocking = true
settings {
reviewer_count = 1
submitter_can_vote = false
last_pusher_cannot_approve = true
allow_completion_with_rejects_or_waits = false
on_push_reset_approved_votes = true
scope {
repository_id = azuredevops_git_repository.alz_templates[0].id
repository_ref = azuredevops_git_repository.alz_templates[0].default_branch
match_type = "Exact"
}
}
}
resource "azuredevops_branch_policy_merge_types" "alz_templates" {
count = var.use_template_repository ? 1 : 0
depends_on = [azuredevops_git_repository_file.alz_templates]
project_id = local.project_id
enabled = var.create_branch_policies
blocking = true
settings {
allow_squash = true
allow_rebase_and_fast_forward = false
allow_basic_no_fast_forward = false
allow_rebase_with_merge = false
scope {
repository_id = azuredevops_git_repository.alz_templates[0].id
repository_ref = azuredevops_git_repository.alz_templates[0].default_branch
match_type = "Exact"
}
}
}