0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 02:31:10 +00:00
terraform-provider-proxmox/CONTRIBUTING.md
2023-06-27 21:46:35 -04:00

78 lines
2.7 KiB
Markdown

# How to contribute
**First:** if you're unsure or afraid of _anything_, ask for help! You can
submit a work in progress (WIP) pull request, or file an issue with the parts
you know. We'll do our best to guide you in the right direction, and let you
know if there are guidelines we will need to follow. We want people to be able
to participate without fear of doing the wrong thing.
Below are our expectations for contributors. Following these guidelines gives us
the best opportunity to work with you, by making sure we have the things we need
in order to make it happen. Doing your best to follow it will speed up our
ability to merge PRs and respond to issues.
## Testing
The project has a handful of test cases which must pass for a contribution to be
accepted. We also expect that you either create new test cases or modify
existing ones in order to target your changes.
You can run all the test cases by invoking `make test`.
## Coding conventions
We expect that all code contributions have been formatted using `gofmt`. You can
run `make fmt` to format your code.
We also expect that all code contributions have been linted
using `golangci-lint`.
You can run `make lint` to lint your code.
## Commit message conventions
We expect that all commit messages follow the
[Conventional Commits](https://www.conventionalcommits.org/) specification.
Please use the `scope` field to indicate the area of the codebase that is being
changed. For example, `vm` for changes in the Virtual Machine resource, or
`lxc` for changes in the Container resource.
Common scopes are:
- `vm` - Virtual Machine resources
- `lxc` - Container resources
- `provider` - Provider configuration and resources
- `core` - Core libraries and utilities
- `docs` - Documentation
- `ci` - Continuous Integration / Actions / GitHub Workflows
Please use lowercase for the description and do not end it with a period.
For example:
```
feat(vm): add support for the `clone` operation
```
## Submitting changes
Please create a new PR against the `main` branch which must be based on the
project's [pull request template](.github/PULL_REQUEST_TEMPLATE.md).
We usually squash all PRs commits on merge, and use the PR title as the commit
message. Therefore, the PR title should follow the
[Conventional Commits](https://www.conventionalcommits.org/) specification as
well.
## Releasing
We use automated release management orchestrated
by https://github.com/googleapis/release-please GitHub Action. The action
creates a new release PR with the changelog and bumps the version based on the
commit messages. The release PR is merged by the maintainers.
The release will be published to the GitHub Releases page and the Terraform
Registry.
We aim to release a new version every 1-2 weeks.