153 lines
6.6 KiB
Markdown
153 lines
6.6 KiB
Markdown
|
# Contributing
|
||
|
|
||
|
1. Sign one of the contributor license agreements below.
|
||
|
1. `go get golang.org/x/review/git-codereview` to install the code reviewing tool.
|
||
|
1. You will need to ensure that your `GOBIN` directory (by default
|
||
|
`$GOPATH/bin`) is in your `PATH` so that git can find the command.
|
||
|
1. If you would like, you may want to set up aliases for git-codereview,
|
||
|
such that `git codereview change` becomes `git change`. See the
|
||
|
[godoc](https://godoc.org/golang.org/x/review/git-codereview) for details.
|
||
|
1. Should you run into issues with the git-codereview tool, please note
|
||
|
that all error messages will assume that you have set up these
|
||
|
aliases.
|
||
|
1. Get the cloud package by running `go get -d cloud.google.com/go`.
|
||
|
1. If you have already checked out the source, make sure that the remote git
|
||
|
origin is https://code.googlesource.com/gocloud:
|
||
|
|
||
|
git remote set-url origin https://code.googlesource.com/gocloud
|
||
|
1. Make sure your auth is configured correctly by visiting
|
||
|
https://code.googlesource.com, clicking "Generate Password", and following
|
||
|
the directions.
|
||
|
1. Make changes and create a change by running `git codereview change <name>`,
|
||
|
provide a commit message, and use `git codereview mail` to create a Gerrit CL.
|
||
|
1. Keep amending to the change with `git codereview change` and mail as your receive
|
||
|
feedback. Each new mailed amendment will create a new patch set for your change in Gerrit.
|
||
|
|
||
|
## Integration Tests
|
||
|
|
||
|
In addition to the unit tests, you may run the integration test suite.
|
||
|
|
||
|
To run the integrations tests, creating and configuration of a project in the
|
||
|
Google Developers Console is required.
|
||
|
|
||
|
After creating a project, you must [create a service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount).
|
||
|
Ensure the project-level **Owner**
|
||
|
[IAM role](console.cloud.google.com/iam-admin/iam/project) role is added to the
|
||
|
service account. Alternatively, the account can be granted all of the following roles:
|
||
|
- **Editor**
|
||
|
- **Logs Configuration Writer**
|
||
|
- **PubSub Admin**
|
||
|
|
||
|
Once you create a project, set the following environment variables to be able to
|
||
|
run the against the actual APIs.
|
||
|
|
||
|
- **GCLOUD_TESTS_GOLANG_PROJECT_ID**: Developers Console project's ID (e.g. bamboo-shift-455)
|
||
|
- **GCLOUD_TESTS_GOLANG_KEY**: The path to the JSON key file.
|
||
|
- **GCLOUD_TESTS_API_KEY**: Your API key.
|
||
|
|
||
|
Firestore requires a different project and key:
|
||
|
|
||
|
- **GCLOUD_TESTS_GOLANG_FIRESTORE_PROJECT_ID**: Developers Console project's ID
|
||
|
supporting Firestore
|
||
|
- **GCLOUD_TESTS_GOLANG_FIRESTORE_KEY**: The path to the JSON key file.
|
||
|
|
||
|
Install the [gcloud command-line tool][gcloudcli] to your machine and use it
|
||
|
to create some resources used in integration tests.
|
||
|
|
||
|
From the project's root directory:
|
||
|
|
||
|
``` sh
|
||
|
# Set the default project in your env.
|
||
|
$ gcloud config set project $GCLOUD_TESTS_GOLANG_PROJECT_ID
|
||
|
|
||
|
# Authenticate the gcloud tool with your account.
|
||
|
$ gcloud auth login
|
||
|
|
||
|
# Create the indexes used in the datastore integration tests.
|
||
|
$ gcloud preview datastore create-indexes datastore/testdata/index.yaml
|
||
|
|
||
|
# Create a Google Cloud storage bucket with the same name as your test project,
|
||
|
# and with the Stackdriver Logging service account as owner, for the sink
|
||
|
# integration tests in logging.
|
||
|
$ gsutil mb gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
|
||
|
$ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
|
||
|
|
||
|
# Create a PubSub topic for integration tests of storage notifications.
|
||
|
$ gcloud beta pubsub topics create go-storage-notification-test
|
||
|
|
||
|
# Create a Spanner instance for the spanner integration tests.
|
||
|
$ gcloud beta spanner instances create go-integration-test --config regional-us-central1 --nodes 1 --description 'Instance for go client test'
|
||
|
# NOTE: Spanner instances are priced by the node-hour, so you may want to delete
|
||
|
# the instance after testing with 'gcloud beta spanner instances delete'.
|
||
|
|
||
|
|
||
|
```
|
||
|
|
||
|
Once you've set the environment variables, you can run the integration tests by
|
||
|
running:
|
||
|
|
||
|
``` sh
|
||
|
$ go test -v cloud.google.com/go/...
|
||
|
```
|
||
|
|
||
|
## Contributor License Agreements
|
||
|
|
||
|
Before we can accept your pull requests you'll need to sign a Contributor
|
||
|
License Agreement (CLA):
|
||
|
|
||
|
- **If you are an individual writing original source code** and **you own the
|
||
|
intellectual property**, then you'll need to sign an [individual CLA][indvcla].
|
||
|
- **If you work for a company that wants to allow you to contribute your
|
||
|
work**, then you'll need to sign a [corporate CLA][corpcla].
|
||
|
|
||
|
You can sign these electronically (just scroll to the bottom). After that,
|
||
|
we'll be able to accept your pull requests.
|
||
|
|
||
|
## Contributor Code of Conduct
|
||
|
|
||
|
As contributors and maintainers of this project,
|
||
|
and in the interest of fostering an open and welcoming community,
|
||
|
we pledge to respect all people who contribute through reporting issues,
|
||
|
posting feature requests, updating documentation,
|
||
|
submitting pull requests or patches, and other activities.
|
||
|
|
||
|
We are committed to making participation in this project
|
||
|
a harassment-free experience for everyone,
|
||
|
regardless of level of experience, gender, gender identity and expression,
|
||
|
sexual orientation, disability, personal appearance,
|
||
|
body size, race, ethnicity, age, religion, or nationality.
|
||
|
|
||
|
Examples of unacceptable behavior by participants include:
|
||
|
|
||
|
* The use of sexualized language or imagery
|
||
|
* Personal attacks
|
||
|
* Trolling or insulting/derogatory comments
|
||
|
* Public or private harassment
|
||
|
* Publishing other's private information,
|
||
|
such as physical or electronic
|
||
|
addresses, without explicit permission
|
||
|
* Other unethical or unprofessional conduct.
|
||
|
|
||
|
Project maintainers have the right and responsibility to remove, edit, or reject
|
||
|
comments, commits, code, wiki edits, issues, and other contributions
|
||
|
that are not aligned to this Code of Conduct.
|
||
|
By adopting this Code of Conduct,
|
||
|
project maintainers commit themselves to fairly and consistently
|
||
|
applying these principles to every aspect of managing this project.
|
||
|
Project maintainers who do not follow or enforce the Code of Conduct
|
||
|
may be permanently removed from the project team.
|
||
|
|
||
|
This code of conduct applies both within project spaces and in public spaces
|
||
|
when an individual is representing the project or its community.
|
||
|
|
||
|
Instances of abusive, harassing, or otherwise unacceptable behavior
|
||
|
may be reported by opening an issue
|
||
|
or contacting one or more of the project maintainers.
|
||
|
|
||
|
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
|
||
|
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
|
||
|
|
||
|
[gcloudcli]: https://developers.google.com/cloud/sdk/gcloud/
|
||
|
[indvcla]: https://developers.google.com/open-source/cla/individual
|
||
|
[corpcla]: https://developers.google.com/open-source/cla/corporate
|