Collect and view aggregated goss test results from
multiple remote goss servers.
gossboss can be used as a CLI or as a server.
gossboss healthzs collects goss test results from multiple goss servers
and reports their results:
gossboss healthzs \
--servers "http://foo.com/healthz" \
--servers "http://bar.com/healthz"
✘ http://foo.com/healthz
✘ http://bar.com/healthz
Error: Goss test failed
gossboss serve starts a server whose /healthzs endpoint returns aggregated
goss test results from multiple goss servers:
gossboss serve \
--servers "http://foo.com/healthz" \
--servers "http://bar.com/healthz"
2021/03/28 06:22:10 Starting server on :8085
View the goss test results from each server in aggregate via gossboss's
/healthzs endpoint:
$ curl localhost:8085/healthzs | jq
{
"Healthzs": [
{
"Result": {
"results": [
{
"successful": false,
"resource-id": "tcp://google.com:443",
"resource-type": "Addr",
"title": "",
"meta": null,
"test-type": 0,
"result": 1,
"property": "reachable",
"err": null,
"expected": [
"true"
],
"found": [
"false"
],
"human": "Expected\n <bool>: false\nto equal\n <bool>: true",
"duration": 503511341,
"summary-line": "Addr: tcp://google.com:443: reachable:\nExpected\n <bool>: false\nto equal\n <bool>: true"
}
],
"summary": {
"test-count": 1,
"failed-count": 1,
"total-duration": 503801507
},
"summary-line": ""
},
"URL": "http://foo.com/healthz",
"Error": null
},
{
"Result": {
"results": [
{
"successful": false,
"resource-id": "tcp://google.com:443",
"resource-type": "Addr",
"title": "",
"meta": null,
"test-type": 0,
"result": 1,
"property": "reachable",
"err": null,
"expected": [
"true"
],
"found": [
"false"
],
"human": "Expected\n <bool>: false\nto equal\n <bool>: true",
"duration": 503326591,
"summary-line": "Addr: tcp://google.com:443: reachable:\nExpected\n <bool>: false\nto equal\n <bool>: true"
}
],
"summary": {
"test-count": 1,
"failed-count": 1,
"total-duration": 503626800
},
"summary-line": ""
},
"URL": "http://bar.com/healthz",
"Error": null
}
],
"Summary": {
"failed-count": 2,
"errored-count": 0
}
}
To test and build gossboss:
make
GitHub Actions builds and publishes
approved
releases using
goreleaser from gossboss's main branch.
Alternatively, to manually release...
Create a release tag corresponding to the Makefile's VERSION variable's value:
make tag
Build and publish a release:
make release
- service discovery (could
gossbossbe extensible to support the discovery of goss server URLs via a cloud provider API?) - failure notifications (Slack, PagerDuty, SMS, webhook, etc.)
- configuration file support (could
gossbossbe configured via a TOML or YAML file rather than command line flags?)