2df807abca | ||
---|---|---|
.dependabot | ||
.github | ||
azure | ||
backend | ||
cli | ||
client | ||
compose | ||
config | ||
containers | ||
context | ||
docs/cli | ||
errdefs | ||
example | ||
formatter | ||
local | ||
metrics | ||
multierror | ||
progress | ||
protos | ||
server | ||
tests | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.golangci.yml | ||
CHANGELOG.md | ||
Dockerfile | ||
Makefile | ||
README.md | ||
builder.Makefile | ||
go.mod | ||
go.sum |
README.md
Docker API
Dev Setup
The recommended way is to use the main Makefile
that runs everything inside a container.
If you don't have or want to use Docker for building you need to make sure you have all the needed tools installed locally:
- go 1.14
- protoc
go get github.com/golang/protobuf/protoc-gen-go@v1.4.1
go get golang.org/x/tools/cmd/goimports
go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.26.0
And then you can call the same make targets but you need to pass it the builder.Makefile
(make -f builder.Makefile
).
The new CLI delegates to the classic docker for default contexts ; delegation is done to com.docker.cli
.
make moby-cli-link
will create acom.docker.cli
link in/usr/local/bin
if you don't already have it from Docker Desktop
Building the project
$ make
This will make the cli with all backends enabled. make cross
on the other hand will cross-compile the cli without the
example and local backend. We use make cross
to build for our release, hence the exclusion of those backends. You can
still cross-compile with all backends enabled: BUILD_TAGS=example,local make cross
.
If you make changes to the .proto
files, make sure to make protos
to generate go code.
Tests
To run unit tests:
make test
If you need to update a golden file simply do go test ./... -test.update-golden
.