diff --git a/test/integration/cmd/angular/run.go b/test/integration/cmd/angular/run.go index efeacdaf..8da1ac44 100644 --- a/test/integration/cmd/angular/run.go +++ b/test/integration/cmd/angular/run.go @@ -39,7 +39,7 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe // Build the CLI in a Go container cli := client.Container(). - From("golang:1.24-alpine"). + From(integration.GoBaseImage). WithDirectory("/src", source). WithWorkdir("/src"). WithExec([]string{"go", "build", "-o", "cli", "./cmd/openfeature"}) diff --git a/test/integration/cmd/csharp/run.go b/test/integration/cmd/csharp/run.go index 9d6d1dce..a2f8337a 100644 --- a/test/integration/cmd/csharp/run.go +++ b/test/integration/cmd/csharp/run.go @@ -36,7 +36,7 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe // Build the CLI cli := client.Container(). - From("golang:1.24-alpine"). + From(integration.GoBaseImage). WithDirectory("/src", source). WithWorkdir("/src"). WithExec([]string{"go", "build", "-o", "cli", "./cmd/openfeature"}) diff --git a/test/integration/cmd/go/run.go b/test/integration/cmd/go/run.go index 1636c7f8..8c9d33e4 100644 --- a/test/integration/cmd/go/run.go +++ b/test/integration/cmd/go/run.go @@ -34,10 +34,16 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe Include: []string{"test.go", "go.mod"}, }) + // goBase returns a Go container with git installed, used both to build + // the CLI and to compile the generated client against the test fixture. + goBase := func() *dagger.Container { + return client.Container(). + From(integration.GoBaseImage). + WithExec([]string{"apk", "add", "--no-cache", "git"}) + } + // Build the CLI - cli := client.Container(). - From("golang:1.24-alpine"). - WithExec([]string{"apk", "add", "--no-cache", "git"}). + cli := goBase(). WithDirectory("/src", source). WithWorkdir("/src"). WithExec([]string{"go", "mod", "tidy"}). @@ -56,9 +62,7 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe generatedFiles := generated.Directory("/tmp/generated") // Test Go compilation with the generated files - goContainer := client.Container(). - From("golang:1.24-alpine"). - WithExec([]string{"apk", "add", "--no-cache", "git"}). + goContainer := goBase(). WithWorkdir("/app"). WithDirectory("/app", testFiles). WithDirectory("/app/openfeature", generatedFiles). diff --git a/test/integration/cmd/nodejs/run.go b/test/integration/cmd/nodejs/run.go index 78bab4d2..e4cda9f4 100644 --- a/test/integration/cmd/nodejs/run.go +++ b/test/integration/cmd/nodejs/run.go @@ -29,7 +29,7 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe }) cli := client.Container(). - From("golang:1.24-alpine"). + From(integration.GoBaseImage). WithDirectory("/src", source). WithWorkdir("/src"). WithExec([]string{"go", "build", "-o", "cli", "./cmd/openfeature"}) diff --git a/test/integration/integration.go b/test/integration/integration.go index f852e482..48609b55 100644 --- a/test/integration/integration.go +++ b/test/integration/integration.go @@ -8,6 +8,11 @@ import ( "dagger.io/dagger" ) +// GoBaseImage is the Go container image used to build the CLI inside +// integration test pipelines. Centralized here so the version is bumped +// in a single place when go.mod's required Go version changes. +const GoBaseImage = "golang:1.25-alpine" + // Test defines the interface for all integration tests type Test interface { // Run executes the integration test with the given Dagger client diff --git a/test/new-generator.md b/test/new-generator.md index 6f687197..5cce1282 100644 --- a/test/new-generator.md +++ b/test/new-generator.md @@ -59,9 +59,10 @@ func (t *Test) Run(ctx context.Context, client *dagger.Client) (*dagger.Containe Include: []string{"test_openfeature.py", "requirements.txt"}, }) - // Build the CLI + // Build the CLI. Use integration.GoBaseImage so the Go version is + // bumped in a single place when go.mod changes. cli := client.Container(). - From("golang:1.24-alpine"). + From(integration.GoBaseImage). WithDirectory("/src", source). WithWorkdir("/src"). WithExec([]string{"go", "build", "-o", "cli"})