CI: Use playwright in daggerbuild (#108860)
* Use playwright in daggerbuild * use e2e-playwright image
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user