CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package artifacts
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"log/slog"
|
||||
|
||||
"github.com/grafana/grafana/pkg/build/daggerbuild/cmd/flags"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
func ArtifactFlags(r Registerer) []cli.Flag {
|
||||
artifactsFlag := &cli.StringSliceFlag{
|
||||
Name: "artifacts",
|
||||
Aliases: []string{"a"},
|
||||
}
|
||||
|
||||
buildFlag := &cli.BoolFlag{
|
||||
Name: "build",
|
||||
Value: true,
|
||||
}
|
||||
publishFlag := &cli.BoolFlag{
|
||||
Name: "publish",
|
||||
Usage: "If true, then the artifacts that are built will be published. If `--build=false` and the artifacts are found in the --destination, then those artifacts are not built and are published instead.",
|
||||
Value: true,
|
||||
}
|
||||
|
||||
verifyFlag := &cli.BoolFlag{
|
||||
Name: "verify",
|
||||
Usage: "If true, then the artifacts that are built will be verified with e2e tests or similar after being exported, depending on the artifact",
|
||||
Value: false,
|
||||
}
|
||||
|
||||
flags := flags.Join(
|
||||
[]cli.Flag{
|
||||
artifactsFlag,
|
||||
buildFlag,
|
||||
publishFlag,
|
||||
verifyFlag,
|
||||
flags.Platform,
|
||||
},
|
||||
flags.PublishFlags,
|
||||
flags.ConcurrencyFlags,
|
||||
[]cli.Flag{
|
||||
flags.Verbose,
|
||||
},
|
||||
)
|
||||
|
||||
// All of these artifacts are the registered artifacts. These should mostly stay the same no matter what.
|
||||
initializers := r.Initializers()
|
||||
|
||||
// Add all of the CLI flags that are defined by each artifact's arguments.
|
||||
m := map[string]cli.Flag{}
|
||||
|
||||
// For artifact arguments that specify flags, we'll coalesce them here and add them to the list of flags.
|
||||
for _, n := range initializers {
|
||||
for _, arg := range n.Arguments {
|
||||
for _, f := range arg.Flags {
|
||||
fn := strings.Join(f.Names(), ",")
|
||||
m[fn] = f
|
||||
slog.Debug("global flag added by argument in artifact", "flag", fn, "arg", arg.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, v := range m {
|
||||
flags = append(flags, v)
|
||||
}
|
||||
|
||||
sort.Slice(flags, func(i, j int) bool {
|
||||
return strings.Compare(flags[i].Names()[0], flags[j].Names()[0]) <= 0
|
||||
})
|
||||
|
||||
return flags
|
||||
}
|
||||
Reference in New Issue
Block a user