fix(sdk): run Docker containers as current user to fix CI cleanup
Docker containers were creating files as root, causing Go test cleanup to fail with "permission denied". Now passes --user flag on Unix systems to run containers as the current user. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
b16fa37dfd
commit
80fd39f2d8
5 changed files with 32 additions and 4 deletions
|
|
@ -3,6 +3,9 @@ package generators
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
// Options holds common generation options.
|
||||
|
|
@ -65,3 +68,12 @@ func (r *Registry) Languages() []string {
|
|||
}
|
||||
return langs
|
||||
}
|
||||
|
||||
// dockerUserArgs returns Docker --user args for the current user on Unix systems.
|
||||
// On Windows, Docker handles permissions differently, so no args are returned.
|
||||
func dockerUserArgs() []string {
|
||||
if runtime.GOOS == "windows" {
|
||||
return nil
|
||||
}
|
||||
return []string{"--user", fmt.Sprintf("%d:%d", os.Getuid(), os.Getgid())}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,9 @@ func (g *GoGenerator) generateDocker(ctx context.Context, opts Options) error {
|
|||
specDir := filepath.Dir(opts.SpecPath)
|
||||
specName := filepath.Base(opts.SpecPath)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
|
||||
args := []string{"run", "--rm"}
|
||||
args = append(args, dockerUserArgs()...)
|
||||
args = append(args,
|
||||
"-v", specDir+":/spec",
|
||||
"-v", opts.OutputDir+":/out",
|
||||
"openapitools/openapi-generator-cli", "generate",
|
||||
|
|
@ -77,6 +79,8 @@ func (g *GoGenerator) generateDocker(ctx context.Context, opts Options) error {
|
|||
"-o", "/out",
|
||||
"--additional-properties=packageName="+opts.PackageName,
|
||||
)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
|
|
|
|||
|
|
@ -45,7 +45,9 @@ func (g *PHPGenerator) Generate(ctx context.Context, opts Options) error {
|
|||
specDir := filepath.Dir(opts.SpecPath)
|
||||
specName := filepath.Base(opts.SpecPath)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
|
||||
args := []string{"run", "--rm"}
|
||||
args = append(args, dockerUserArgs()...)
|
||||
args = append(args,
|
||||
"-v", specDir+":/spec",
|
||||
"-v", opts.OutputDir+":/out",
|
||||
"openapitools/openapi-generator-cli", "generate",
|
||||
|
|
@ -54,6 +56,8 @@ func (g *PHPGenerator) Generate(ctx context.Context, opts Options) error {
|
|||
"-o", "/out",
|
||||
"--additional-properties=invokerPackage="+opts.PackageName,
|
||||
)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,9 @@ func (g *PythonGenerator) generateDocker(ctx context.Context, opts Options) erro
|
|||
specDir := filepath.Dir(opts.SpecPath)
|
||||
specName := filepath.Base(opts.SpecPath)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
|
||||
args := []string{"run", "--rm"}
|
||||
args = append(args, dockerUserArgs()...)
|
||||
args = append(args,
|
||||
"-v", specDir+":/spec",
|
||||
"-v", opts.OutputDir+":/out",
|
||||
"openapitools/openapi-generator-cli", "generate",
|
||||
|
|
@ -70,6 +72,8 @@ func (g *PythonGenerator) generateDocker(ctx context.Context, opts Options) erro
|
|||
"-o", "/out",
|
||||
"--additional-properties=packageName="+opts.PackageName,
|
||||
)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
|
|
|
|||
|
|
@ -87,7 +87,9 @@ func (g *TypeScriptGenerator) generateDocker(ctx context.Context, opts Options)
|
|||
specDir := filepath.Dir(opts.SpecPath)
|
||||
specName := filepath.Base(opts.SpecPath)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
|
||||
args := []string{"run", "--rm"}
|
||||
args = append(args, dockerUserArgs()...)
|
||||
args = append(args,
|
||||
"-v", specDir+":/spec",
|
||||
"-v", opts.OutputDir+":/out",
|
||||
"openapitools/openapi-generator-cli", "generate",
|
||||
|
|
@ -96,6 +98,8 @@ func (g *TypeScriptGenerator) generateDocker(ctx context.Context, opts Options)
|
|||
"-o", "/out",
|
||||
"--additional-properties=npmName="+opts.PackageName,
|
||||
)
|
||||
|
||||
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue