This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/pkg/universe.dagger.io/go/build.cue
Tom Chauveau e49bb34e87
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>
2022-02-17 14:57:06 +01:00

52 lines
836 B
CUE

package go
import (
"dagger.io/dagger"
"dagger.io/dagger/engine"
)
// Build a go binary
#Build: {
// Go version to use
version: *#Image.version | string
// Source code
source: dagger.#FS
// Target package to build
package: *"." | string
// Target architecture
arch: *"amd64" | string
// Target OS
os: *"linux" | string
// Build tags to use for building
tags: *"" | string
// LDFLAGS to use for linking
ldflags: *"" | string
// Target binary output
output: string
env: [string]: string
_build: #Container & {
"version": version
"source": source
"env": env
args: ["build", "-v", "-tags", tags, "-ldflags", ldflags, "-o", output, package]
}
_copy: engine.#Copy & {
input: engine.#Scratch
contents: _build.output.rootfs
source: output
dest: output
}
binary: _copy.output
}