This is a Go-based Pulumi resource provider that bridges the Terraform provider to Pulumi. It generates SDKs for TypeScript/JavaScript, Python, .NET, Go, and Java. The provider uses the Terraform provider as an upstream source via git submodules.
Always use make targets. Never run custom commands unless explicitly instructed.
make build- Build provider and all SDKsmake provider- Build provider binarymake schema- Generate provider schemamake tfgen- Generate SDKs from schemamake upstream- Initialize upstream submodule
make build_sdks- Build all SDK packagesmake build_nodejs- Build TypeScript/Node.js SDKmake build_python- Build Python SDKmake build_dotnet- Build .NET SDKmake build_go- Build Go SDKmake build_java- Build Java SDK
make lint_provider- Lint provider Go codemake test_provider- Run provider unit tests
provider/ -- Go provider implementation
sdk/ -- Generated SDKs (never edit directly)
upstream/ -- Terraform provider submodule
scripts/ -- Build utilities
examples/ -- Example Pulumi programs
.ci-mgmt.yaml -- CI management configuration
Makefile -- Build orchestration
provider/resources.go- Resource definitionsprovider/resources_test.go- Unit tests
- Initialize repository:
make upstream - Make changes in
provider/ - Lint:
make lint_provider - Test:
make test_provider - Build provider:
make provider - Build SDKs:
make build_sdks
- Never work directly in
sdk/folders - All SDK generation is automated throughmake - Never cancel running builds - Builds may take several minutes
- Do not run tests in
examples/- They require cloud credentials and run in CI - Set timeouts to 300+ seconds for build operations
- The GitHub Action checks out the PR head automatically when the event is tied to a PR.
- Use
rgfor search. Avoidcd ... &&in bash; prefergit -C,make -C, or direct paths. - Avoid Python scripts in CI; use
rg,grep,sed, andawkinstead. - Good (CI-safe):
rg "pattern" upstream/git -C upstream log -1make -C provider build
- Bad (will often be blocked in CI):
cd upstream && rg "pattern"cd provider && go test ./...python3 - <<'EOF' ... EOF