Repository navigation
chore(github/repository): close the monorepo production environment to every ref - #1110
Merged
Merged
Conversation
…o every ref Signed-off-by: panicboat <panicboat@gmail.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Contributor
Plan Result (repository/master)
Change Result (Click me) # github_repository_environment.repository["monorepo/production"] will be created
+ resource "github_repository_environment" "repository" {
+ can_admins_bypass = false
+ environment = "production"
+ id = (known after apply)
+ prevent_self_review = false
+ repository = "monorepo"
+ repository_id = (known after apply)
+ deployment_branch_policy {
+ custom_branch_policies = true
+ protected_branches = false
}
}
Plan: 1 to add, 0 to change, 0 to destroy. |
panicboat
marked this pull request as ready for review
October 24, 2026 13:06
panicboat
enabled auto-merge (squash)
October 24, 2026 13:06
Contributor
✅ Apply Succeeded (repository/master)Details (Click me)Oct 24 13:07:35.306 INF download and unarchive the package program=aqua version=2.64.0 env=linux/amd64 exe_name=terragrunt package_name=gruntwork-io/terragrunt package_version=v1.0.2 registry=standard
Initializing the backend...
Successfully configured the backend "s3"! OpenTofu will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding integrations/github versions matching "~> 6.13"...
- Finding hashicorp/aws versions matching "~> 6.68"...
- Installing hashicorp/aws v6.70.0 to the shared cache directory...
- Installing integrations/github v6.13.0 to the shared cache directory...
- Installed integrations/github v6.13.0 (signed, key ID 38027F80D7FD5FB2)
- Using integrations/github v6.13.0 from the shared cache directory
- Installed hashicorp/aws v6.70.0 (signed, key ID 0C0AF313E5FD9F80)
- Using hashicorp/aws v6.70.0 from the shared cache directory
Providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://opentofu.org/docs/cli/plugins/signing/
OpenTofu has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that OpenTofu can guarantee to make the same selections by default when
you run "tofu init" in the future.
OpenTofu has been successfully initialized!
You may now begin working with OpenTofu. Try running "tofu plan" to see
any changes that are required for your infrastructure. All OpenTofu commands
should now work.
If you ever set or change modules or backend configuration for OpenTofu,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Acquiring state lock. This may take a few moments...
github_repository.repository["platform"]: Refreshing state... [id=platform]
github_repository.repository["deploy-actions"]: Refreshing state... [id=deploy-actions]
github_repository.repository["monorepo"]: Refreshing state... [id=monorepo]
github_repository.repository["ansible"]: Refreshing state... [id=ansible]
github_repository.repository["dotfiles"]: Refreshing state... [id=dotfiles]
github_repository_vulnerability_alerts.repository["dotfiles"]: Refreshing state... [id=880093624]
github_repository_vulnerability_alerts.repository["deploy-actions"]: Refreshing state... [id=1014666976]
github_repository_vulnerability_alerts.repository["platform"]: Refreshing state... [id=994278495]
github_repository_vulnerability_alerts.repository["monorepo"]: Refreshing state... [id=807388271]
github_repository_vulnerability_alerts.repository["ansible"]: Refreshing state... [id=880089351]
github_workflow_repository_permissions.repository["monorepo"]: Refreshing state... [id=monorepo]
github_repository_environment.repository["platform/production"]: Refreshing state... [id=platform:production]
github_workflow_repository_permissions.repository["platform"]: Refreshing state... [id=platform]
github_repository_environment_deployment_policy.repository["platform/production/*-v*"]: Refreshing state... [id=platform:production:64198899]
OpenTofu used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
OpenTofu will perform the following actions:
# github_repository_environment.repository["monorepo/production"] will be created
+ resource "github_repository_environment" "repository" {
+ can_admins_bypass = false
+ environment = "production"
+ id = (known after apply)
+ prevent_self_review = false
+ repository = "monorepo"
+ repository_id = (known after apply)
+ deployment_branch_policy {
+ custom_branch_policies = true
+ protected_branches = false
}
}
Plan: 1 to add, 0 to change, 0 to destroy.
github_repository_environment.repository["monorepo/production"]: Creating...
github_repository_environment.repository["monorepo/production"]: Creation complete after 1s [id=monorepo:production]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
repository_full_names = {
"ansible" = "panicboat/ansible"
"deploy-actions" = "panicboat/deploy-actions"
"dotfiles" = "panicboat/dotfiles"
"monorepo" = "panicboat/monorepo"
"platform" = "panicboat/platform"
}
repository_html_urls = {
"ansible" = "https://github.com/panicboat/ansible"
"deploy-actions" = "https://github.com/panicboat/deploy-actions"
"dotfiles" = "https://github.com/panicboat/dotfiles"
"monorepo" = "https://github.com/panicboat/monorepo"
"platform" = "https://github.com/panicboat/platform"
}
repository_http_clone_urls = {
"ansible" = "https://github.com/panicboat/ansible.git"
"deploy-actions" = "https://github.com/panicboat/deploy-actions.git"
"dotfiles" = "https://github.com/panicboat/dotfiles.git"
"monorepo" = "https://github.com/panicboat/monorepo.git"
"platform" = "https://github.com/panicboat/platform.git"
}
repository_ids = {
"ansible" = 880089351
"deploy-actions" = 1014666976
"dotfiles" = 880093624
"monorepo" = 807388271
"platform" = 994278495
}
repository_node_ids = {
"ansible" = "R_kgDONHUZBw"
"deploy-actions" = "R_kgDOPHqW4A"
"dotfiles" = "R_kgDONHUpuA"
"monorepo" = "R_kgDOMB_Ebw"
"platform" = "R_kgDOO0N8Xw"
}
repository_ssh_clone_urls = {
"ansible" = "git@github.com:panicboat/ansible.git"
"deploy-actions" = "git@github.com:panicboat/deploy-actions.git"
"dotfiles" = "git@github.com:panicboat/dotfiles.git"
"monorepo" = "git@github.com:panicboat/monorepo.git"
"platform" = "git@github.com:panicboat/platform.git"
}
|
2 of 4 tasks
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.
Why
production の apply role は OIDC subject
repo:panicboat/monorepo:environment:productionも許可している。monorepo には GitHub environment がないので、job が
environment: productionを宣言すると、GitHub が自動作成して token を発行してしまう。monorepo には GitHub environment を宣言する job がない(
environment:はすべて reusable workflow の入力)ので、どの ref からの deployment も受け付けないproductionを作る。productionを release tag に限定した変更)What
monorepo.hclに、tag pattern を 1 つも持たない environmentproductionを宣言する。custom_branch_policies = trueで policy 0 個の environment になる。影響
mainへの push の trust(ref:refs/heads/main)で動いているので、この変更では止まらない。deployment_tag_patternsに pattern を足す。Test plan
tofu test(github/repository/modules)が 3 passedcustom_branch_policiesを外すなどの改変で、新しい run が失敗するenvironment:がないgithub/repositoryの plan に、monorepo の environment の追加だけが出るgh api repos/panicboat/monorepo/environments/productionでcustom_branch_policies: trueかつ policy 0 個になっているenvironment: productionの job を起動すると、GitHub に拒否される🤖 Generated with Claude Code
https://claude.ai/code/session_01BZfNTtmPjmrDmh1MAMtiFS