From 3c1ae23a1ef28ad3a52ecc43183a83abe1e2aff9 Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Sat, 26 Oct 2019 11:33:52 -0700 Subject: [PATCH] added shm_size --- engine/compiler/step.go | 1 + engine/convert.go | 2 +- engine/linter/linter.go | 3 +++ engine/resource/pipeline.go | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/engine/compiler/step.go b/engine/compiler/step.go index f25af30..0e0fa9c 100644 --- a/engine/compiler/step.go +++ b/engine/compiler/step.go @@ -34,6 +34,7 @@ func createStep(spec *resource.Pipeline, src *resource.Step) *engine.Step { Pull: convertPullPolicy(src.Pull), User: src.User, Secrets: convertSecretEnv(src.Environment), + ShmSize: int64(src.ShmSize), WorkingDir: src.WorkingDir, // diff --git a/engine/convert.go b/engine/convert.go index a170ae8..8fe992d 100644 --- a/engine/convert.go +++ b/engine/convert.go @@ -54,7 +54,7 @@ func toHostConfig(spec *Spec, step *Step) *container.HostConfig { Type: "json-file", }, Privileged: step.Privileged, - // TODO(bradrydzewski) set ShmSize + ShmSize: step.ShmSize, } // windows does not support privileged so we hard-code // this value to false. diff --git a/engine/linter/linter.go b/engine/linter/linter.go index 54f1538..34fdee3 100644 --- a/engine/linter/linter.go +++ b/engine/linter/linter.go @@ -115,6 +115,9 @@ func checkStep(step *resource.Step, trusted bool) error { if trusted == false && len(step.Network) > 0 { return errors.New("linter: untrusted repositories cannot configure network_mode") } + if trusted == false && int(step.ShmSize) > 0 { + return errors.New("linter: untrusted repositories cannot configure shm_size") + } for _, mount := range step.Volumes { switch mount.Name { case "workspace", "_workspace", "_docker_socket": diff --git a/engine/resource/pipeline.go b/engine/resource/pipeline.go index 030ce74..edc465c 100644 --- a/engine/resource/pipeline.go +++ b/engine/resource/pipeline.go @@ -103,6 +103,7 @@ type ( Pull string `json:"pull,omitempty"` Settings map[string]*manifest.Parameter `json:"settings,omitempty"` Shell string `json:"shell,omitempty"` + ShmSize manifest.BytesSize `json:"shm_size,omitempty"` User string `json:"user,omitempty"` Volumes []*VolumeMount `json:"volumes,omitempty"` When manifest.Conditions `json:"when,omitempty"`