11import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
22import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
3+ import org.gradle.api.services.BuildService
4+ import org.gradle.api.services.BuildServiceParameters
35
46plugins {
57 id(" otel.spotless-conventions" )
@@ -16,11 +18,20 @@ data class ImageTarget(
1618 val windows : Boolean = true
1719)
1820
21+ abstract class WindowsDockerBuildService : BuildService <BuildServiceParameters .None >
22+
1923val extraTag = findProperty(" extraTag" )
2024 ? : java.time.format.DateTimeFormatter .ofPattern(" yyyyMMdd.HHmmSS" ).format(java.time.LocalDateTime .now())
2125
2226val latestJava = " 25" // renovate(java-version)
2327
28+ gradle.sharedServices.registerIfAbsent(
29+ " windowsDockerBuildService" ,
30+ WindowsDockerBuildService ::class .java
31+ ) {
32+ maxParallelUsages.set(1 )
33+ }
34+
2435// Each line under appserver describes one matrix of (version x vm x jdk), dockerfile key overrides
2536// Dockerfile name, args key passes raw arguments to docker build
2637val targets = mapOf (
@@ -352,6 +363,10 @@ fun configureImage(
352363 group = " build"
353364 description = " Builds Docker image with $server $version on JDK $jdk -$vm${if (isWindows) " on Windows" else " " } "
354365
366+ if (isWindows) {
367+ usesService(gradle.sharedServices.registrations[" windowsDockerBuildService" ].service)
368+ }
369+
355370 inputDir.set(dockerWorkingDir)
356371 images.add(image)
357372 dockerFile.set(File (dockerWorkingDir.get().asFile, dockerFileName))
0 commit comments