This is a repo for designing and prototyping a data model and API for an SDLC control plane. The intent of this control plane is to help manage software from development through to publishing. It is intended to provide a centralized platform for handling namespaces, policies, and other essential components that facilitate efficient and secure software development practices.
This project leverages gRPC for high-performance communication and uses Protocol Buffers (Protobufs) for interface definitions, ensuring consistency and interoperability across different services and languages. The RESTful API is exposed via grpc-gateway, allowing HTTP/JSON clients to interact seamlessly with the gRPC services.
The protobufs under proto/
are the source of truth for the API. Everything else like the openapi and Rust example code are based on generated config/code.
The code available is intended to be just some example code and is in no way a production ready SDLC control plane.
Prerequisites:
protoc
for building the protos into the Rust, Go, OpenAPI, etc. code and config.- Buf for protobuf build configuration
- Rust/Cargo for running the grpc server.
- Go for running the grpc-gateway
For generating the gRPC gateway code and OpenAPI schema:
cd proto/
buf generate
For building and running the Rust gRPC server:
cargo run
For building and running the grpc-gateway for HTTP proxying to the Rust gRPC server:
cd go-grpc-gateway
go run
The general workflow for developing is:
- Add or update a protobuf
- Update the
api/mod.rs
file with any new proto imports. - Update the rust code
- Generate the Go code and OpenAPI schema
- Update the
go-grpc-gateway/main.go
file if needed, e.g. if you added a new service