Files
grafana/pkg/build/e2e/main.go
Kevin Minehart 88d54892bd CI: Move e2e test pipeline from Drone to GitHub Actions (#103134)
* Add e2e dagger pipeline

* various-suite not various suite

* upload videos dir

* produce e2e videos even on failure

* nil ref

* sync doesn't return container

* fix quotes

* try without flags first?

* try without quoting?

* use two dashes in flags

* update CODEOWNERS

* make update-workspace

* go work sync

* make update-workspace

* add newline
2025-04-02 13:31:47 -05:00

73 lines
1.5 KiB
Go

package main
import (
"context"
"flag"
"fmt"
"log"
"os"
"dagger.io/dagger"
)
func main() {
var (
ctx = context.Background()
grafanaPath = flag.String("grafana-dir", ".", "Path to cloned grafana repo")
targzPath = flag.String("package", "grafana.tar.gz", "Path to grafana tar.gz package")
suite = flag.String("suite", "", "e2e suite name (used in arg to run-suite script)")
)
flag.Parse()
d, err := dagger.Connect(ctx)
if err != nil {
panic(err)
}
yarnCache := d.CacheVolume("yarn")
log.Println("grafana dir:", *grafanaPath)
log.Println("targz:", *targzPath)
grafana := d.Host().Directory(".", dagger.HostDirectoryOpts{
Exclude: []string{".git", "node_modules", "*.tar.gz"},
})
targz := d.Host().File("grafana.tar.gz")
svc, err := GrafanaService(ctx, d, GrafanaServiceOpts{
GrafanaDir: grafana,
GrafanaTarGz: targz,
YarnCache: yarnCache,
})
if err != nil {
panic(err)
}
videosDir := fmt.Sprintf("/src/e2e/%s/videos", *suite)
// *spec.ts.mp4
c := RunSuite(d, svc, grafana, yarnCache, *suite)
c, err = c.Sync(ctx)
if err != nil {
log.Fatalf("error running dagger: %s", err)
}
code, err := c.ExitCode(ctx)
if err != nil {
log.Fatalf("error getting exit code: %s", err)
}
log.Println("exit code:", code)
// No sync error; export the videos dir
if _, err := c.Directory(videosDir).Export(ctx, "videos"); err != nil {
log.Fatalf("error getting videos: %s", err)
}
if code != 0 {
log.Printf("tests failed: exit code %d", code)
}
os.Exit(code)
}