Coder Social home page Coder Social logo

coxley / grpckit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from grpckit/grpckit

0.0 0.0 0.0 244 KB

grpckit is your docker swiss army knife for grpc and protobuf generation

License: BSD 3-Clause "New" or "Revised" License

Shell 9.39% Makefile 1.25% Dockerfile 32.80% Earthly 56.57%

grpckit's Introduction

gRPC/Protocol Buffers Containerized Toolkit

This repo builds a docker container for the protoc command line utility, several gRPC plugins, and several grpc tools. It is meant to provide a swiss army knife docker container for all your gRPC needs. In multi-team environments this is essential to provide specific configurations to teammates and your CICD pipeline.

It is recommended to use this with grpckit/omniproto. omniproto lets you declare your gRPC generation declartively. This repo builds a docker container for grpckit and omniproto as an entrypoint.

Features

  • Docker images for:

    • grpckit a default container with all the goodies. No cmd, args, or entrypoint defined.
    • protoc with grpckit/protoc grpckit/omniproto
    • buf, containing the buf.buildtoolkit.
    • omniproto, to generate protos with omniproto

It is recommended to use omniproto:

docker run -v $(pwd):/workspace --rm grpckit/omniproto

Supported plugins

If you're having trouble, see Docker troubleshooting below.

Tag Conventions

A tag pattern of <GRPC_VERSION>_<CONTAINER_VERSION> is used for all images. Example is grpckit/omniproto:1.28_0 for gRPC version 1.28. The _0 suffix allows for inter-grpc releases as necessary. The latest tag will always point to the most recent version.

It is highly recommend to pin to a specific gRPC version in your toolchain for repeatable builds.

Protorepo Includes

Unlike the original namely/docker-protoc, this repo does not include extraneous proto files like the Google APIs, or protos from plugin binaries like validator. These protos should be included with your source protos, preferably in a protorepo (a monorepo for protofiles) that's submoduled into your project. In practice, assuming the system has proto files available outside the standard protobuf files fails, so it's best to be explicit.

The omniproto command line repo has a simple makefile script to apply protofiles from other repos easily.

Contributing

If you make changes, or add a container for another language compiler, this repo has simple scripts that can build projects. You can run the following within the all/ folder:

$ make build

This will build all of the known containers.

$ make push

This will build and push the containers to the org specified in variables.sh.

grpckit's People

Contributors

aldelucca1 avatar bobbytables avatar briantenazas avatar charandas avatar codyaray avatar coxley avatar cristianovagos avatar esilkensen avatar gnagel avatar gxb5443 avatar henryguillen avatar ido-namely avatar jan25 avatar johnnymo87 avatar jonathanburns avatar macat avatar mdkess avatar mhamrah avatar michaltrmac avatar mycaddev avatar nycdotnet avatar pbstriker38 avatar petermcneely avatar poopoothegorilla avatar seeruk avatar shiena avatar shkolnik avatar shraykay avatar sovietaced avatar spoonscen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.