Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BLD] Update Golang README and Makefile for generating protobuf dependencies #3344

Merged
merged 3 commits into from
Jan 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
go/bin/
go/**/testdata/
go/coordinator/bin/
go/pkg/proto/

clients/js/package-lock.json

Expand Down
3 changes: 2 additions & 1 deletion go/Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
.PHONY: build test lint clean docker proto log_db_clean log_db_generate log_db_migration

PROTOC_BIN_PATH=$(if $(shell which protoc),$(shell which protoc),"${GOPATH}/bin/protoc")
PROTOC_GEN_GO_BIN_PATH := $(if $(shell which protoc-gen-go),$(shell which protoc-gen-go),"${GOPATH}/bin/protoc-gen-go")
PROTOC_GEN_GO_GRPC_BIN_PATH := $(if $(shell which protoc-gen-go-grpc),$(shell which protoc-gen-go-grpc),"${GOPATH}/bin/protoc-gen-go-grpc")

proto:
@echo "Generating gRPC code for Golang..."
@mkdir -p pkg/proto/coordinatorpb pkg/proto/logservicepb
@protoc \
@$(PROTOC_BIN_PATH) \
-I../idl/ \
--go_out=pkg/proto/coordinatorpb \
--go_opt paths=source_relative \
Expand Down
42 changes: 30 additions & 12 deletions go/README.md
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.
Loading