New Docker+Buildkit client (#2327)
* partial sdk client, more tests
* note to self
* fix container log multiplexing
The container log output format depends on wether tty is enabled or not.
- when enabled logs are a single stream from stdout
- when not enabled stdout and stderr streams are multiplexed into a single stream with 8 byte headers on each line
* return correct not found error from logs
* test registry helpers for auth, image inspection
* test helpers for image refs, concurrent loads
* api client push, authentication support
* helpers to map backend errors
* fix test for connection refused registry
* fix assertions for both dev and CI
* move user info logic off command, share with api
* move Apt & Tar funcs off command
* lint fixes
* hack mockcommand to fake tar scripts for tests
* fix for apt packages not passing to monobase apt.sh
* return new client if env var present
* import buildkit client, add ImageBuild to api client
* container run, start, stop
* run integration tests for both docker clients
* stop failing fast on integration tests
* lint fixes
* handle cache, contexts, timestamps, and epoch build opts
* fix hang when an error occurs building the solve graph
* buildx secrets, integration test for secrets
* mod tidy
* lint fixes
* format fix
* fix race in mock docker registry port
* integration test for secrets
* move credentials logic off command.Command
the credential stuff isn't tied to the docker client. This moves logic to helper functions that both clients can use
* move CreateTarFile & CreateAptTarFile to helpers
The monobase helpers from command.Command were calling docker run, instead have them call the run functions on the client since the logic doesn't depend on client implementation
* error helpers
helpers to map errors from different backends to known types. needed to support both clients
* more docker integration tests
* Update go.mod
* fix for merge flub and correct new client func name
* remove some code that's only used in the sdk client
* lint fix
* remove debug prints
* bring back auto remove
* fix comments
* set env var so subtests pickup the right client
---------
Signed-off-by: Michael Dwan <m@dwan.io>