All Projects → jmartin82 → compatip

jmartin82 / compatip

Licence: other
A simple tool to ensure compatibility between microservices

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to compatip

Go Grpc Example
An example of gRPC
Stars: ✭ 153 (+1076.92%)
Mutual labels:  protobuf, grpc
Rules proto
Modern bazel build rules for protobuf / gRPC
Stars: ✭ 179 (+1276.92%)
Mutual labels:  protobuf, grpc
Kratos
A modular-designed and easy-to-use microservices framework in Go.
Stars: ✭ 15,844 (+121776.92%)
Mutual labels:  protobuf, grpc
Gf Cli
GoFrame Command Line Interface, which is your helpmate for building GoFrame application with convenience.
Stars: ✭ 143 (+1000%)
Mutual labels:  protobuf, grpc
Istio Micro
istio 微服务示例代码 grpc+protobuf+echo+websocket+mysql+redis+kafka+docker-compose
Stars: ✭ 194 (+1392.31%)
Mutual labels:  protobuf, grpc
Grpc Cmake Example
gRPC C++ example with CMake
Stars: ✭ 142 (+992.31%)
Mutual labels:  protobuf, grpc
Makeaplan public
【制定一个计划】是一个目标规划应用,通过最直接,最清晰的方式帮助你记录和追踪自己的计划,辅助你达成自己的目标。
Stars: ✭ 174 (+1238.46%)
Mutual labels:  protobuf, grpc
Protoc Gen Map
SQL Data mapper framework for grpc/protobuf
Stars: ✭ 112 (+761.54%)
Mutual labels:  protobuf, grpc
Grpc Kotlin
gRPC with Kotlin Coroutines
Stars: ✭ 190 (+1361.54%)
Mutual labels:  protobuf, grpc
Buildbuddy
BuildBuddy is an open source Bazel build event viewer, result store, and remote cache.
Stars: ✭ 182 (+1300%)
Mutual labels:  protobuf, grpc
Cmakeprotosgrpc
gRPC + protobuf using CMake example
Stars: ✭ 137 (+953.85%)
Mutual labels:  protobuf, grpc
Clay
Proto-first minimal server platform for gRPС+REST+Swagger APIs
Stars: ✭ 212 (+1530.77%)
Mutual labels:  protobuf, grpc
Almost Famous
🌟 Almost-Famous(成名之路) ——卡牌游戏开源项目,架构使用SpringBoot+Netty+Maven+SpringCloud来搭建多进程分布式框架,包括Cloud、Unique、Login、Game、Match、Battle 等服务。
Stars: ✭ 131 (+907.69%)
Mutual labels:  protobuf, grpc
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (+1030.77%)
Mutual labels:  protobuf, grpc
Protoeasy Go
Simpler usage of protoc. Deprecated.
Stars: ✭ 129 (+892.31%)
Mutual labels:  protobuf, grpc
Flutter Grpc Tutorial
[Tutorial] Asynchronous Flutter chat client with Go chat server which are powered by gRPC (simple and streaming)
Stars: ✭ 167 (+1184.62%)
Mutual labels:  protobuf, grpc
Benchmark Grpc Protobuf Vs Http Json
Benchmarks comparing gRPC+Protobuf vs JSON+HTTP in Go
Stars: ✭ 106 (+715.38%)
Mutual labels:  protobuf, grpc
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (+723.08%)
Mutual labels:  protobuf, grpc
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (+1284.62%)
Mutual labels:  protobuf, grpc
Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (+1484.62%)
Mutual labels:  protobuf, grpc

Compatip Build Status codecov

Compatip it's a simple tool to ensure compatibility between microservices.

Description

Compatip has been designed as a part of the checks that you should run in your CI/CD pipeline.

With Compatip you can specify the service you want to check and the version constraints you would like to validate. In case of incompatibility, the application will fail with a recognizable error code.

So far, Compatip supports REST and gRPC+Protobuf communications, Semver semantics (MAJOR.MINOR.PATCH) to ensure the compatibility between services and it's also able to use JSON dot notation to extract the version from the service response.

TL;DR

CMD assert version

Usage

Check Command

Checks the current version of the service.

Example: compatip check --jsonpath app.version http://myservice:8080/version.json

Exit codes:

0: All Ok.
2: Input argument error.
3: Error on server communication.
4: Invalid version response.

Assert Command

Asserts the current version of the service with the specified constraints.

Example: compatip assert grpc://myservice:50051/rpc/versionservice/current ">1.4.10"

Exit codes:

0: All Ok.
1: Incompatible service version.
2: Input argument error.
3: Error on server communication.
4: Invalid version response.

Examples

Check service version

HTTP (GET verb) request to the service:

CMD check version

Extracting the version from json:

Server response:

{
   "app": {
      "version" : "v1.3.24"
   }
}

CMD check version

gRPC request to the service:

CMD check version

Due to the nature the protobuf the service should answer with this very same message format.

message VersionMessage {
  string version = 1;
}

Assert service version

Assert exact version:

CMD assert version

Assert version range:

Greater than 1.2:

CMD assert version

Greater than 1.2 and lower than 1.4:

CMD assert version

Incompatible range:

CMD assert version

Install

To install, use go get:

$ go get -d github.com/jmartin82/jmartin82

Installation

Binary Release (Linux/OSX)

You can manually download a binary release from the release page.

Automated install/update, don't forget to always verify what you're piping into bash:

curl https://raw.githubusercontent.com/jmartin82/compatip/master/scripts/install_compatip.sh | bash

Go

Required go version: 1.12+

go get github.com/jmartin82/compatip

DEB and RPM

You can manually download a DEB and RPM packages release from the release page

sudo dpkg -i compatip_XXX_linux_amd64.deb

OR

sudo rpm –i compatip_XXX_linux_amd64.rpm

Contribution

  1. Fork (https://github.com/jmartin82/compatip/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create a new Pull Request

Licence

Copyright © 2019, Jordi Martín (http://jordi.io)

Released under MIT license, see LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].