terraform-provider-github: [MAINT]: Public Repositories do not play well with Advanced Security settings
Describe the need
First of all, thank you very much for adding the GitHub Advanced Security settings in terraform, see #1104 . This has been a boon to our organization, and we’ve used it to track and add settings to every repository using a common setup module.
Most of our repositories are private, but one of them is public. I’ve tried a dynamic setting to remove the advanced_security block from the public repository, but now, trying to remove it, I get the message 422 Advanced security is always available for public repos [].
I do want to keep other security settings, like “Secret scanning”, without having a required block specifying advanced security for the public repo. Please advise if there’s a better way to go about this, otherwise, let me know if this is something that can be adjusted in the security_and_analysis block.
SDK Version
No response
API Version
No response
Relevant log output
No response
Code of Conduct
- I agree to follow this project’s Code of Conduct
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 18
- Comments: 22 (15 by maintainers)
Commits related to this issue
- Advanced security and analysis (#71) Hitting an issue: https://github.com/integrations/terraform-provider-github/issues/1419 — committed to osinfra-io/github-organization-management by brettcurtis a year ago
No it doesn’t.
still results in a
terraform applyfailure of@miotke This PR fixes this issue, do you mind taking a look and giving feedback? https://github.com/integrations/terraform-provider-github/pull/1431
Version
5.13.0works without any issue.Just a small correction: unless I’m mistaken, the change was introduced in
5.9.0, so the workaround should be to pin to5.8.0. Hope this helps someone, and looking forward to the fix! 🙏Edit: Actually, pinning
5.8.0means we lose the fix provided in #1368 (released in5.9.1in response to GitHub API breaking changes), which means currently no version of the provider is usable by my team. 😓Hey @nickfloyd - could we rollback https://github.com/integrations/terraform-provider-github/pull/1304 and release a new version? This unintentionally introduced a breaking change. By sending these values in API calls to public repos, GitHub rejects them.
I think we should only add these fields to the API if they are explicitly supplied, or rollback and explore a different engineering option. For now, pinning to
5.10is a workaround, but this is a fairly serious bug as it makesgithub_repositorycompletely unusable in5.11and5.12and introduced a breaking change./cc @marzvrover @kfcampbell
@bombelme, yes, we saw the same and “just” had to delete & re-import the state for
github_repositoryresources. 🙃 Hope it helps a little while waiting for #1431 to land.@jtgrohn do you mind creating a new issue with those details? My guess is that we’re missing a migration function, but I’d like to keep that separate from this issue.
In addition to the public repo issues everyone has been commenting on, there is another issue for private/internal repos with updating the provider version. If a repo was created at/after the
security_and_analysisblock was introduced (e.g. at5.9.0+), without the block explicitly set, and then is updated to a newer version (doesn’t seem to matter which), the plan wants to remove the block. e.g.Steps to reproduce
create Terraform config:
apply the config then update provider version in terraform config, so the resulting config is:
and plan again the resulting plan tries to remove the
security_and_analysisblock (see above).@miotke The logic of the PR basically changes the request that is sent to the API based on the repos visibility. Advanced Security is enabled on public repos by default so if you send an API request with that field you will get an error, but you can still control the other aspects of advanced security like push protection and secret scanning on public repos.