Compatip it's a simple tool to ensure compatibility between microservices.
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.
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.
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.
HTTP (GET verb) request to the service:
Extracting the version from json:
Server response:
{
"app": {
"version" : "v1.3.24"
}
}gRPC request to the service:
Due to the nature the protobuf the service should answer with this very same message format.
message VersionMessage {
string version = 1;
}
Assert exact version:
Assert version range:
Greater than 1.2:
Greater than 1.2 and lower than 1.4:
Incompatible range:
To install, use go get:
$ go get -d github.com/jmartin82/jmartin82You 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 | bashRequired go version: 1.12+
go get github.com/jmartin82/compatipYou can manually download a DEB and RPM packages release from the release page
sudo dpkg -i compatip_XXX_linux_amd64.debOR
sudo rpm –i compatip_XXX_linux_amd64.rpm- Fork (https://github.com/jmartin82/compatip/fork)
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Run test suite with the
go test ./...command and confirm that it passes - Run
gofmt -s - Create a new Pull Request
Copyright © 2019, Jordi Martín (http://jordi.io)
Released under MIT license, see LICENSE for details.






