Files
grafana/pkg/build/daggerbuild/fpm/verify.go
T
Kevin Minehart 5ce827ce4c CI: Use playwright in daggerbuild (#108860)
* Use playwright in daggerbuild

* use e2e-playwright image
2025-07-29 14:25:21 +00:00

101 lines
3.0 KiB
Go

package fpm
import (
"context"
"fmt"
"dagger.io/dagger"
"github.com/grafana/grafana/pkg/build/daggerbuild/backend"
"github.com/grafana/grafana/pkg/build/daggerbuild/containers"
"github.com/grafana/grafana/pkg/build/daggerbuild/e2e"
"github.com/grafana/grafana/pkg/build/daggerbuild/frontend"
"github.com/grafana/grafana/pkg/build/daggerbuild/gpg"
)
func VerifyDeb(ctx context.Context, d *dagger.Client, file *dagger.File, src *dagger.Directory, yarn *dagger.CacheVolume, distro backend.Distribution, enterprise bool) error {
nodeVersion, err := frontend.NodeVersion(d, src).Stdout(ctx)
if err != nil {
return fmt.Errorf("failed to get node version from source code: %w", err)
}
var (
platform = backend.Platform(distro)
)
// This grafana service runs in the background for the e2e tests
service := d.Container(dagger.ContainerOpts{
Platform: platform,
}).From("ubuntu:22.04").
WithFile("/src/package.deb", file).
WithExec([]string{"apt-get", "update"}).
WithExec([]string{"apt-get", "install", "-yq", "ca-certificates"}).
WithExec([]string{"apt-get", "install", "-yq", "/src/package.deb"}).
WithEnvVariable("GF_LOG_LEVEL", "error").
WithWorkdir("/usr/share/grafana")
if err := e2e.ValidateLicense(ctx, service, "/usr/share/grafana/LICENSE", enterprise); err != nil {
return err
}
svc := service.WithExposedPort(3000).AsService(dagger.ContainerAsServiceOpts{
Args: []string{"grafana-server"},
})
result, err := e2e.ValidatePackage(ctx, d, svc, src, yarn, nodeVersion)
if err != nil {
return err
}
if _, err := containers.ExitError(ctx, result); err != nil {
return err
}
return nil
}
func VerifyRpm(ctx context.Context, d *dagger.Client, file *dagger.File, src *dagger.Directory, yarn *dagger.CacheVolume, distro backend.Distribution, enterprise, sign bool, pubkey, privkey, passphrase string) error {
nodeVersion, err := frontend.NodeVersion(d, src).Stdout(ctx)
if err != nil {
return fmt.Errorf("failed to get node version from source code: %w", err)
}
var (
platform = backend.Platform(distro)
)
// This grafana service runs in the background for the e2e tests
service := d.Container(dagger.ContainerOpts{
Platform: platform,
}).From("redhat/ubi8:8.10-source").
WithFile("/src/package.rpm", file).
WithExec([]string{"yum", "install", "-y", "/src/package.rpm"}).
WithEnvVariable("GF_LOG_LEVEL", "error").
WithWorkdir("/usr/share/grafana")
if err := e2e.ValidateLicense(ctx, service, "/usr/share/grafana/LICENSE", enterprise); err != nil {
return err
}
service = service.
WithExec([]string{"grafana-server"}).
WithExposedPort(3000)
svc := service.WithExposedPort(3000).AsService(dagger.ContainerAsServiceOpts{
Args: []string{"grafana-server"},
})
result, err := e2e.ValidatePackage(ctx, d, svc, src, yarn, nodeVersion)
if err != nil {
return err
}
if _, err := containers.ExitError(ctx, result); err != nil {
return err
}
if !sign {
return nil
}
return gpg.VerifySignature(ctx, d, file, pubkey, privkey, passphrase)
}