Repository navigation
Conversation
Use operation-scoped cancellation and a total token-request timeout to prevent stalled refreshes from blocking resource operations. Preserve renewable token caching.
Separate creation, installer and organization App credentials for enterprise organization creation, bootstrap, read and import. Retain identity on partial failure. Block unverified update and delete operations in the opt-in mode. Refs integrations#3109
|
👋 Hi, and thank you for this contribution! This repo is maintained by GitHub and community members on a best-effort basis. We'll get to this as soon as we can. You can help us prioritize by joining the discussion on open issues and PRs, sharing details on the changes you need, and reviewing other contributions. 🤖 This is an automated message. |
|
Fixes #3699 |
Prove successful bootstrap and tainted-create reconciliation with a real Terraform CLI and mocked GitHub API. Require explicit TF_CORE_TEST_BINARY so normal unit runs stay independent of a local CLI. Refs integrations#3699
Validation updateThe previously missing live Create/bootstrap and Terraform Core recovery Live pilot
Regression coverage
No deliberate live failure or live untaint was performed. The full offline provider suite passed with Go 1.26.10, including these go test ./... -skip '^TestAcc' -parallel=4 -count=1 -timeout=120s Remaining limitations
|
Refs #3699. Related: #3109, #2886.
Before the change?
Enterprise installation credentials can create an organization but cannot read its organization-scoped fields. Default owner discovery also treats the enterprise slug as a user. Installing an organization App does not extend the enterprise token.
After the change?
This draft explores an explicit
enterprise_app_authmode with separate creation, installer and automation credentials. It retains identity before bootstrap, then uses verified organization installations for Read/Import. The opt-in mode does not upgrade or unsuspend existing installations and blocks Update/Delete. Default resource routing remains unchanged. Installation-token refresh additionally gains operation cancellation and a total timeout while retaining renewal.This overlaps #3671 (same-App lifecycle routing) and #3535 (installation resources). Maintainer agreement on the separate-App API and ownership boundary is needed before this should be considered merge-ready. #3697 remains a separate billing fix.
Branch: https://github.com/luth2/terraform-provider-github/tree/feat/enterprise-app-lifecycle
Pull request checklist
Does this introduce a breaking change?
The new mode is opt-in. Its unsupported Update/Delete operations fail before API mutation. This limitation is intentional and is not a claim of full CRUD support.
Validation and remaining gates
go test ./... -skip '^TestAcc' -parallel=4 -count=1 -timeout=120spassed.4 to import, 0 to add, 2 to change, 0 to destroy; no apply or import executed.AI assistance
This implementation and draft were substantially AI-assisted with GitHub Copilot. Automated tests and live read/import plans were run, but personal contributor review and testing required by CONTRIBUTING.md are not asserted on the contributor's behalf. Keep this PR in draft until that review is completed.