Commit Graph

78 Commits

Author SHA1 Message Date
Gerhard Lazu
18c387a407 Use tcp in the docker host test
Co-authored-by: Vasek - Tom C. <tom.chauveau@epitech.eu>
Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
2021-12-02 16:53:40 -08:00
Gerhard Lazu
8ce5b3447f Fix unused imports
Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
2021-12-02 16:53:40 -08:00
Gerhard Lazu
c690387ae2 Add support for tcp:// DOCKER_HOST
The Docker daemon that I am using is running remotely, and I connect to
it via Tailscale tunnel, which means that my DOCKER_HOST is set to
tcp://100.113.182.91:2375

This change makes Dagger work with my setup. It's been running well for
me for a few weeks now, this started as https://github.com/thechangelog/changelog.com/pull/395

I think there is an opportunity to add support for ssh:// & file://,
but I am keeping this first addition small on purpose.

Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
2021-12-02 16:53:40 -08:00
Alvise88
656d6beb31 Fix typo in docker command
Signed-off-by: Alvise88 <vitalvise@gmail.com>
2021-11-19 15:56:17 -08:00
Andrea Luzzardi
22fb91548b test: docker-run-ports: fix sandbox escaping of dagger stream
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-11-19 11:29:38 -08:00
Andrea Luzzardi
a61e8dcb62 prepare the transition to #Plan.context
This change helps the transition between `dagger input` and `#Plan.context`.

In summary, the codebase now relies on a *context* for execution with mapping to *IDs*.
In the future, *context* will come from a `#Plan.context`.
In the meantime, a bridge converts `dagger input` to a plan context. This allows both *old* and *new* style configurations to co-exist with the same underlying engine.

- Implement `plancontext`. Context holds the execution context for a plan. Currently this includes the platform, local directories, secrets and services (e.g. unix/npipe).
- Contextual data can be registered at any point. In the future, this will be done by `#Plan.context`
- Migrated the `dagger input` codebase to register inputs in a `plancontext`
- Migrated low-level types/operations to the *Context ID* pattern.
  - `dagger.#Stream` now only includes an `id` (instead of `unix` path)
  - `dagger.#Secret` still includes only an ID, but now it's based off `plancontext`
  - `op.#Local` now only includes an `id` (instead of `path`, `include`, `exclude`.

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-11-19 11:29:38 -08:00
Sam Alba
a4761c0f64 stdlib/docker: #Run do not fail if container exists and recreate is false
Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
2021-11-02 15:09:15 -07:00
Sam Alba
72723c4ca7 stdlib/docker: #Run checks if the container exists and can optionnally recreate it
Signed-off-by: Sam Alba <samalba@users.noreply.github.com>
2021-11-02 11:41:53 -07:00
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