-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[BLD] Update Golang README and Makefile for generating protobuf depen…
…dencies (#3344) ## Description of changes These are all improvements to the local development environment, specifically for our Golang code. We recently removed generated protobuf files from the repository (see #3222). This resulted in needing to build these for my IDE to be happy. I eventually fixed what was a painful experience getting all this set up, so I added some details about getting it set up in the `README.md` and tweaked one thing in the `Makefile` for consistency with the other dependencies. Note: there is some noise in the `README.md` diff that is from my linter. We also weren't ignoring generated files, so I added them to `.gitignore` so they don't get re-added accidentally. ## Test plan Run `make build` - [x] Tests pass locally with `pytest` for python, `yarn test` for js, `cargo test` for rust
- Loading branch information
Showing
2 changed files
with
32 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,37 @@ | ||
# Set up Local Postgres | ||
# Chroma Golang Codebase | ||
|
||
## Set up Local Postgres | ||
|
||
- Install Postgres on Mac | ||
- `brew install postgresql@14` | ||
- `brew install postgresql@14` | ||
- Start & Stop | ||
- `brew services start postgresql` | ||
- `brew services stop postgresql` | ||
- `brew services start postgresql` | ||
- `brew services stop postgresql` | ||
- create testing db | ||
- terminal: `psql postgres` | ||
- postgres=# `create role chroma with login password 'chroma';` | ||
- postgres=# `alter role chroma with superuser;` | ||
- postgres=# `create database chroma;` | ||
- terminal: `psql postgres` | ||
- postgres=# `create role chroma with login password 'chroma';` | ||
- postgres=# `alter role chroma with superuser;` | ||
- postgres=# `create database chroma;` | ||
- Set postgres ENV Vars | ||
Several tests (such as record_log_service_test.go) require the following environment variables to be set: | ||
- `export POSTGRES_HOST=localhost` | ||
- `export POSTGRES_PORT=5432` | ||
- `export POSTGRES_HOST=localhost` | ||
- `export POSTGRES_PORT=5432` | ||
- Atlas schema migration | ||
- [~/chroma/go]: `atlas migrate diff --env dev` | ||
- [~/chroma/go]: `atlas --env dev migrate apply --url "postgres://chroma:chroma@localhost:5432/chroma?sslmode=disable"` | ||
- [~/chroma/go]: `atlas migrate diff --env dev` | ||
- [~/chroma/go]: `atlas --env dev migrate apply --url "postgres://chroma:chroma@localhost:5432/chroma?sslmode=disable"` | ||
|
||
## Building | ||
|
||
The biggest challenge to getting the project to build correctly is ensuring you have the correct versions for Protobuf. Refer to the "source of truth" for the version in `Dockerfile`. Note, you need all three of these: | ||
|
||
- `protoc` | ||
- `protoc-gen-go` | ||
- `protoc-gen-go-grpc` | ||
|
||
You can start by downloading the version of `protoc` from the [release page](https://github.com/protocolbuffers/protobuf/releases). Ensure that you copy the `protoc` binary to `/usr/local/bin` or add it to your `GOPATH/bin`. | ||
|
||
ALSO, ensure you have copied the `/include` directory of the release to `../include` relative to wherever you installed the binary. | ||
|
||
Then, to install the plugins, run the `go install` commands from the `Dockerfile`. The exact commands are not here because we would be duplicating where versions live if we did. The `Dockerfile` is the source of truth for the versions. | ||
|
||
Once those are all installed, you can run `make build` to build the project and most importantly, the generated protobuf files which your IDE will complain about until they are generated. |