@@ -30,67 +30,79 @@ tasks.create("pushMatrix", DockerPushImage) {
30
30
images. set(matrix)
31
31
}
32
32
33
+ // Each line under appserver describes one matrix of (version x vm x jdk), dockerfile key overrides
34
+ // Dockerfile name, args key passes raw arguments to docker build
33
35
def targets = [
34
- " jetty" : [
35
- " 9.4.35" : [" 8" , " 11" , " 15" ],
36
- " 10.0.0" : [" 11" , " 15" ],
37
- ],
38
- " tomcat" : [
39
- " 7.0.107" : [" 8" ],
40
- " 8.5.60" : [" 8" , " 11" ],
41
- " 9.0.40" : [" 8" , " 11" ],
42
- " 10.0.0" : [" 8" , " 11" ]
43
- ],
44
- " tomee" : [
45
- [version : [" 7.0.0" ], vm : [" hotspot" ], jdk : [" 8" ]],
46
- [version : [" 8.0.6" ], vm : [" hotspot" ], jdk : [" 8" , " 11" ]],
47
- [version : [" 7.0.0" ], vm : [" openj9" ], jdk : [" 8" ], dockerfile : " tomee-custom" ],
48
- [version : [" 8.0.6" ], vm : [" openj9" ], jdk : [" 8" , " 11" ], dockerfile : " tomee-custom" ]
49
- ],
50
- " payara" : [
51
- " 5.2020.6" : [" 8" ],
52
- " 5.2020.6-jdk11" : [" 11" ]
53
- ],
54
- " wildfly" : [
55
- " 13.0.0.Final" : [" 8" ],
56
- " 17.0.1.Final" : [" 8" , " 11" , " 15" ],
57
- " 21.0.0.Final" : [" 8" , " 11" , " 15" ]
58
- ],
59
- " liberty" : [
60
- " 20.0.0.12" : [" 8" , " 11" , " 15" , " 8-jdk-openj9" , " 11-jdk-openj9" , " 15-jdk-openj9" ]
61
- ]
36
+ " jetty" : [
37
+ [version : [" 9.4.35" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" , " 11" , " 15" ]],
38
+ [version : [" 10.0.0" ], vm : [" hotspot" , " openj9" ], jdk : [" 11" , " 15" ]],
39
+ ],
40
+ " tomcat" : [
41
+ [version : [" 7.0.107" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" ]],
42
+ [version : [" 8.5.60" , " 9.0.40" , " 10.0.0" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" , " 11" ]]
43
+ ],
44
+ " tomee" : [
45
+ [version : [" 7.0.0" ], vm : [" hotspot" ], jdk : [" 8" ]],
46
+ [version : [" 8.0.6" ], vm : [" hotspot" ], jdk : [" 8" , " 11" ]],
47
+ [version : [" 7.0.0" ], vm : [" openj9" ], jdk : [" 8" ], dockerfile : " tomee-custom" ],
48
+ [version : [" 8.0.6" ], vm : [" openj9" ], jdk : [" 8" , " 11" ], dockerfile : " tomee-custom" ]
49
+ ],
50
+ " payara" : [
51
+ [version : [" 5.2020.6" ], vm : [" hotspot" ], jdk : [" 8" ], args : [tagSuffix : " " ]],
52
+ [version : [" 5.2020.6" ], vm : [" hotspot" ], jdk : [" 11" ], args : [tagSuffix : " -jdk11" ]],
53
+ [version : [" 5.2020.6" ], vm : [" openj9" ], jdk : [" 8" , " 11" ], dockerfile : " payara-custom-5.2020.6" ]
54
+ ],
55
+ " wildfly" : [
56
+ [version : [" 13.0.0.Final" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" ]],
57
+ [version : [" 17.0.1.Final" , " 21.0.0.Final" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" , " 11" , " 15" ]]
58
+ ],
59
+ " liberty" : [
60
+ [version : [" 20.0.0.12" ], vm : [" hotspot" , " openj9" ], jdk : [" 8" , " 11" , " 15" ]]
61
+ ]
62
62
]
63
63
64
- def dockerWorkingDir = new File (project. buildDir, " docker" )
64
+ def configureImage (server , dockerfile , version , vm , jdk , Map<String , String > extraArgs , extraTag ) {
65
+ def dockerWorkingDir = new File (project. buildDir, " docker" )
66
+
67
+ def prepareTask = tasks. register(" ${ server} ImagePrepare-$version -jdk$jdk -$vm " , Copy ) {
68
+ def warTask = project. tasks. war
69
+ it. dependsOn(warTask)
70
+ it. into(dockerWorkingDir)
71
+ it. from(" src" )
72
+ it. from(warTask. archiveFile) {
73
+ rename { _ -> " app.war" }
74
+ }
75
+ }
76
+ def vmSuffix = vm == " hotspot" ? " " : " -$vm "
77
+ def image = " hypertrace/java-agent-test-containers:$server -$version -jdk$jdk $vmSuffix -$extraTag "
78
+
79
+ def buildTask = tasks. register(" ${ server} Image-$version -jdk$jdk $vmSuffix " , DockerBuildImage ) {
80
+ it. dependsOn(prepareTask)
81
+ group = " build"
82
+ description = " Builds Docker image with $server $version on JDK $jdk "
83
+
84
+ it. inputDir. set(dockerWorkingDir)
85
+ it. images. add(image)
86
+ it. dockerFile. set(new File (dockerWorkingDir, dockerfile))
87
+ it. buildArgs. set(extraArgs + [jdk : jdk, vm : vm, version : version])
88
+ }
89
+
90
+ project. tasks. buildMatrix. dependsOn(buildTask)
91
+ return image
92
+ }
93
+
65
94
def extraTag = findProperty(" extraTag" ) ?: new Date (). format(" yyyyMMdd.HHmmSS" )
66
- targets. each { server, data ->
67
- data . forEach { version , jdks ->
68
- jdks . forEach { jdk ->
69
- def dockerfile = " ${ server } .dockerfile "
95
+ targets. each { server, matrices ->
96
+ matrices . forEach { entry ->
97
+ def dockerfile = (entry[ " dockerfile " ] ?. toString() ?: server) + " .dockerfile "
98
+ def extraArgs = (entry[ " args " ] ?: [:]) as Map< String , String >
70
99
71
- def prepareTask = tasks. register(" ${ server} ImagePrepare-$version -jdk$jdk " , Copy ) {
72
- def warTask = project. tasks. war
73
- it. dependsOn(warTask)
74
- it. into(dockerWorkingDir)
75
- it. from(" src" )
76
- it. from(warTask. archiveFile) {
77
- rename { _ -> " app.war" }
100
+ entry. version. forEach { version ->
101
+ entry. vm. forEach { vm ->
102
+ entry. jdk. forEach { jdk ->
103
+ matrix. add(configureImage(server, dockerfile, version, vm, jdk, extraArgs, extraTag))
78
104
}
79
105
}
80
- def image = " hypertrace/java-agent-test-containers:$server -$version -jdk$jdk -$extraTag "
81
- matrix. add(image)
82
- def buildTask = tasks. register(" ${ server} Image-$version -jdk$jdk " , DockerBuildImage ) {
83
- it. dependsOn(prepareTask)
84
- group = " build"
85
- description = " Builds Docker image with $server $version on JDK $jdk "
86
-
87
- it. inputDir. set(dockerWorkingDir)
88
- it. images. add(image)
89
- it. dockerFile. set(new File (dockerWorkingDir, dockerfile))
90
- it. buildArgs. set([" version" : version, " jdk" : jdk])
91
- }
92
-
93
- buildMatrixTask. dependsOn(buildTask)
94
106
}
95
107
}
96
108
}
0 commit comments