Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions examples/ruleset/repository-ruleset.tf
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
module "github_repo_ruleset" {
source = "../../modules/ruleset"

name = "repo-specific-ruleset"
repository = "my-target-repo"
name = "repo-specific-ruleset"
bypass_actors = {
repository_roles = [
{ role_id = "maintainer_id", always_bypass = true }
Expand Down
1 change: 0 additions & 1 deletion modules/repository_base/rulesets.tf
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ module "ruleset" {

for_each = var.rulesets

repository = github_repository.repository.name
name = each.key
target = each.value.target
enforcement = each.value.enforcement
Expand Down
1 change: 0 additions & 1 deletion modules/ruleset/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ No modules.
| <a name="input_name"></a> [name](#input\_name) | The name of the ruleset. | `string` | n/a | yes |
| <a name="input_ref_name_exclusions"></a> [ref\_name\_exclusions](#input\_ref\_name\_exclusions) | A list of ref names or patterns to exclude. Defaults to an empty list. If set and `ruleset_type` is set to `organization` then either `repository_name_inclusions` or `repository_name_exclusions` must be set to a list of atleast 1 string. | `list(string)` | `[]` | no |
| <a name="input_ref_name_inclusions"></a> [ref\_name\_inclusions](#input\_ref\_name\_inclusions) | A list of ref names or patterns to include. Defaults to an empty list. If set and `ruleset_type` is set to `organization` then either `repository_name_inclusions` or `repository_name_exclusions` must be set to a list of atleast 1 string. | `list(string)` | `[]` | no |
| <a name="input_repository"></a> [repository](#input\_repository) | The name of the repository to apply the ruleset to. Only used when ruleset\_type is 'repository'. | `string` | `null` | no |
| <a name="input_repository_name_exclusions"></a> [repository\_name\_exclusions](#input\_repository\_name\_exclusions) | A list of repository names or patterns to exclude. If `ruleset_type` is set to `repository` then this field is ignored. | `list(string)` | `[]` | no |
| <a name="input_repository_name_inclusions"></a> [repository\_name\_inclusions](#input\_repository\_name\_inclusions) | A list of repository names or patterns to include. If `ruleset_type` is set to `repository` then this field is ignored. | `list(string)` | `[]` | no |
| <a name="input_rules"></a> [rules](#input\_rules) | An object containing fields for all the rule definitions the ruleset should enforce. | <pre>object({<br/> branch_name_pattern = optional(object({<br/> operator = string<br/> pattern = string<br/> name = optional(string)<br/> negate = optional(bool)<br/> }))<br/> tag_name_pattern = optional(object({<br/> operator = string<br/> pattern = string<br/> name = optional(string)<br/> negate = optional(bool)<br/> }))<br/> commit_author_email_pattern = optional(object({<br/> operator = string<br/> pattern = string<br/> name = optional(string)<br/> negate = optional(bool)<br/> }))<br/> commit_message_pattern = optional(object({<br/> operator = string<br/> pattern = string<br/> name = optional(string)<br/> negate = optional(bool)<br/> }))<br/> committer_email_pattern = optional(object({<br/> operator = string<br/> pattern = string<br/> name = optional(string)<br/> negate = optional(bool)<br/> }))<br/> creation = optional(bool)<br/> deletion = optional(bool)<br/> update = optional(bool)<br/> non_fast_forward = optional(bool)<br/> required_linear_history = optional(bool)<br/> required_signatures = optional(bool)<br/> update_allows_fetch_and_merge = optional(bool)<br/> pull_request = optional(object({<br/> dismiss_stale_reviews_on_push = optional(bool)<br/> require_code_owner_review = optional(bool)<br/> require_last_push_approval = optional(bool)<br/> required_approving_review_count = optional(number)<br/> required_review_thread_resolution = optional(bool)<br/> }))<br/> required_status_checks = optional(object({<br/> required_check = list(object({<br/> context = string<br/> integration_id = optional(number)<br/> }))<br/> strict_required_status_check_policy = optional(bool)<br/> }))<br/> required_workflows = optional(object({<br/> required_workflows = list(object({<br/> repository_id = number<br/> path = string<br/> ref = optional(string)<br/> }))<br/> }))<br/> required_deployment_environments = optional(list(string))<br/> })</pre> | n/a | yes |
Expand Down
1 change: 0 additions & 1 deletion modules/ruleset/repository_ruleset.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
resource "github_repository_ruleset" "ruleset" {
count = var.ruleset_type == "repository" ? 1 : 0
repository = var.repository
name = var.name
target = var.target
enforcement = var.enforcement
Expand Down
14 changes: 0 additions & 14 deletions modules/ruleset/repository_ruleset.tftest.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ variables {

name = "ruleset_name"
ruleset_type = "repository"
repository = "repository_name"
target = "tag"
enforcement = "disabled"

Expand Down Expand Up @@ -344,16 +343,3 @@ run "bypass_actor_organization_admin_test" {
error_message = "The bypass actor type is incorrect."
}
}

# Test repository variable is required when ruleset_type is `repository`
run "repository_validation_test" {
command = plan

variables {
repository = null
}

expect_failures = [
var.repository,
]
}
10 changes: 0 additions & 10 deletions modules/ruleset/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,6 @@ variable "name" {
description = "The name of the ruleset."
}

variable "repository" {
type = string
default = null
description = "The name of the repository to apply the ruleset to. Only used when ruleset_type is 'repository'."
validation {
condition = var.ruleset_type != "repository" || var.repository != null
error_message = "The repository variable must be provided when ruleset_type is 'repository'."
}
}

variable "bypass_actors" {
type = object({
repository_roles = optional(list(object({
Expand Down