{"id":15174099,"url":"https://github.com/cucumber/github-settings","last_synced_at":"2025-10-01T11:30:29.340Z","repository":{"id":65989631,"uuid":"419135669","full_name":"cucumber/github-settings","owner":"cucumber","description":"Pulumi scripts to automatically configure our GitHub org/repo settings","archived":true,"fork":false,"pushed_at":"2023-07-11T17:52:34.000Z","size":159,"stargazers_count":2,"open_issues_count":6,"forks_count":1,"subscribers_count":95,"default_branch":"main","last_synced_at":"2025-09-21T06:29:43.311Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://cucumber.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cucumber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"open_collective":"cucumber"}},"created_at":"2021-10-20T00:42:14.000Z","updated_at":"2023-07-26T03:42:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"88fb28ca-e664-4ca1-ba2f-6e837bdfb179","html_url":"https://github.com/cucumber/github-settings","commit_stats":{"total_commits":57,"total_committers":5,"mean_commits":11.4,"dds":0.1228070175438597,"last_synced_commit":"0be807e0f0a9198fa1b563d22402168de8425017"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cucumber/github-settings","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fgithub-settings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fgithub-settings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fgithub-settings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fgithub-settings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cucumber","download_url":"https://codeload.github.com/cucumber/github-settings/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fgithub-settings/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277834210,"owners_count":25885380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-01T02:00:09.286Z","response_time":88,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-27T11:24:21.970Z","updated_at":"2025-10-01T11:30:29.082Z","avatar_url":"https://github.com/cucumber.png","language":"TypeScript","funding_links":["https://opencollective.com/cucumber"],"categories":[],"sub_categories":[],"readme":"# Cucumber Org / Repo settings - Proof of concept\n\nCucumber's a big org, with a lot of different settings in GitHub.\n\nIn an attempt to keep those settings consistent between repos, and with the added bonus of version controlling changes, we're starting to manage those settings via declarative Infrastructure as Code scripts, in this repo.\n\nWe use [Pulumi]'s [GitHub provider](https://www.pulumi.com/registry/packages/github/) to declare and apply repo settings.\n\nTo run the scripts, you need to first install [Pulumi]'s [CLI], then, in a clone of this repo:\n\n\texport GITHUB_TOKEN=\u003cyour github token\u003e\n\texport GITHUB_OWNER=cucumber\n\tpulumi login --local # this opts out of using their web-based service. Good for a quick test.\n\texport PULUMI_CONFIG_PASSPHRASE='' # OK unless we need to store secrets\n\tpulumi stack init --stack cucumber --non-interactive\n\nNow you're ready to apply the configuration in [index.ts](./index.ts), like this:\n\n\tpulumi up --yes\n\n## Current capability / limitations\n\n* Right now, the scripts are capable of using the [TeamRepository] resource to set up what's on the \"Manage access\" tab of a repo's settings. You specify a repo, a team and the permission level, and the script does the rest.\n\n## Next steps\n\nIn no particular order:\n\n- figure out where we need to store/sync state, or what to do if actual config drifts from what's configured. What's pulumi's equivalent of `terraform import`?\n- eslint / prettier config in this repo\n- GitHub action to automatically apply the settings\n- factor out a better pattern/DSL for declaring repo-team relationships\n- configure protected release branches\n- configure release environments\n- ...?\n\n[Pulumi]:https://www.pulumi.com/\n[CLI]:https://www.pulumi.com/docs/get-started/install/\n[TeamRepository]:https://www.pulumi.com/registry/packages/github/api-docs/teamrepository/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fgithub-settings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcucumber%2Fgithub-settings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fgithub-settings/lists"}