Port go package to universe to resolves #1553

Definition are now split in their own file.
`#Image` is a simple base image to set up a go container
`#Container` is a standalone environment to execute go command, any go command
should use this definition.
It shares `docker.#Run` fields to easily maintains this definition.
`#Build` and `#Test` are high level definition that use `#Container` to
execute common go operation in a CI.

Those definitions are tested with a simple greeting package.

Signed-off-by: Vasek - Tom C <tom.chauveau@epitech.eu>
This commit is contained in:
Tom Chauveau
2022-02-11 14:52:08 +01:00
committed by Vasek - Tom C
parent 5e025dfa2b
commit e49bb34e87
13 changed files with 321 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
// Go operation
package go
import (
"dagger.io/dagger"
"dagger.io/dagger/engine"
"universe.dagger.io/docker"
)
// A standalone go environment to run go command
#Container: {
// Go version to use
version: *#Image.version | string
// Source code
source: dagger.#FS
// Arguments
args: [...string]
// Use go image
_image: #Image & {
"version": version
}
_sourcePath: "/src"
_cachePath: "/root/.cache/gocache"
docker.#Run & {
input: _image.output
workdir: "/src"
command: {
name: "go"
"args": args
}
mounts: {
"source": {
dest: _sourcePath
contents: source
}
"go assets cache": {
contents: engine.#CacheDir & {
id: "\(_cachePath)_assets"
}
dest: _cachePath
}
}
env: {
CGO_ENABLED: "0"
GOMODCACHE: _cachePath
}
}
}