First, thanks for contributing to Pulumi Service Provider and helping make it better. We appreciate the help! This repository is one of many across the Pulumi ecosystem and we welcome contributions to them all.
Please make sure to read and observe our Contributor Code of Conduct.
You are welcome to join the Pulumi Community Slack for questions and a community of like-minded folks. We discuss features and file bugs on GitHub via Issues as well as Discussions.
Feel free to pick up any existing issue that looks interesting to you or fix a bug you stumble across while using Pulumi Service Provider. No matter the size, we welcome all improvements.
For larger features, we'd appreciate it if you open a new issue before investing a lot of time so we can discuss the feature together. Please also be sure to browse current issues to make sure your issue is unique, to lighten the triage burden on our maintainers. Finally, please limit your pull requests to contain only one feature at a time. Separating feature work into individual pull requests helps speed up code review and reduces the barrier to merge.
Here's a quick list of helpful make commands:
make ensure
, which restores/installs any build dependenciesmake build
, which generates models from provider'sschema.json
, builds the provider and builds all SDKs into thesdk
foldermake install
, which installs Pulumi Service Provider
Ideally, every change should include unit tests, and every new resource a matching example in the examples
folder.
You should also test changes manually using a Pulumi program that uses the updated SDKs. Here are some language-specific hints:
- To import generated Nuget package, use this command inside your Pulumi program
dotnet add package Pulumi.PulumiService -s {your path}/pulumi-pulumiservice/sdk/dotnet/bin/Debug/ -v X.XX.XX
For contributors we use the standard fork based workflow: Fork this repository, create a topic branch, and when ready, open a pull request from your fork.
We require a changelog entry for pretty much all PRs. Add a line in CHANGELOG_PENDING.md
describing your change and link to an issue. See CHANGELOG.md
for examples. In rare cases where your PR is a minor change, like formatting or a typo fix, apply impact/no-changelog-required
label to your PR instead.
Pulumi employees have write access to Pulumi repositories and should push directly to branches rather than forking the repository. Tests can run directly without approval for PRs based on branches rather than forks.
Please ensure that you nest your branches under a unique identifier such as your name (e.g. pulumipus/cool_feature
).
This section is for Pulumi employees only.
To release a new version of the provider, follow the procedure below:
- Create a release
- Run below commands, replacing
X.XX.XX
with your new version. This will use your codefreeze commit as source for the new release.git checkout main git pull git tag sdk/vX.XX.XX git tag vX.XX.XX git push origin vX.XX.XX git push origin sdk/vX.XX.XX
- Github Actions will automatically build, test and then publish the new release to all the various package managers
- Once that is done, you will see your version in Releases
- The version will have a description from
CHANGELOG_PENDING.md
- Run below commands, replacing
- Codefreeze
- Move all the items from
CHANGELOG_PENDING.md
toCHANGELOG.md
, under a new version that you are releasing - Make a PR like this example
- Get an approval and merge it in
- Move all the items from
We're sure there are rough edges and we appreciate you helping out. If you want to talk with other folks in the Pulumi community (including members of the Pulumi team) come hang out in the #contribute
channel on the Pulumi Community Slack.