{"id":22576105,"url":"https://github.com/pulumiverse/infra","last_synced_at":"2025-04-10T17:12:42.807Z","repository":{"id":37103136,"uuid":"426528615","full_name":"pulumiverse/infra","owner":"pulumiverse","description":"IaC for all infrastructure required by Pulumiverse","archived":false,"fork":false,"pushed_at":"2025-03-31T15:59:01.000Z","size":1094,"stargazers_count":6,"open_issues_count":9,"forks_count":14,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-04T20:56:56.370Z","etag":null,"topics":["infrastructure-as-code","pulumi"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulumiverse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-10T07:42:01.000Z","updated_at":"2025-03-31T15:59:03.000Z","dependencies_parsed_at":"2023-12-21T06:45:19.806Z","dependency_job_id":"919937df-fbcc-4472-9146-5ce0062a373e","html_url":"https://github.com/pulumiverse/infra","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumiverse%2Finfra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumiverse%2Finfra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumiverse%2Finfra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumiverse%2Finfra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulumiverse","download_url":"https://codeload.github.com/pulumiverse/infra/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248261907,"owners_count":21074225,"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","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":["infrastructure-as-code","pulumi"],"created_at":"2024-12-08T04:06:05.567Z","updated_at":"2025-04-10T17:12:42.786Z","avatar_url":"https://github.com/pulumiverse.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pulumiverse Infrastructure setup\n\nThe Pulumiverse organization has some infrastructure to support its operation. \nThis repository manages as much as possible of this setup using Pulumi IaC.\n\n## Github\n\n**Status:** Partially Automated\n\nThe Github provider doesn't contain the functionality to configure all of the organization level settings. The following settings\nare controlled manually as a result:\n\n* [Workflow permissions](https://github.com/organizations/pulumiverse/settings/actions): default set to `Read repository contents permission` instead of `Read and write permission`\n\nThe following resources within the organization on Github is managed by Pulumi code:\n\n* Teams\n* Membership to organization and teams\n* Repositories and team access\n\nEach repository which publishes artifacts to package registries will get\nseparate publishing tokens to the respective package registries.\n\n## Package Registries\n\nPlease read the documentation on [Authoring \u0026 Publishing](https://www.pulumi.com/docs/guides/pulumi-packages/how-to-author/) before continuing with the specifics below.\n\n**Notes:** \n\n- Manually authoring a Pulumi schema file.\n  The [JSON schema file](https://www.pulumi.com/docs/guides/pulumi-packages/schema) is used by `pulumi-gen-xyz` to create language-specific SDKs. It is, therefore, a central requirement for any resource provider. Provider schemas can be handwritten, or alternatively machine-generated by combining API specification with pulumi-specific logic.\n\n  When writing the schema by hand, it is helpful to associate the JSON schema in your IDE for completion or Intellisense features to work:\n\n    Visual Studio Code: the easiest option is to [map the schema file](https://code.visualstudio.com/Docs/languages/json#_mapping-in-the-user-settings) in your User Settings which enables it for all your provider projects:\n\n    ```\n        \"json.schemas\": [\n          {\n              \"fileMatch\": [\n                  \"/provider/cmd/pulumi-*/schema.json\"\n              ],\n              \"url\": \"https://raw.githubusercontent.com/pulumi/pulumi/master/pkg/codegen/schema/pulumi.json\"\n          }\n      ]\n    ```\n\n  This repository provides the [xyz example schema](https://github.com/pulumi/pulumi-provider-boilerplate/blob/dd69ad8e42d60334aa7026e8d790a7805aefddb2/provider/cmd/pulumi-resource-xyz/schema.json) to get you started. The [AWS Native Provider schema](https://github.com/pulumi/pulumi-aws-native/blob/master/provider/cmd/pulumi-resource-aws-native/schema.json) provides a much larger example. Refer to the [package schema documentation](https://www.pulumi.com/docs/guides/pulumi-packages/schema/#pulumi-package-schema) for additional details when writing the schema.\n- to use custom package names for Terraform bridge providers, please ensure you minimally use [`github.com/pulumi/pulumi-terraform-bridge v3.21.0`](https://github.com/pulumi/pulumi-terraform-bridge/releases/tag/v3.21.0).\n- when publishing plugin binaries for providers as Github releases, make sure your users are running \n  [Pulumi 3.35.3](https://www.pulumi.com/docs/guides/pulumi-packages/how-to-author/#support-for-github-releases)\n  or up. Make sure to set the plugin download URL consistently to `github://api.github.com/pulumiverse`.\n\n  In `schema.json`, add a toplevel entry like this:\n\n  ```json\n  \"pluginDownloadURL\": \"github://api.github.com/pulumiverse\",\n  ```\n\n  When bridging a Terraform provider, add the following to `providers/resources.go`:\n\n  ```go\n  func Provider() tfbridge.ProviderInfo {\n    ...\n\n    // Create a Pulumi provider mapping\n    prov := tfbridge.ProviderInfo{\n        ...\n        // PluginDownloadURL is an optional URL used to download the Provider\n        // for use in Pulumi programs\n        PluginDownloadURL: \"github://api.github.com/pulumiverse\",\n        ...\n    }\n    ...\n  }\n  ```\n\n### NPM Registry\n\n#### Administration\n\n**Status:** Manual\n\nAll members of the Pulumiverse Governance Board receive admin/owner rights on\nthe `pulumiverse` organization on the [NPM Registry](https://www.npmjs.com).\nHaving this organization ensures we have the `@pulumiverse/...` package\nnamespace available and claimed.\n\n#### Publish packages\n\nWe encourage all publishable artifacts to use this namespace. For Pulumi\npackages, set the package name in the `schema.json` file:\n\n```json\n{\n    ...\n    \"language\": {\n        \"nodejs\": {\n            \"packageName\": \"@pulumiverse/\u003cpackage\u003e\",\n            ...\n        }\n    }\n}\n```\n\nFor a Terraform bridged provider, add this to `resources.go`:\n\n```go\nfunc Provider() tfbridge.ProviderInfo {\n    ...\n\n\t// Create a Pulumi provider mapping\n\tprov := tfbridge.ProviderInfo{\n        ...\n\t\tJavaScript: \u0026tfbridge.JavaScriptInfo{\n\t\t\tPackageName: \"@pulumiverse/\u003cpackage\u003e\",\n            ...\n\t\t},\n        ...\n\t}\n    ...\n}\n```\n\n## Python Package Index\n\n#### Administration\n\n**Status:** Manual\n\nPypi doesn't have the notion of an organization or team account. A separate\nuser account `pulumiverse` is the owner of all Python packages published\nunder the Pulumiverse wings.\n\nThe credentials to access this user account are shared securely with the\nmembers of the Pulumi Governance Board.\n\n#### Publish packages\n\nWe encourage all publishable artifacts to use the `pulumiverse_` prefix.\nFor Pulumi packages, set the package name in the `schema.json` file:\n\n```json\n{\n    ...\n    \"language\": {\n        \"python\": {\n            \"packageName\": \"pulumiverse_\u003cpackage\u003e\",\n            ...\n        }\n    }\n}\n```\n\nFor a Terraform bridged provider, add this to `resources.go`:\n\n```go\nfunc Provider() tfbridge.ProviderInfo {\n    ...\n\n\t// Create a Pulumi provider mapping\n\tprov := tfbridge.ProviderInfo{\n        ...\n\t\tPython: \u0026tfbridge.PythonInfo{\n\t\t\tPackageName: \"pulumiverse_\u003cpackage\u003e\",\n            ...\n\t\t},\n        ...\n\t}\n    ...\n}\n```\n\n## Go\n\n#### Administration\n\nGo doesn't have or need a central repository. The generated Go SDK for a\nPulumi package must be committed into the Git repository and properly\ntagged.\n\n#### Publish packages\n\nTo publish Go packages, the base import path must be set correctly in the\ngenerated `go.mod` file. \nFor Pulumi packages, set the package name in the `schema.json` file:\n\n```json\n{\n    ...\n    \"language\": {\n        \"go\": {\n            \"importBasePath\": \"github.com/pulumiverse/pulumi-\u003cpackage\u003e/sdk/go/\u003cpackage\u003e\"\n            ...\n        }\n    }\n}\n```\n\nFor a Terraform bridged provider, add this to `resources.go`:\n\n```go\nfunc Provider() tfbridge.ProviderInfo {\n    ...\n\n\t// Create a Pulumi provider mapping\n\tprov := tfbridge.ProviderInfo{\n        ...\n\t\tGolang: \u0026tfbridge.GolangInfo{\n\t\t\tImportBasePath: filepath.Join(\n\t\t\t\tfmt.Sprintf(\"github.com/pulumiverse/pulumi-%[1]s/sdk/\", mainPkg),\n\t\t\t\ttfbridge.GetModuleMajorVersion(version.Version),\n\t\t\t\t\"go\",\n\t\t\t\tmainPkg,\n\t\t\t),\n            ...\n\t\t},\n        ...\n\t}\n    ...\n}\n```\n\n### Nuget\n\n#### Administration\n\nNuget doesn't have the notion of an organization or team account. A separate\nuser account `pulumiverse` is the owner of all .NET packages published\nunder the Pulumiverse wings.\n\nThe credentials to access this user account are shared securely with the\nmembers of the Pulumi Governance Board.\n\n#### Publish packages\n\nTo publish Nuget packages, the base namespace must be set correctly configured.\nFor Pulumi packages, set the namespace in the `schema.json` file:\n\n```json\n{\n    ...\n    \"language\": {\n        \"csharp\": {\n            \"rootNamespace\": \"Pulumiverse\",\n            ...\n        }\n    }\n}\n```\n\nFor a Terraform bridged provider, add this to `resources.go`:\n\n```go\nfunc Provider() tfbridge.ProviderInfo {\n    ...\n\n\t// Create a Pulumi provider mapping\n\tprov := tfbridge.ProviderInfo{\n        ...\n\t\tCSharp: \u0026tfbridge.CSharpInfo{\n\t\t\tRootNamespace: \"Pulumiverse\",\n            ...\n\t\t},\n        ...\n\t}\n    ...\n}\n```\n\n## Cloudflare\n\n**Status:** Manual\n\n* DNS hosting of `pulumiverse.com`\n\n## Pulumi Service\n\n**Status:** Manual\n\nMembership to https://app.pulumi.com/pulumiverse is managed manually, given there\ncurrently is no Pulumi provider to their own platform. This is requested as \n[#18](https://github.com/pulumi/service-requests/issues/18) and `in development`\naccording the [public roadmap](https://github.com/orgs/pulumi/projects/44).\n\nWe will start using the provider once the first release becomes available.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulumiverse%2Finfra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulumiverse%2Finfra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulumiverse%2Finfra/lists"}