Commit Graph

70 Commits

Author SHA1 Message Date
Andrea Luzzardi
c08f619b02 Fix local directory error handling
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-10-20 11:38:42 -07:00
Andrea Luzzardi
322997b74a stdlib: docker: clean up docker.#Command inputs
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-10-12 17:10:46 -07:00
Andrea Luzzardi
b2c4fea73d tests: add docker load test
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-10-12 15:39:04 -07:00
Andrea Luzzardi
50d55a8885 op.#SaveImage: export the image ID
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-10-12 15:39:04 -07:00
Andrea Luzzardi
5a1d4bff62 Support loading artifacts into a Docker Engine
This adds support to loading artifacts (e.g. docker.#Build,
os.#Container, ...) into any arbitrary docker engine (through a
dagger.#Stream for UNIX sockets or SSH for a remote engine)

Implementation:
- Add op.#SaveImage which serializes an artifact into an arbitrary path
  (docker tarball format)
- Add docker.#Load which uses op.#SaveImage to serialize to disk and
  executes `docker load` to load it back

Caveats: Because we're doing this in userspace rather than letting
dagger itself load the image, the performance is pretty bad.

The buildkit API is meant for streaming (get a stream of a docker image
pipe it into docker load). Because of userspace, we have to load the
entire docker image into memory, then serialize it in a single WriteFile
LLB operation.

Example:

```cue
package main

import (
	"alpha.dagger.io/dagger"
	"alpha.dagger.io/docker"
)

source: dagger.#Input & dagger.#Artifact

dockersocket: dagger.#Input & dagger.#Stream

build: docker.#Build & {
	"source": source
}

load: docker.#Load & {
	source: build
	tag:    "testimage"
	socket: dockersocket
}
```

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-10-12 14:16:01 -07:00
Richard Jones
d496b77c71
added test for docker run with ports
Signed-off-by: Richard Jones <richard@dagger.io>
2021-09-28 09:33:02 -06:00
Richard Jones
c04ef323d2
cue fmt
Signed-off-by: Richard Jones <richard@dagger.io>
2021-09-27 20:40:55 -06:00
Richard Jones
9f16bcdadb added ports to docker.#Run
Signed-off-by: Richard Jones <richard@dagger.io>
2021-09-27 20:39:28 -06:00
Sam Alba
e757af6706
Merge pull request #980 from VazeeKevin/tasks/docker-args-secrets
Add #Secret type to Docker #Build args
2021-09-23 15:31:03 -07:00
Kevin Poirot
51f96172bd Add #Secret type to Docker #Build args
Signed-off-by: Kevin Poirot <kevin@vazee.fr>
2021-09-23 11:13:59 +02:00
Sam Alba
4ccf030db8 stdlib: tests local docker socket
Signed-off-by: Sam Alba <sam.alba@gmail.com>
2021-09-21 17:21:32 -07:00
Sam Alba
eaa965127a stdlib: added support for local docker socket
Signed-off-by: Sam Alba <sam.alba@gmail.com>
2021-09-21 17:19:00 -07:00
Kevin Poirot
a364307f0e Add test build with args to Docker #Build
Signed-off-by: Kevin Poirot <kevin@vazee.fr>
2021-09-15 10:48:17 +02:00
Kevin Poirot
3e14920062 Update Docker #Build to incorporate image from Dockerfile
Signed-off-by: Kevin Poirot <kevin@vazee.fr>
2021-09-15 08:55:59 +02:00
Kevin Poirot
924fd163eb Add args option to Docker #Build
Signed-off-by: Kevin Poirot <kevin@vazee.fr>
2021-09-13 14:38:20 +02:00
Tom Chauveau
eabf1b52e5
Update docker push tests
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-08-31 14:44:06 +02:00
Tom Chauveau
7cc1c8e5dd
Update docker package according to op.#PushContainer improvement
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-08-31 13:05:22 +02:00
Guillaume de Rouville
ecd409951c docker.#Push: Set auth as optional
Signed-off-by: Guillaume de Rouville <guillaume.derouville@gmail.com>
2021-07-02 01:21:56 +02:00
Tom Chauveau
a4856e7a6b Add new test to docker that push to 2 registry in one plan
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-07-01 15:58:11 +02:00
Tom Chauveau
d10f2a49a5 Rename field according to @shykes review
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
67a982eb0f Move push and pull tests plans to docker subpackages
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
5468f60e39 Normalize reference to login on registry
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
7d1bbcc416 Fix docker hub login error when using image ref as target
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
f842f1ed1d Remove old docker push and pull test
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
b1ed40ffed Improve #docker.Push definition :
- Push to private registry
- Output ref and digest
- Update doc
- Add tests to universe.bats

Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-30 16:58:04 +02:00
Tom Chauveau
8e8438e464 Compose tests doesn't bind a special port anymore
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-28 17:36:01 +02:00
Tom Chauveau
e1c72890ec Add random name generation to avoid orphans during parallel CI
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-26 16:18:18 +02:00
Tom Chauveau
020c458921 Add project management in compose.#App definition
I found an issue when during tests execution : there was orphan.
It's because #App doesn't give way to specify the compose project,
by default it's the directory where you launch your app but in our
definition, it will always be source.

The problem is that if we launch two differents docker-compose in the same
server, his project name will be source for both and it will create
orphans problems on cleanup (by docker-compose down).

This case is exactly what we do in tests so I've add the field name
to specify the projet name and avoid that issue.

Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-26 16:07:14 +02:00
Andrea Luzzardi
ad1eb75893
Merge pull request #572 from TomChv/docker-compose
Add Docker compose package
2021-06-25 19:35:32 +02:00
Tom Chauveau
2fbb9e7744 Update import to alpha version
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 17:26:51 +02:00
Tom Chauveau
aaa6f8f351 Simplify tests
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 17:16:11 +02:00
Tom Chauveau
c99e39ec9c Move tests plan from dagger dir to universe
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 17:00:38 +02:00
Tom Chauveau
e4ac04c98c Update import to new alpha version
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Tom Chauveau
ae209ee090 Add compose.#Up test in universe
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Tom Chauveau
5029b5d815 Refactor compose.#Up definition to use docker.#Command
Add some feature to docker.#Command to :
- Copy artifact in the container
- Write files in the container
- Login to registries

Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Tom Chauveau
f2d8cb39bd Fix network error on docker-compose
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Tom Chauveau
b6c8ef34b0 Add docker-compose tests
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Tom Chauveau
9270168f17 Add docker-compose package in stdlib
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-25 16:56:28 +02:00
Solomon Hykes
d7a805f42b stdlib: move all imports to alpha.dagger.io
Signed-off-by: Solomon Hykes <solomon@dagger.io>
2021-06-25 10:31:22 +00:00
Tom Chauveau
2e9a0d6509 Add test to universe
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-18 18:33:02 +02:00
Sam Alba
6422b4d36d stdlib: cue fmt
Signed-off-by: Sam Alba <sam.alba@gmail.com>
2021-06-15 10:47:39 +02:00
Sam Alba
9281967e16 stdlib: added package doc strings
Signed-off-by: Sam Alba <sam.alba@gmail.com>
2021-06-15 10:46:56 +02:00
Tom Chauveau
b8a97fb6e7 Update docker.#Run definition and tests
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-12 12:04:47 +02:00
Tom Chauveau
8a2fc9aa72 Add docker.#Command tests
Tests :
- docker version with ssh
- docker version with ssh and key passphrase
- docker version with ass and wrong key passphrase

Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-11 09:55:03 +02:00
Tom Chauveau
e540bd2716 Replace docker.#Client with docker.#Command definition
It's a simple wrapper that will expose an interface
to run any docker or docker-compose commands
You can configure :
- ssh
- environments
- mount volumes
- command to execute
- package to install

Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-11 09:55:03 +02:00
Andrea Luzzardi
2acf0ce4e5 stdlib: docker: disable local #Run
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-06-07 16:33:10 -07:00
Andrea Luzzardi
ce5accd09c stdlib: docker: support running containers on the local docker engine
Depends on #570

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-06-07 16:33:07 -07:00
Andrea Luzzardi
b805d37cb0
Merge pull request #557 from shykes/stdlib-cleanup
Universe: cleanup
2021-06-03 11:27:18 -07:00
Tom Chauveau
a39e87b179 docker.#Run now use secrets from dagger.#Secret
Signed-off-by: Tom Chauveau <tom.chauveau@epitech.eu>
2021-06-03 14:03:33 +02:00
Solomon Hykes
d96e4f5575 universe: docker: simplify
Signed-off-by: Solomon Hykes <solomon@dagger.io>
2021-06-03 10:44:10 +00:00