Files
Kevin Minehart 13f4cf162e CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
2025-05-20 10:48:00 -05:00

55 lines
1.3 KiB
Go

package arguments
import (
"context"
"os"
"github.com/grafana/grafana/pkg/build/daggerbuild/pipeline"
"github.com/urfave/cli/v2"
)
var YarnCacheDirFlag = &cli.StringFlag{
Name: "yarn-cache-dir",
Aliases: []string{"yarn-cache"},
Usage: "Path to the yarn cache directory to mount during 'yarn install' commands (if there is one)",
EnvVars: []string{"YARN_CACHE_FOLDER", "YARN_CACHE_DIR"},
Value: "",
}
var YarnCacheDirectory = pipeline.Argument{
Name: "yarn-cache-dir",
Description: YarnCacheDirFlag.Usage,
ArgumentType: pipeline.ArgumentTypeCacheVolume,
Flags: []cli.Flag{
YarnCacheDirFlag,
},
ValueFunc: func(ctx context.Context, opts *pipeline.ArgumentOpts) (any, error) {
vol := opts.CLIContext.String(YarnCacheDirFlag.Name)
// Prepopulate the cache with what's defined in YARN_CACHE_FOLDER
// or in the CLI
if val, ok := os.LookupEnv("YARN_CACHE_FOLDER"); ok {
vol = val
}
cache := opts.Client.CacheVolume("yarn-cache-dir")
if vol == "" {
return cache, nil
}
dir := opts.Client.Host().Directory(vol)
_, err := opts.Client.Container().
From("alpine").
WithMountedCache("/cache", cache).
WithMountedDirectory("/data", dir).
WithExec([]string{"/bin/sh", "-c", "cp -r /data/* /cache || return 0"}).
Sync(ctx)
if err != nil {
return nil, err
}
return cache, nil
},
}