grafana/pkg/build/daggerbuild/frontend/node.go
2026-01-20 12:54:42 +01:00

32 lines
1 KiB
Go

package frontend
import (
"fmt"
"strings"
"dagger.io/dagger"
)
// NodeVersionContainer returns a container whose `stdout` will return the node version from the '.nvmrc' file in the directory 'src'.
func NodeVersion(d *dagger.Client, src *dagger.Directory) *dagger.Container {
return d.Container().From("alpine:3.23.2").
WithMountedDirectory("/src", src).
WithWorkdir("/src").
WithExec([]string{"cat", ".nvmrc"})
}
func NodeImage(version string) string {
return fmt.Sprintf("node:%s-slim", strings.TrimPrefix(strings.TrimSpace(version), "v"))
}
// NodeContainer returns a docker container with everything set up that is needed to build or run frontend tests.
func NodeContainer(d *dagger.Client, base string, platform dagger.Platform) *dagger.Container {
container := d.Container(dagger.ContainerOpts{
Platform: platform,
}).From(base).
WithExec([]string{"apt-get", "update", "-yq"}).
WithExec([]string{"apt-get", "install", "-yq", "make", "git", "g++", "python3"}).
WithEnvVariable("NODE_OPTIONS", "--max_old_space_size=8000")
return container
}