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