e49bb34e87
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>
52 lines
836 B
CUE
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
|
|
}
|