diff --git a/modules/common_repository/main.tf b/modules/common_repository/main.tf index fa0f0b1..6d346b2 100644 --- a/modules/common_repository/main.tf +++ b/modules/common_repository/main.tf @@ -97,12 +97,44 @@ resource "github_branch_protection" "repo_protection" { } } - required_status_checks { - strict = true - contexts = var.required_status_checks + depends_on = [github_repository.repo, github_repository_collaborators.repo_collaborators] +} + +resource "github_repository_ruleset" "status_checks" { + count = var.visibility == "private" ? 0 : var.branch_protection && length(var.required_status_checks) > 0 ? 1 : 0 + + name = "ci-status-checks" + repository = github_repository.repo.name + target = "branch" + enforcement = "active" + + bypass_actors { + actor_id = 1 + actor_type = "OrganizationAdmin" + bypass_mode = "always" } - depends_on = [github_repository.repo, github_repository_collaborators.repo_collaborators] + conditions { + ref_name { + include = ["~DEFAULT_BRANCH"] + exclude = [] + } + } + + rules { + required_status_checks { + strict_required_status_checks_policy = true + + dynamic "required_check" { + for_each = var.required_status_checks + content { + context = required_check.value + } + } + } + } + + depends_on = [github_repository.repo] } resource "github_repository_environment" "env" {