Thank you for your contribution to grpc-gateway. Here's the recommended process of contribution.
go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway
- hack, hack, hack...
- Make sure that your change follows best practices in Go
- Make sure that
go test ./...
passes. - Sign a Contributor License Agreement
- Open a pull request in GitHub
When you work on a larger contribution, it is also recommended that you get in touch with us through the issue tracker.
All submissions, including submissions by project members, require review.
It should be as simple as this (run from the root of the repository):
docker run -v $(pwd):/src/grpc-gateway --rm docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env:1.15 \
/bin/bash -c 'cd /src/grpc-gateway && \
make realclean && \
make examples && \
make testproto'
docker run -itv $(pwd):/grpc-gateway -w /grpc-gateway --entrypoint /bin/bash --rm \
l.gcr.io/google/bazel -c '\
bazel run :gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories && \
bazel run :gazelle && \
bazel run :buildifier'
You may need to authenticate with GitHub to pull docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env
.
You can do this by following the steps on the GitHub Package docs.
This repo contains a devcontainer.json
configuration that sets up the build environment in a container using
VS Code dev containers. If you're using the dev container,
you can run the commands directly in your terminal:
$ make realclean && make examples && make testproto
$ bazel run :gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories && \
bazel run :gazelle && \
bazel run :buildifier
Note that the above listed docker commands will not work in the dev container, since volume mounts from nested docker container are not possible.
If this has resulted in some file changes in the repo, please ensure you check those in with your merge request.
To make a release, follow these steps:
- Decide on a release version. The
gorelease
job can recommend whether the new release should be a patch or minor release. See CircleCI for an example. - Generate a GitHub token with
repo
access. - Create a new branch and edit the Makefile
changelog
job, settings thefuture-release=
variable to the name of the version you plan to release - Run
CHANGELOG_GITHUB_TOKEN=<yourtoken> make changelog
- Commit the
Makefile
andCHANGELOG.md
changes. - Open a PR and check that everything looks right.
- Merge the PR.
- Tag the release on
master
, the tag should be made against the commit you just merged.- The release can be created using the command line, or also through GitHub's releases UI.
- If you create a release using the web UI you can publish it as a draft and have it reviewed by another maintainer.
- (Optional) Delete your GitHub token again.
- (Required) Sit back and pat yourself on the back for a job well done 👏.