54 lines
809 B
CUE
54 lines
809 B
CUE
|
// 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
|
||
|
}
|
||
|
}
|
||
|
}
|