integrations / terraform-provider-github

Terraform GitHub provider
https://www.terraform.io/docs/providers/github/
MIT License
905 stars 746 forks source link

[BUG]: Importing github_repository_environment_deployment_policy resource does not populate repository and environment fields. #2012

Open dcfsc opened 1 year ago

dcfsc commented 1 year ago

Expected Behavior

After import and terraform plan, should see

No changes. Your infrastructure matches the configuration.

Actual Behavior

  1. terraform plan
    # github_repository_environment_deployment_policy.feature must be replaced  
    -/+ resource "github_repository_environment_deployment_policy" "feature" {  
      + environment    = "dly" # forces replacement  
      ~ id             = "xxx-recs-event-streaming:dly:1212XXXX" -> (known after apply)  
      + repository     = "xxx-recs-event-streaming" # forces replacement  
        # (1 unchanged attribute hidden)  
    }

Terraform Version

$ terragrunt version Terraform v1.6.2 on linux_amd64

Affected Resource(s)

Terraform Configuration Files

resource github_repository_environment env {
  environment = var.env
  repository  = var.repository.name

  deployment_branch_policy {
    protected_branches     = true
    custom_branch_policies = true
  }
}

resource "github_repository_environment_deployment_policy" "feature" {  
  repository        = data.github_repository.xxxx.name  
  environment       = github_actions_environment.env.environment  
  branch_pattern = "feature/**"  
}

Steps to Reproduce

  1. Create an environment
  2. Add a deployment policy via the portal
  3. Define the policy in configuration:
  4. Import the policy
    $ tg import github_repository_environment_deployment_policy.feature xxx-recs-event-streaming:dly:1212XXXX  
  5. Examining the state -- note the nulls
    {  
    "mode": "managed",  
    "type": "github_repository_environment_deployment_policy",  
    "name": "master",  
    "provider": "provider[\"registry.terraform.io/integrations/github\"]",  
    "instances": [  
    {  
      "schema_version": 0,  
      "attributes": {  
        "branch_pattern": "master",  
        "environment": null,  <<<<< BAD
        "id": "xxx-recs-event-streaming:dly:1212XXXX",  
        "repository": null    <<<<<< BAD
      },  
      "sensitive_attributes": [],  
      "private": "xxxxxxx=="  
    }  
    ]  
    },
  6. workaround: patch the state directly and push the fixed state:
    {  
    "mode": "managed",  
    "type": "github_repository_environment_deployment_policy",  
    "name": "master",  
    "provider": "provider[\"registry.terraform.io/integrations/github\"]",  
    "instances": [  
    {  
      "schema_version": 0,  
      "attributes": {  
        "branch_pattern": "master",  
        "environment": "dly",  
        "id": "xxx-recs-event-streaming:dly:1212XXXX",  
        "repository": "xxx-recs-event-streaming"  
      },  
      "sensitive_attributes": [],  
      "private": "XXXXX=="  
    }  
    ]  
    },
  7. now a plan....
    
    ...
    github_repository_environment_deployment_policy.master: Refreshing state... [id=xxx-recs-event-streaming:dly:1212XXXX]  
    ...
    data.azurerm_subscription.current: Read complete after 0s [id=/subscriptions/XXXX]  

No changes. Your infrastructure matches the configuration.



### Debug Output

_No response_

### Panic Output

_No response_

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct
github-actions[bot] commented 1 year ago

👋 Hi! Thank you for this contribution! Just to let you know, our GitHub SDK team does a round of issue and PR reviews twice a week, every Monday and Friday! We have a process in place for prioritizing and responding to your input. Because you are a part of this community please feel free to comment, add to, or pick up any issues/PRs that are labled with Status: Up for grabs. You & others like you are the reason all of this works! So thank you & happy coding! 🚀

mw-root commented 8 months ago

This is a really frustrating bug. If you have piles of repos you sit waiting for it to re-create all these resources and your deployment environments are flapping in and out.