We love contributions! You are welcome to open a pull request, but it's a good idea to open an issue and discuss your idea with us first.
Once you are ready to open a PR, please keep the following guidelines in mind:
- Code should be
go fmt
compliant. - Types, structs and funcs should be documented.
- Tests pass.
godo
uses go modules. Just fork this repo, clone your fork and off you go!
When working on code in this repository, tests can be run via:
go test -mod=vendor .
Godo follows semver versioning semantics. New functionality should be accompanied by increment to the minor version number. Any code merged to main is subject to release.
Releasing a new version of godo is currently a manual process.
Submit a separate pull request for the version change from the pull request with your changes.
- Update the
CHANGELOG.md
with your changes. If a version header for the next (unreleased) version does not exist, create one. Include one bullet point for each piece of new functionality in the release, including the pull request ID, description, and author(s). For example:
## [v1.8.0] - 2019-03-13
- #210 - @jcodybaker - Expose tags on storage volume create/list/get.
- #123 - @digitalocean - Update test dependencies
To generate a list of changes since the previous release in the correct format, you can use github-changelog-generator. It can be installed from source by running:
go get -u github.com/digitalocean/github-changelog-generator
Next, list the changes by running:
github-changelog-generator -org digitalocean -repo godo
- Update the
libraryVersion
number ingodo.go
. - Make a pull request with these changes. This PR should be separate from the PR containing the godo changes.
- Once the pull request has been merged, draft a new release.
- Update the
Tag version
andRelease title
field with the new godo version. Be sure the version has av
prefixed in both places. Exv1.8.0
. - Copy the changelog bullet points to the description field.
- Publish the release.
This project follows the support policy of Go as its support policy. The two latest major releases of Go are supported by the project. CI workflows should test against both supported versions. go.mod should specify the oldest of the supported versions to give downstream users of godo flexibility.