-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathbuild.gradle
More file actions
110 lines (96 loc) · 3.89 KB
/
build.gradle
File metadata and controls
110 lines (96 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
plugins {
id "war"
id "com.bmuschko.docker-remote-api" version "6.6.1"
}
compileJava {
options.release.set(8)
}
repositories {
mavenCentral()
}
dependencies {
implementation("javax.servlet:javax.servlet-api:3.0.1")
}
def buildMatrixTask = tasks.create("buildMatrix") {
group = "build"
description = "Builds all Docker images for the test matrix"
}
Set<String> matrix = []
tasks.create("pushMatrix", DockerPushImage) {
group = "publishing"
description = "Push all Docker images for the test matrix"
dependsOn(buildMatrixTask)
images.set(matrix)
}
// Each line under appserver describes one matrix of (version x vm x jdk), dockerfile key overrides
// Dockerfile name, args key passes raw arguments to docker build
def targets = [
"jetty": [
[version: ["9.4.35"], vm: ["hotspot", "openj9"], jdk: ["8", "11", "15"]],
[version: ["10.0.0"], vm: ["hotspot", "openj9"], jdk: ["11", "15"]],
],
"tomcat": [
[version: ["7.0.107"], vm: ["hotspot", "openj9"], jdk: ["8"]],
[version: ["8.5.60", "9.0.40", "10.0.0"], vm: ["hotspot", "openj9"], jdk: ["8", "11"]]
],
"tomee": [
[version: ["7.0.0"], vm: ["hotspot"], jdk: ["8"]],
[version: ["8.0.6"], vm: ["hotspot"], jdk: ["8", "11"]],
[version: ["7.0.0"], vm: ["openj9"], jdk: ["8"], dockerfile: "tomee-custom"],
[version: ["8.0.6"], vm: ["openj9"], jdk: ["8", "11"], dockerfile: "tomee-custom"]
],
"payara": [
[version: ["5.2020.6"], vm: ["hotspot"], jdk: ["8"], args: [tagSuffix: ""]],
[version: ["5.2020.6"], vm: ["hotspot"], jdk: ["11"], args: [tagSuffix: "-jdk11"]],
[version: ["5.2020.6"], vm: ["openj9"], jdk: ["8", "11"], dockerfile: "payara-custom-5.2020.6"]
],
"wildfly": [
[version: ["13.0.0.Final"], vm: ["hotspot", "openj9"], jdk: ["8"]],
[version: ["17.0.1.Final", "21.0.0.Final"], vm: ["hotspot", "openj9"], jdk: ["8", "11", "15"]]
],
"liberty": [
[version: ["20.0.0.12"], vm: ["hotspot", "openj9"], jdk: ["8", "11", "15"]]
]
]
def configureImage(server, dockerfile, version, vm, jdk, Map<String, String> extraArgs, extraTag) {
def dockerWorkingDir = new File(project.buildDir, "docker")
def prepareTask = tasks.register("${server}ImagePrepare-$version-jdk$jdk-$vm", Copy) {
def warTask = project.tasks.war
it.dependsOn(warTask)
it.into(dockerWorkingDir)
it.from("src")
it.from(warTask.archiveFile) {
rename { _ -> "app.war" }
}
}
def vmSuffix = vm == "hotspot" ? "" : "-$vm"
def image = "hypertrace/java-agent-test-containers:$server-$version-jdk$jdk$vmSuffix-$extraTag"
def buildTask = tasks.register("${server}Image-$version-jdk$jdk$vmSuffix", DockerBuildImage) {
it.dependsOn(prepareTask)
group = "build"
description = "Builds Docker image with $server $version on JDK $jdk"
it.inputDir.set(dockerWorkingDir)
it.images.add(image)
it.dockerFile.set(new File(dockerWorkingDir, dockerfile))
it.buildArgs.set(extraArgs + [jdk: jdk, vm: vm, version: version])
}
project.tasks.buildMatrix.dependsOn(buildTask)
return image
}
def extraTag = findProperty("extraTag") ?: new Date().format("yyyyMMdd.HHmmSS")
targets.each { server, matrices ->
matrices.forEach { entry ->
def dockerfile = (entry["dockerfile"]?.toString() ?: server) + ".dockerfile"
def extraArgs = (entry["args"] ?: [:]) as Map<String, String>
entry.version.forEach { version ->
entry.vm.forEach { vm ->
entry.jdk.forEach { jdk ->
matrix.add(configureImage(server, dockerfile, version, vm, jdk, extraArgs, extraTag))
}
}
}
}
}
assemble.dependsOn(buildMatrixTask)