CI: move grafana-build into pkg/build (#105640)

* move grafana-build into pkg/build
This commit is contained in:
Kevin Minehart
2025-05-20 10:48:00 -05:00
committed by GitHub
parent 759933d3e2
commit 13f4cf162e
222 changed files with 17387 additions and 442 deletions
+64
View File
@@ -0,0 +1,64 @@
package flags
import (
"github.com/grafana/grafana/pkg/build/daggerbuild/backend"
"github.com/grafana/grafana/pkg/build/daggerbuild/pipeline"
)
const (
FlagDistribution = "distro"
)
var StaticDistributions = []backend.Distribution{
backend.DistLinuxAMD64,
backend.DistLinuxARM64,
backend.DistLinuxARMv7,
backend.DistLinuxRISCV64,
backend.DistLinuxS390X,
}
var DynamicDistributions = []backend.Distribution{
backend.DistDarwinAMD64,
backend.DistDarwinARM64,
backend.DistWindowsAMD64,
backend.DistWindowsARM64,
backend.DistLinuxAMD64Dynamic,
backend.DistLinuxAMD64DynamicMusl,
}
func DistroFlags() []pipeline.Flag {
// These distributions have specific options that set some stuff.
f := []pipeline.Flag{
{
Name: string(backend.DistLinuxARMv6),
Options: map[pipeline.FlagOption]any{
Distribution: string(backend.DistLinuxARMv6),
Static: true,
RPI: true,
},
},
}
for _, v := range StaticDistributions {
d := string(v)
f = append(f, pipeline.Flag{
Name: d,
Options: map[pipeline.FlagOption]any{
Distribution: d,
Static: true,
},
})
}
for _, v := range DynamicDistributions {
d := string(v)
f = append(f, pipeline.Flag{
Name: d,
Options: map[pipeline.FlagOption]any{
Distribution: d,
Static: false,
},
})
}
return f
}
+17
View File
@@ -0,0 +1,17 @@
package flags
import "github.com/grafana/grafana/pkg/build/daggerbuild/pipeline"
var (
Ubuntu pipeline.FlagOption = "docker-ubuntu"
DockerRepositories pipeline.FlagOption = "docker-repos"
)
var DockerFlags = []pipeline.Flag{
{
Name: "ubuntu",
Options: map[pipeline.FlagOption]any{
Ubuntu: true,
},
},
}
+7
View File
@@ -0,0 +1,7 @@
// Package flags defines the "flags" that are used in various artifacts throughout the application.
// A flag is an artifact-specific string alias to a set of options.
// Examples:
// - the 'boringcrypto' flag, when used in an artifact string like `boringcrypto:targz:linux/amd64`, informs the `targz` artifact that
// the package name is 'grafana-boringcrypto', and that when it is built, the GOEXPERIMENT=boringcrypto flag must be set.
// - the 'targz' flag forces the use of the 'targz' artifact, whose exention will end in `tar.gz`, and will require the compiled 'backend' and 'frontend'.
package flags
+12
View File
@@ -0,0 +1,12 @@
package flags
import "github.com/grafana/grafana/pkg/build/daggerbuild/pipeline"
func JoinFlags(f ...[]pipeline.Flag) []pipeline.Flag {
r := []pipeline.Flag{}
for _, v := range f {
r = append(r, v...)
}
return r
}
+99
View File
@@ -0,0 +1,99 @@
package flags
import (
"github.com/grafana/grafana/pkg/build/daggerbuild/packages"
"github.com/grafana/grafana/pkg/build/daggerbuild/pipeline"
)
var DefaultTags = []string{
"osusergo",
"timetzdata",
}
const (
PackageName pipeline.FlagOption = "package-name"
Distribution pipeline.FlagOption = "distribution"
Static pipeline.FlagOption = "static"
Enterprise pipeline.FlagOption = "enterprise"
WireTag pipeline.FlagOption = "wire-tag"
GoTags pipeline.FlagOption = "go-tag"
GoExperiments pipeline.FlagOption = "go-experiments"
Sign pipeline.FlagOption = "sign"
// Pretty much only used to set the deb or RPM internal package name (and file name) to `{}-nightly` and/or `{}-rpi`
Nightly pipeline.FlagOption = "nightly"
RPI pipeline.FlagOption = "rpi"
)
// PackageNameFlags - flags that packages (targz, deb, rpm, docker) must have.
// Essentially they must have all of the same things that the targz package has.
var PackageNameFlags = []pipeline.Flag{
{
Name: "grafana",
Options: map[pipeline.FlagOption]any{
DockerRepositories: []string{"grafana-image-tags", "grafana-oss-image-tags"},
PackageName: string(packages.PackageGrafana),
Enterprise: false,
WireTag: "oss",
GoExperiments: []string{},
GoTags: DefaultTags,
},
},
{
Name: "enterprise",
Options: map[pipeline.FlagOption]any{
DockerRepositories: []string{"grafana-enterprise-image-tags"},
PackageName: string(packages.PackageEnterprise),
Enterprise: true,
WireTag: "enterprise",
GoExperiments: []string{},
GoTags: append(DefaultTags, "enterprise"),
},
},
{
Name: "pro",
Options: map[pipeline.FlagOption]any{
DockerRepositories: []string{"grafana-pro"},
PackageName: string(packages.PackagePro),
Enterprise: true,
WireTag: "pro",
GoExperiments: []string{},
GoTags: append(DefaultTags, "pro"),
},
},
{
Name: "boring",
Options: map[pipeline.FlagOption]any{
DockerRepositories: []string{"grafana-enterprise-image-tags"},
PackageName: string(packages.PackageEnterpriseBoring),
Enterprise: true,
WireTag: "enterprise",
GoExperiments: []string{"boringcrypto"},
GoTags: append(DefaultTags, "enterprise"),
},
},
}
var SignFlag = pipeline.Flag{
Name: "sign",
Options: map[pipeline.FlagOption]any{
Sign: true,
},
}
var NightlyFlag = pipeline.Flag{
Name: "nightly",
Options: map[pipeline.FlagOption]any{
Nightly: true,
},
}
func StdPackageFlags() []pipeline.Flag {
distros := DistroFlags()
names := PackageNameFlags
return JoinFlags(
distros,
names,
)
}