Prepare GitHub App credential delivery for module releases - #73
Merged
Merged
Conversation
Distribute the existing CHART_UPDATER_GITHUB_APP_PRIVATE_KEY Actions secret to terraform-libvirt-domain for module release automation and document the proposed consumer in the canonical App runbook: the required manual selected-repository App installation (explicit rollout gate until an owner confirms it), the scoped installation-token request, and the shared-private-key authority risk. No App permission change, no new App, and no Terraform-managed installation; the App stays manually owner-managed.
Frame the unmerged consumer workflow prospectively ("proposed release
workflow will") and replace the not-installed assertion with
verify-then-gate semantics: the installation scope is unverified, rollout
stays blocked until an owner confirms it, and token minting will fail
only if the repository is not selected. No other runbook content changes.
Contributor
OpenTofu TestOpenTofu test passed. View run output |
Contributor
OpenTofu PlanOpenTofu plan passed. View run outputOpenTofu will perform the following actions:
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
+ created_at = (known after apply)
+ id = (known after apply)
+ key_id = (known after apply)
+ plaintext_value = (sensitive value)
+ remote_updated_at = (known after apply)
+ repository = "terraform-libvirt-domain"
+ repository_id = (known after apply)
[REDACTED: potentially sensitive plan output]
+ updated_at = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
OpenTofu will perform the following actions:
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
+ created_at = (known after apply)
+ id = (known after apply)
+ key_id = (known after apply)
+ plaintext_value = (sensitive value)
+ remote_updated_at = (known after apply)
+ repository = "terraform-libvirt-domain"
+ repository_id = (known after apply)
[REDACTED: potentially sensitive plan output]
+ updated_at = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy. |
Contributor
Author
|
Owner explicitly approved merging and proceeding after the shared-key recipient risk and selected-installation prerequisites were presented. Current head241c50926a69ea2b57e2a244f52a6eb2f53ecc69 has successful test/plan and synthetic checks; plan shows only1new Actions secret for terraform-libvirt-domain,0change,0destroy. Proceeding producer-first. Will verify successful root apply without retrieving values before merging the consumer workflow. App token functionality will be verified in the resulting release workflow; no organization-wide permission change or App permission expansion is included. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepare repository-scoped release authentication without weakening organization Actions policy. Add terraform-libvirt-domain as one recipient of the existing CHART_UPDATER_GITHUB_APP_PRIVATE_KEY and document the proposed consumer/installation gates. No key value, App permission, installation, or organization policy is changed in source.
Fixes: N/A — companion to module release-auth migration; HTTP409 root blocker resolved separately by #71.
Type of change
Validation
Independent adversarial/security/delivery reviews ADVANCE for draft PR creation. Expected plan: exactly one new repository Actions secret for terraform-libvirt-domain, with no unrelated settings or App/installation changes. Do not retrieve or paste private-key values. PR creation is not authorization to apply.
Impact and rollout
MERGE/APPLY HOLD until owner explicitly accepts adding this shared-key recipient and confirms makeitworkbot is installed for terraform-libvirt-domain using the selected-repository installation. Installation ownership stays manual under this root's runbook.
Security distinction: workflow repositories input restricts the minted token, NOT the private key. A repository holding this key could request tokens for other repositories already granted to the App. This adds a ninth recipient; owner must accept that expanded credential exposure before merge.
Then merge/apply this producer first; verify successful delivery without retrieving values. Only afterward merge the companion consumer workflow, which requests Contents and Pull requests write for terraform-libvirt-domain only. No Issues permission increase is proposed. The consumer merge is publication-capable and separately gated. Rollback removes the recipient through a reviewed root change; it does not revoke the shared key globally.
Safety and secrets
AI-assisted. Draft only, no auto-merge, no upstream communications.