Skip to content

Commit 6a24ff2

Browse files
committed
Added privileged property to dockerRun configuration
Authored-by: Leonhardt Koepsell <[email protected]>
1 parent d5e6979 commit 6a24ff2

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ All notable changes to this project will be documented in this file.
99
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
1010
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1111

12+
## [0.1.0] - 2024-11-07
13+
14+
### Added
15+
16+
- Added privileged property to dockerRun configuration, allowing tasks to run with Docker's privileged mode.
17+
1218
## [0.0.1] - 2024-11-06
1319

1420
### Added

src/main/kotlin/dev/codebandits/container/gradle/tasks/ContainerRunTask.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public abstract class ContainerRunTask : ContainerExecTask() {
1111
public val args: Property<Array<String>> = objects.property(Array<String>::class.java).convention(emptyArray())
1212
public val workdir: Property<String> = objects.property(String::class.java)
1313
public val user: Property<String> = objects.property(String::class.java)
14+
public val privileged: Property<Boolean> = objects.property(Boolean::class.java).convention(false)
1415
public val autoRemove: Property<Boolean> = objects.property(Boolean::class.java).convention(true)
1516
public val alwaysPull: Property<Boolean> = objects.property(Boolean::class.java).convention(true)
1617
public val dockerHost: Property<String> = objects.property(String::class.java)
@@ -24,6 +25,9 @@ public abstract class ContainerRunTask : ContainerExecTask() {
2425
if (user != null) {
2526
options.addAll(listOf("--user", user))
2627
}
28+
if (spec.privileged.get()) {
29+
options.add("--privileged")
30+
}
2731
if (spec.autoRemove.get()) {
2832
options.add("--rm")
2933
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package dev.codebandits.container.gradle
2+
3+
import dev.codebandits.container.gradle.helpers.appendLine
4+
import org.gradle.testkit.runner.GradleRunner
5+
import org.gradle.testkit.runner.TaskOutcome
6+
import org.junit.jupiter.api.Test
7+
import strikt.api.expectThat
8+
import strikt.assertions.isEqualTo
9+
import strikt.assertions.isNotNull
10+
11+
class DockerRunPrivilegedTest : GradleProjectTest() {
12+
13+
@Test
14+
fun `dockerRun privileged is not set`() {
15+
buildGradleKtsFile.appendLine(
16+
"""
17+
import dev.codebandits.container.gradle.tasks.ContainerRunTask
18+
19+
plugins {
20+
id("dev.codebandits.container")
21+
}
22+
23+
tasks {
24+
register<ContainerRunTask>("accessMemory") {
25+
dockerRun {
26+
image = "alpine:latest"
27+
entrypoint = "ls"
28+
args = arrayOf("/dev/mem")
29+
}
30+
}
31+
}
32+
""".trimIndent()
33+
)
34+
35+
val result = GradleRunner.create()
36+
.withPluginClasspath()
37+
.withProjectDir(projectDirectory.toFile())
38+
.withArguments("accessMemory")
39+
.buildAndFail()
40+
41+
expectThat(result).get { task(":accessMemory") }.isNotNull().get { outcome }.isEqualTo(TaskOutcome.FAILED)
42+
}
43+
44+
@Test
45+
fun `dockerRun privileged is set`() {
46+
buildGradleKtsFile.appendLine(
47+
"""
48+
import dev.codebandits.container.gradle.tasks.ContainerRunTask
49+
50+
plugins {
51+
id("dev.codebandits.container")
52+
}
53+
54+
tasks {
55+
register<ContainerRunTask>("accessMemory") {
56+
dockerRun {
57+
image = "alpine:latest"
58+
entrypoint = "ls"
59+
args = arrayOf("/dev/mem")
60+
privileged = true
61+
}
62+
}
63+
}
64+
""".trimIndent()
65+
)
66+
67+
val result = GradleRunner.create()
68+
.withPluginClasspath()
69+
.withProjectDir(projectDirectory.toFile())
70+
.withArguments("accessMemory")
71+
.build()
72+
73+
expectThat(result).get { task(":accessMemory") }.isNotNull().get { outcome }.isEqualTo(TaskOutcome.SUCCESS)
74+
}
75+
}

0 commit comments

Comments
 (0)