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
ebbe01c427
commit
25b73fa79e
5 changed files with 32 additions and 4 deletions
|
|
@ -3,6 +3,9 @@ package generators
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options holds common generation options.
|
// Options holds common generation options.
|
||||||
|
|
@ -65,3 +68,12 @@ func (r *Registry) Languages() []string {
|
||||||
}
|
}
|
||||||
return langs
|
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)
|
specDir := filepath.Dir(opts.SpecPath)
|
||||||
specName := filepath.Base(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", specDir+":/spec",
|
||||||
"-v", opts.OutputDir+":/out",
|
"-v", opts.OutputDir+":/out",
|
||||||
"openapitools/openapi-generator-cli", "generate",
|
"openapitools/openapi-generator-cli", "generate",
|
||||||
|
|
@ -77,6 +79,8 @@ func (g *GoGenerator) generateDocker(ctx context.Context, opts Options) error {
|
||||||
"-o", "/out",
|
"-o", "/out",
|
||||||
"--additional-properties=packageName="+opts.PackageName,
|
"--additional-properties=packageName="+opts.PackageName,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
return cmd.Run()
|
return cmd.Run()
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,9 @@ func (g *PHPGenerator) Generate(ctx context.Context, opts Options) error {
|
||||||
specDir := filepath.Dir(opts.SpecPath)
|
specDir := filepath.Dir(opts.SpecPath)
|
||||||
specName := filepath.Base(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", specDir+":/spec",
|
||||||
"-v", opts.OutputDir+":/out",
|
"-v", opts.OutputDir+":/out",
|
||||||
"openapitools/openapi-generator-cli", "generate",
|
"openapitools/openapi-generator-cli", "generate",
|
||||||
|
|
@ -54,6 +56,8 @@ func (g *PHPGenerator) Generate(ctx context.Context, opts Options) error {
|
||||||
"-o", "/out",
|
"-o", "/out",
|
||||||
"--additional-properties=invokerPackage="+opts.PackageName,
|
"--additional-properties=invokerPackage="+opts.PackageName,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,9 @@ func (g *PythonGenerator) generateDocker(ctx context.Context, opts Options) erro
|
||||||
specDir := filepath.Dir(opts.SpecPath)
|
specDir := filepath.Dir(opts.SpecPath)
|
||||||
specName := filepath.Base(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", specDir+":/spec",
|
||||||
"-v", opts.OutputDir+":/out",
|
"-v", opts.OutputDir+":/out",
|
||||||
"openapitools/openapi-generator-cli", "generate",
|
"openapitools/openapi-generator-cli", "generate",
|
||||||
|
|
@ -70,6 +72,8 @@ func (g *PythonGenerator) generateDocker(ctx context.Context, opts Options) erro
|
||||||
"-o", "/out",
|
"-o", "/out",
|
||||||
"--additional-properties=packageName="+opts.PackageName,
|
"--additional-properties=packageName="+opts.PackageName,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
return cmd.Run()
|
return cmd.Run()
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,9 @@ func (g *TypeScriptGenerator) generateDocker(ctx context.Context, opts Options)
|
||||||
specDir := filepath.Dir(opts.SpecPath)
|
specDir := filepath.Dir(opts.SpecPath)
|
||||||
specName := filepath.Base(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", specDir+":/spec",
|
||||||
"-v", opts.OutputDir+":/out",
|
"-v", opts.OutputDir+":/out",
|
||||||
"openapitools/openapi-generator-cli", "generate",
|
"openapitools/openapi-generator-cli", "generate",
|
||||||
|
|
@ -96,6 +98,8 @@ func (g *TypeScriptGenerator) generateDocker(ctx context.Context, opts Options)
|
||||||
"-o", "/out",
|
"-o", "/out",
|
||||||
"--additional-properties=npmName="+opts.PackageName,
|
"--additional-properties=npmName="+opts.PackageName,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cmd := exec.CommandContext(ctx, "docker", args...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue