Do you want to contribute to Pulumi? Awesome! We are so happy to have you. We have a few tips and housekeeping items to help you get up and running.
Please make sure to read and observe our Code of Conduct
Please read about our contribution guidelines here.
Please refer to the main Pulumi repo's CONTRIBUTING.md file for details on how to get set up with Pulumi.
You must generate and check in the SDKs on each pull request containing a code change, e.g. adding a new resource override to provider/resource_overrides.go.
- Run
make schema && make providerto regenerate schema artifacts and the provider binary. - Run
make build_sdksfrom the root of this repository (this regenerates SDK artifacts as needed). - Open a pull request containing all changes.
- Note: If a large number of seemingly-unrelated diffs are produced by
make build_sdks(for example, lots of changes to comments unrelated to the change you are making), ensure that the latest dependencies for the provider are installed by runninggo mod tidyin theprovider/directory of this repository.
For most provider-code changes, run this loop before opening a pull request:
make lintmake test_provider- If schema-affecting files changed (for example
provider/resources.go, override files, overlays, or token mappings), also run:make schemamake build_sdks
If you are using an AI coding assistant:
- Read
AGENTS.mdfirst. - Keep changes scoped and avoid unrelated refactors.
- Do not manually edit generated files under
sdk/. - Include exact validation commands and outcomes in the pull request description.
Upstream patches add recurring upgrade cost and can create behavior that Pulumi
must maintain indefinitely. Before contributing one, follow
docs/upstream-patches.md for patch policy and
Pulumi AWS-specific tracking, test, CI, and AWS safety requirements. Use the
upstream-patches skill for patch mechanics.
Do not treat a patch applying cleanly as sufficient validation.
See TESTING.md to choose the lowest-cost test that proves the behavior, use the repository's test helpers, and run focused tests.
The examples/ package mixes live AWS tests, recorded provider-upgrade tests, and local checks. Do not run unfiltered make test unless you intend to run the full acceptance suite. For a live test, configure Pulumi with AWS, set AWS_REGION, inspect the fixture and cleanup path, and run only the named test. Failed cleanup may require manual removal of AWS resources.
aws iam list-policies --scope AWS | jq -f docs/generate-iam-policies.jq -r > policies.goCopy the content of policies.go and insert into the iam_managed_policy.go file, merging with any existing manual changes. If policies have been removed, we should keep them but mark them as deprecated.
Keeping the pulumi-terraform-aws dependency up-to-date involves updating the ./upstream Git sub-module, resolving
patch conflicts, adjusting provider overrides and token mappings, and re-generating the SDKs. For a fully worked
example, to update to v5.60.0 (actual update in #4309):
git branch upstream-v5.60.0 && git checkout upstream-v5.60.0
./scripts/upstream.sh checkout
./scripts/upstream.sh rebase -o v5.60.0
# in ./rebase finish the Git rebase and resolve conflicts
(cd ./upstream && go build ./...) # verify everything builds
# add commits as needed to make it build
./scripts/upstream.sh check_in
git add ./patches && git commit -m "Update patches for v5.60.0"
(cd upstream && git reset --hard v5.60.0)
git add ./upstream && git commit -m "Move upstream to v5.60.0"
./scripts/upstream.sh init -f # verify patches apply cleanly with no changes
./scripts/tidy-all.sh
git add . && git commit -m "./scripts/tidy-all.sh"
make tfgen # iterate on editing provider overrides and token mappings as needed
git add . && git commit -m "make tfgen"
make build_sdks && git add . && git commit -m "make build_sdks"