Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
Currently Nomad release tags cover only the server module at github.com/hashicorp/nomad. The submodule containing client API github.com/hashicorp/nomad/api is not versioned, which leads to applications consuming the latest from main directly via pseudo-version. Example of this can be seen in Vault go.mod.
Problem:
Using pseudo-version makes it very difficult to address vulnerability alerts from scanners, since it is not clear how the pseudo-version relates to a specific Nomad release. Application using version v0.0.0-20211006193434-215bf04bc650 can be flagged with all historical vulnerabilities.
Application fetching latest from main could theoretically end up using non-working version that was never inteded to be consumed by public.
Proposal:
Add versioning also to github.com/hashicorp/nomad/api submodule. This can be done by adding a second release tag which is prefixed with the submodule path. v1.2.6 becomes api/v1.2.6. Tagging submodules is described in go documentation.
Currently Nomad release tags cover only the server module at
github.com/hashicorp/nomad
. The submodule containing client APIgithub.com/hashicorp/nomad/api
is not versioned, which leads to applications consuming the latest frommain
directly via pseudo-version. Example of this can be seen in Vaultgo.mod
.Problem:
v0.0.0-20211006193434-215bf04bc650
can be flagged with all historical vulnerabilities.main
could theoretically end up using non-working version that was never inteded to be consumed by public.Proposal:
Add versioning also to
github.com/hashicorp/nomad/api
submodule. This can be done by adding a second release tag which is prefixed with the submodule path.v1.2.6
becomesapi/v1.2.6
. Tagging submodules is described in go documentation.