Skip to content


Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time


Build Status Azure Pipelines coverage

cnab-go is a library for building CNAB clients. It provides the building blocks relevant to the CNAB specification so that you may build tooling without needing to implement all aspects of the CNAB specification.

cnab-go is currently being used by Docker App, Duffle, and Porter. If you'd like to see your CNAB project listed here, please submit a PR.


cnab-go is maintained by the CNAB community. We sometimes discuss cnab-go issues during the bi-weekly CNAB community meeting, but we encourage open communication via our issue queue and via PRs. If you are interested in contributing to cnab-go, please refer to our contributing guidelines.


Getting the code

Cloning this repository and change directory to it:

$ go get -d
$ cd $(go env GOPATH)/src/


You need:

  • make
  • Go

Get dependencies

Retrieve all needed packages to start developing. This will download the binaries for the linter, dep and go imports in the end it will run dep ensure to download all the go package dependencies

$ make bootstrap

Building, testing and linting

Compile all the code:

$ make build

Run unit tests:

$ make test

Run integration tests:

Note: The integration tests use a local docker daemon to create containers. Please ensure you have one configured before running the tests.

$ make integration-test

This will only run the linter to ensure the code meet the standard. It does not format the code

$ make lint