CI: Use playwright in daggerbuild (#108860)

* Use playwright in daggerbuild

* use e2e-playwright image
This commit is contained in:
Kevin Minehart
2025-07-29 14:25:21 +00:00
committed by GitHub
parent 10e2c32b58
commit 5ce827ce4c
6 changed files with 41 additions and 31 deletions
@@ -378,8 +378,12 @@ func verifyTarball(
WithExposedPort(3000).AsService(dagger.ContainerAsServiceOpts{
Args: []string{"./bin/grafana", "server"},
})
result, err := e2e.ValidatePackage(ctx, d, svc, src, yarnCache, nodeVersion)
if err != nil {
return err
}
if _, err := containers.ExitError(ctx, e2e.ValidatePackage(d, svc, src, yarnCache, nodeVersion)); err != nil {
if _, err := containers.ExitError(ctx, result); err != nil {
return err
}
return nil
+5 -1
View File
@@ -40,7 +40,11 @@ func Verify(
WithExposedPort(3000)
// TODO: Add LICENSE to containers and implement validation
container := e2e.ValidatePackage(d, service.AsService(), src, yarnCache, nodeVersion)
container, err := e2e.ValidatePackage(ctx, d, service.AsService(), src, yarnCache, nodeVersion)
if err != nil {
return err
}
_, err = containers.ExitError(ctx, container)
return err
}
+12 -25
View File
@@ -1,32 +1,19 @@
package e2e
import (
"context"
"dagger.io/dagger"
"github.com/grafana/grafana/pkg/build/daggerbuild/frontend"
"github.com/grafana/grafana/pkg/build/e2eutil"
)
func CypressImage(version string) string {
return "cypress/included:13.1.0"
}
// CypressContainer returns a docker container with everything set up that is needed to build or run e2e tests.
func CypressContainer(d *dagger.Client, base string) *dagger.Container {
container := d.Container().From(base).WithEntrypoint([]string{})
return container
}
func ValidatePackage(d *dagger.Client, service *dagger.Service, src *dagger.Directory, yarnCacheVolume *dagger.CacheVolume, nodeVersion string) *dagger.Container {
// The cypress container should never be cached
c := CypressContainer(d, CypressImage(nodeVersion))
c = frontend.WithYarnCache(c, yarnCacheVolume)
return c.WithDirectory("/src", src).
WithWorkdir("/src").
WithServiceBinding("grafana", service).
WithEnvVariable("HOST", "grafana").
WithEnvVariable("PORT", "3000").
WithExec([]string{"yarn", "install", "--immutable"}).
WithExec([]string{"/bin/sh", "-c", "/src/e2e/verify-release"})
func ValidatePackage(ctx context.Context, d *dagger.Client, service *dagger.Service, src *dagger.Directory, yarnCacheVolume *dagger.CacheVolume, nodeVersion string) (*dagger.Container, error) {
c, err := e2eutil.WithFrontendContainer(ctx, d, src)
if err != nil {
return nil, err
}
return c.WithServiceBinding("grafana", service).
WithEnvVariable("GRAFANA_URL", "http://grafana:3000").
WithExec([]string{"yarn", "e2e:acceptance"}), nil
}
+16 -2
View File
@@ -41,7 +41,12 @@ func VerifyDeb(ctx context.Context, d *dagger.Client, file *dagger.File, src *da
Args: []string{"grafana-server"},
})
if _, err := containers.ExitError(ctx, e2e.ValidatePackage(d, svc, src, yarn, nodeVersion)); err != nil {
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
}
@@ -75,7 +80,16 @@ func VerifyRpm(ctx context.Context, d *dagger.Client, file *dagger.File, src *da
WithExec([]string{"grafana-server"}).
WithExposedPort(3000)
if _, err := containers.ExitError(ctx, e2e.ValidatePackage(d, service.AsService(), src, yarn, nodeVersion)); err != nil {
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 {
+2 -1
View File
@@ -8,6 +8,7 @@ import (
"os/signal"
"dagger.io/dagger"
"github.com/grafana/grafana/pkg/build/e2eutil"
"github.com/urfave/cli/v3"
)
@@ -143,7 +144,7 @@ func run(ctx context.Context, cmd *cli.Command) error {
},
})
frontendContainer, err := WithFrontendContainer(ctx, d, yarnHostSrc)
frontendContainer, err := e2eutil.WithFrontendContainer(ctx, d, yarnHostSrc)
if err != nil {
return fmt.Errorf("failed to create frontend container: %w", err)
}
@@ -1,4 +1,4 @@
package main
package e2eutil
import (
"context"