diff --git a/shared/build/build.go b/shared/build/build.go index 0a0265ab4..b37f032dc 100644 --- a/shared/build/build.go +++ b/shared/build/build.go @@ -327,7 +327,7 @@ func (b *Builder) run() error { // configure if Docker should run in privileged mode host := docker.HostConfig{ - Privileged: (b.Privileged && len(b.Repo.PR) == 0), + Privileged: (b.Privileged && script.DockerPrivileged(b.Build.Docker)), } if host.Privileged { diff --git a/shared/build/build_test.go b/shared/build/build_test.go index 636fff442..b00d464e6 100644 --- a/shared/build/build_test.go +++ b/shared/build/build_test.go @@ -412,21 +412,21 @@ func TestRunPrivileged(t *testing.T) { t.Errorf("Expected container NOT started in Privileged mode") } - // now lets set priviliged mode + // now lets try to enable priviliged mode b.Privileged = true b.run() - if conf.Privileged != true { - t.Errorf("Expected container IS started in Privileged mode") - } - - // now lets set priviliged mode but for a pull request - b.Privileged = true - b.Repo.PR = "55" - b.run() - if conf.Privileged != false { - t.Errorf("Expected container NOT started in Privileged mode when PR") + t.Errorf("Expected container NOT started in Privileged mode when no setup in build script") + } + + // now lets set priviliged mode in build script + b.Privileged = true + b.Build = &script.Build{Docker: &script.Docker{Privileged: true}} + b.run() + + if conf.Privileged != true { + t.Errorf("Expected container IS started in Privileged mode when setup privileged mode in build script") } } diff --git a/shared/build/script/docker.go b/shared/build/script/docker.go index a61967922..d2a9ad665 100644 --- a/shared/build/script/docker.go +++ b/shared/build/script/docker.go @@ -17,6 +17,10 @@ type Docker struct { // Allocate a pseudo-TTY (also known as `--tty` option) TTY bool `yaml:"tty,omitempty"` + + // Privileged means enabling all devices on the host in container + // (also known as `--privileged=true` option) + Privileged bool `yaml:"privileged,omitempty"` } // DockerNetworkMode returns DefaultNetworkMode @@ -49,3 +53,12 @@ func DockerTty(d *Docker) bool { } return d.TTY } + +// DockerPrivileged returns true if the build +// should have privileged mode +func DockerPrivileged(d *Docker) bool { + if d == nil { + return false + } + return d.Privileged +}