Comments (9)
i've no clue about bazel, but i'm think that shouldn't be a hard work to get going.
It's not hard work, but neither is it exactly easy.
I think there are really two use cases to consider:
- library consumers
- library contributors
For (1) I think it's pretty important to keep bazel out of the mix, for reasons we've previously discussed (TL;DR go libs should play nice with the standard go toolchain), so I'd definitely advocate for checking in the generated code, and considering it part of the library.
For (2), I think you can make the claim that the generated code should only change when something in data-plane-api
changes; might it makes sense to make code generation part of that build/check-in process, producing a package that can then be vendored by go-control-plane
? That keeps the bazelness associated with api changes constrained to a place that already requires it.
Just my 2¢.
from go-control-plane.
Relevant read:
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/protobuf.md
- https://github.com/alecthomas/go_serialization_benchmarks
from go-control-plane.
from go-control-plane.
@kyessenov check out the protobuild package. docker swarm using the same approach as well.
example implementation https://github.com/containerd/containerd
from go-control-plane.
looks like a much cleaner interface.
from go-control-plane.
@roadrunner envoy API is using bazel for canonical build system. so all the gogoproto annotations and codegen will need to be wired through bazel (for better or worse).
from go-control-plane.
@kyessenov, in my company, we use makefile pretty much for all stuff like the build / test / gen.
i've no clue about bazel, but i'm think that shouldn't be a hard work to get going.
as long as proto files are not changed, you don't need to invoke the generation process.
generating go code from the proto files might be done manually, ie: make protos
or go list ./... | grep -v vendor | xargs protobuild
some developers prefer the generation process manually, like;
(re)generate -> modify -> check-in -> release
others preferer CI pipelines, like;
modify protos -> check-in -> (ci hooks) (re)generate -> auto commit / tag generated
from go-control-plane.
from go-control-plane.
I encourage folks to add gogoproto annotations in data-plane-api where it makes sense (e.g. nullable
, stdduration
). I didn't do a full revision, but things will be discovered as we use xDS.
The generation script is mostly automated. I can run it once in awhile manually, since it's fairly simple. Doing automatic multi-repo sync is painful, as we observed first-hand in istio.
from go-control-plane.
Related Issues (20)
- Go apis are currently being built by gcc
- Add MaxMind GeoIP Provider HOT 4
- Sync is now broken HOT 1
- Issue with Handling HttpConnectionManager as ConfigDiscovery HOT 3
- Expose vtprotobuf generation HOT 7
- Outlier detection event log HOT 1
- Add support for async_fetch in remote_jwks in Request Authentication HOT 1
- sotw server impossible to send the eds configuration. HOT 3
- Release schedule for this project? HOT 8
- Support new xds protocol behavior regarding wildcard HOT 2
- This instruction no longer works -> https://github.com/envoyproxy/go-control-plane/blob/main/internal/example/README.md HOT 1
- Deadlock in Delta XDS if number of resources is more than 10 HOT 10
- Excessive Memory Consumption in EnvoyProxy During Continuous snapshot updates for the same node HOT 4
- Is it possible to create a static layer? HOT 3
- How to avoid deprecated warning message for regex matcher? HOT 3
- Not all traces are sent to Zipkin HOT 5
- Goroutine leak in DeltaStreamHandler
- Snapshot with empty version HOT 2
- VHDS not working for me HOT 6
- Support ext_authz: Added support for populating the tls_session for extensions.filters.network.ext_authz.v3.ExtAuthz HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-control-plane.