Skip to content

[BUG]: github provider 6.5.0 is failing on updating github_organization_ruleset #2542

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 task done
mkushakov opened this issue Jan 20, 2025 · 14 comments · May be fixed by #2545
Open
1 task done

[BUG]: github provider 6.5.0 is failing on updating github_organization_ruleset #2542

mkushakov opened this issue Jan 20, 2025 · 14 comments · May be fixed by #2545
Labels
Status: Triage This is being looked at and prioritized Type: Bug Something isn't working as documented

Comments

@mkushakov
Copy link

Expected Behavior

To make changes on resource github_organization_ruleset

Actual Behavior

Terraform crashes when executing apply.

Terraform Version

Terraform v1.7.5
on linux_amd64

  • Installed integrations/github v6.5.0 (signed by a HashiCorp partner, key ID 38027F80D7FD5FB2)

Affected Resource(s)

  • github_organization_ruleset

Terraform Configuration Files

Steps to Reproduce

terraform plan -out=tfplan -detailed-exitcode
terraform apply tfplan

Debug Output

╷
 │ Error: Plugin did not respond
 │ 
 │   with github_organization_ruleset.main_merge_check_sonarqube,
 │   on rulesets.tf line 499, in resource "github_organization_ruleset" "main_merge_check_sonarqube":
 │  499: resource "github_organization_ruleset" "main_merge_check_sonarqube" {
 │ 
 │ The plugin encountered an error, and failed to respond to the
 │ plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may
 │ contain more details.
 ╵

Panic Output

Stack trace from the terraform-provider-github_v6.5.0 plugin:
 
 panic: interface conversion: interface {} is nil, not bool
 
 goroutine 9621 [running]:
 github.com/integrations/terraform-provider-github/v6/github.expandRules({0xc000d2fac0?, 0xf16546?, 0x0?}, 0x1)
 	github.com/integrations/terraform-provider-github/v6/github/respository_rules_utils.go:327 +0x2694
 github.com/integrations/terraform-provider-github/v6/github.resourceGithubRulesetObject(0xc000912800, {0xc0004e0ad0, 0x8})
 	github.com/integrations/terraform-provider-github/v6/github/respository_rules_utils.go:33 +0x2c5
 github.com/integrations/terraform-provider-github/v6/github.resourceGithubOrganizationRulesetUpdate(0xc000912800, {0xd302c0, 0xc0003a1600})
 	github.com/integrations/terraform-provider-github/v6/github/resource_github_organization_ruleset.go:577 +0x71
 github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).update(0x1077bb0?, {0x1077bb0?, 0xc000f46ae0?}, 0xd?, {0xd302c0?, 0xc0003a1600?})
 	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:828 +0x15f
 github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc0003c8c40, {0x1077bb0, 0xc000f46ae0}, 0xc00089c270, 0xc000996300, {0xd302c0, 0xc0003a1600})
 	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:947 +0x83a
 github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc000396660, {0x1077bb0?, 0xc000f46a20?}, 0xc000a809b0)
 	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:1153 +0xd5c
 github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(*server).ApplyResourceChange(0xc0002597c0, {0x1077bb0?, 0xc000f46210?}, 0xc0004dc000)
 	github.com/hashicorp/[email protected]/tfprotov5/tf5server/server.go:865 +0x3d0
 github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler({0xedc6c0, 0xc0002597c0}, {0x1077bb0, 0xc000f46210}, 0xc000912000, 0x0)
 	github.com/hashicorp/[email protected]/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:518 +0x1a6
 google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001ab000, {0x1077bb0, 0xc000f46180}, {0x107c4b0, 0xc0002e4180}, 0xc00030c120, 0xc00050a960, 0x1712558, 0x0)
 	google.golang.org/[email protected]/server.go:1369 +0xdf8
 google.golang.org/grpc.(*Server).handleStream(0xc0001ab000, {0x107c4b0, 0xc0002e4180}, 0xc00030c120)
 	google.golang.org/[email protected]/server.go:1780 +0xe8b
 google.golang.org/grpc.(*Server).serveStreams.func2.1()
 	google.golang.org/[email protected]/server.go:1019 +0x8b
 created by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 39
 	google.golang.org/[email protected]/server.go:1030 +0x125
 
 Error: The terraform-provider-github_v6.5.0 plugin crashed!

Code of Conduct

  • I agree to follow this project's Code of Conduct
@mkushakov mkushakov added Status: Triage This is being looked at and prioritized Type: Bug Something isn't working as documented labels Jan 20, 2025
@yurii-kysel yurii-kysel linked a pull request Jan 23, 2025 that will close this issue
4 tasks
@tim-acima
Copy link

Has anyone found a workaround for this bug?

I tried to manually create the ruleset via click'ops, and then import it - which worked. But then TF wanted to update the ruleset and it failed. This one is blocking all work on a org-wide ruleset.

@mkushakov
Copy link
Author

mkushakov commented Feb 26, 2025

@tim-acima we just rolled back to previous version as workaround :(

@nickfloyd nickfloyd moved this from 🆕 Triage to 🔥 Backlog in 🧰 Octokit Active Feb 27, 2025
@osakiy
Copy link

osakiy commented Mar 7, 2025

@tim-acima
same here.
It works well like that but it is inconvenient.

required_providers {
  github = {
    source  = "integrations/github"
-    version = "= 6.5.0"
+    version = "= 6.4.0"
  }
}

@ashraidiam
Copy link

I just came to report the same issue.

I have just added this as a temp workout, ensuring the config is correctly set in the UI.

    # intrim fix for the resource modification not executing correctly
    ignore_changes = [rules[0].deletion, rules[0].required_linear_history]

@tim-acima
Copy link

Hey @kfcampbell , any chance a bug fix on this could make it into the next release? 🙏

@tim-acima
Copy link

Pinging this issue again, to keep it from going stale. We're still running into this issue.

@jtaguinod
Copy link

Same issue we are having.

@jtaguinod
Copy link

conditions { ref_name { include = ["~DEFAULT_BRANCH"] exclude = [] } }

Make sure include is not empty. It worked for me after that.

@grimm26
Copy link

grimm26 commented Apr 11, 2025

conditions {                                                                                                                                                                                                                                                                    
    repository_name {                                                                                                                                                                                                                                                             
      include = ["~ALL"]                                                                                                                                                                                                                                                          
      exclude = ["template"]                                                                                                                                                                                                                                                      
    }                                                                                                                                                                                                                                                                             
    ref_name {                                                                                                                                                                                                                                                                    
      include = ["~DEFAULT_BRANCH"]                                                                                                                                                                                                                                               
      exclude = []                                                                                                                                                                                                                                                                
    }                                                                                                                                                                                                                                                                             
  }    

This is exactly what I have and I still get the error.

@jtaguinod
Copy link

conditions {                                                                                                                                                                                                                                                                    
    repository_name {                                                                                                                                                                                                                                                             
      include = ["~ALL"]                                                                                                                                                                                                                                                          
      exclude = ["template"]                                                                                                                                                                                                                                                      
    }                                                                                                                                                                                                                                                                             
    ref_name {                                                                                                                                                                                                                                                                    
      include = ["~DEFAULT_BRANCH"]                                                                                                                                                                                                                                               
      exclude = []                                                                                                                                                                                                                                                                
    }                                                                                                                                                                                                                                                                             
  }    

This is exactly what I have and I still get the error.

try this.
replace
include = ["~ALL"]
with
include = ["*"]

@grimm26
Copy link

grimm26 commented Apr 11, 2025

ok, but https://registry.terraform.io/providers/integrations/github/latest/docs/resources/organization_ruleset#include-2

Still crashes with "*" in conditions.repository_name.include = ["*"]


panic: interface conversion: interface {} is nil, not bool

goroutine 132 [running]:
github.com/integrations/terraform-provider-github/v6/github.expandRules({0xc000782f30?, 0xf1b546?, 0x0?}, 0x1)
	github.com/integrations/terraform-provider-github/v6/github/respository_rules_utils.go:343 +0x2a54
github.com/integrations/terraform-provider-github/v6/github.resourceGithubRulesetObject(0xc00051d280, {0xc000298ce0, 0xa})
	github.com/integrations/terraform-provider-github/v6/github/respository_rules_utils.go:33 +0x2c5
github.com/integrations/terraform-provider-github/v6/github.resourceGithubOrganizationRulesetUpdate(0xc00051d280, {0xd352c0, 0xc0002efb00})
	github.com/integrations/terraform-provider-github/v6/github/resource_github_organization_ruleset.go:577 +0x71
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).update(0x107d470?, {0x107d470?, 0xc0001b86c0?}, 0xd?, {0xd352c0?, 0xc0002efb00?})
	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:828 +0x15f
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc0003a6c40, {0x107d470, 0xc0001b86c0}, 0xc0005e2c30, 0xc00051d100, {0xd352c0, 0xc0002efb00})
	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:947 +0x83a
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc000374678, {0x107d470?, 0xc0001b85d0?}, 0xc0007b4f50)
	github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:1153 +0xd5c
github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(*server).ApplyResourceChange(0xc000275900, {0x107d470?, 0xc0000bba70?}, 0xc000232a80)
	github.com/hashicorp/[email protected]/tfprotov5/tf5server/server.go:865 +0x3d0
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler({0xee16c0, 0xc000275900}, {0x107d470, 0xc0000bba70}, 0xc00082dd00, 0x0)
	github.com/hashicorp/[email protected]/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:518 +0x1a6
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001a3000, {0x107d470, 0xc0000bb9e0}, {0x1081d68, 0xc000230300}, 0xc000474a20, 0xc0004deab0, 0x1719558, 0x0)
	google.golang.org/[email protected]/server.go:1369 +0xdf8
google.golang.org/grpc.(*Server).handleStream(0xc0001a3000, {0x1081d68, 0xc000230300}, 0xc000474a20)
	google.golang.org/[email protected]/server.go:1780 +0xe8b
google.golang.org/grpc.(*Server).serveStreams.func2.1()
	google.golang.org/[email protected]/server.go:1019 +0x8b
created by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 66
	google.golang.org/[email protected]/server.go:1030 +0x125

Error: The terraform-provider-github_v6.6.0 plugin crashed!

@ashraidiam
Copy link

Is there any progress with this issue?

@tim-acima
Copy link

Nudging this again... so it doesn't go stale.

@tim-acima
Copy link

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Triage This is being looked at and prioritized Type: Bug Something isn't working as documented
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants