Skip to content

Commit 23728e5

Browse files
Matrix with vm (#278)
* Add ReceiveSendGreetingServlet and publish wf for matric project * Add donation doc to readme and missing license header * remove gson dependency and customer models * undo changes in test till new docker images are published * Make byte read wo need to buffer size * New test to validate request & response payload capture by java agent * Spotless apply * Disable tomee test * Remove redundant check * delete custome docker files * Matix docker publish with vm option * merge conflict & skip smoke test on matrix project change
1 parent a6ed684 commit 23728e5

9 files changed

+126
-59
lines changed

.github/workflows/pr-test.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ on:
33
push:
44
branches:
55
- main
6+
paths-ignore:
7+
- '**/README.md'
8+
- 'smoke-tests/matrix'
69
pull_request:
710

811
jobs:

smoke-tests/matrix/build.gradle

Lines changed: 66 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -30,67 +30,79 @@ tasks.create("pushMatrix", DockerPushImage) {
3030
images.set(matrix)
3131
}
3232

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
3335
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+
]
6262
]
6363

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+
6594
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>
7099

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))
78104
}
79105
}
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)
94106
}
95107
}
96108
}

smoke-tests/matrix/src/jetty.dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
ARG version
22
ARG jdk
3+
ARG vm
34
FROM jetty:${version}-jre11-slim as jetty
45

5-
FROM adoptopenjdk:${jdk}
6+
FROM adoptopenjdk:${jdk}-jdk-${vm}
67
ENV JETTY_HOME /usr/local/jetty
78
ENV JETTY_BASE /var/lib/jetty
89
ENV TMPDIR /tmp/jetty

smoke-tests/matrix/src/liberty.dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
ARG version
22
ARG jdk
3+
ARG vm
34
FROM open-liberty:${version}-full-java11-openj9 as liberty
45

5-
FROM adoptopenjdk:${jdk}
6+
FROM adoptopenjdk:${jdk}-jdk-${vm}
67
ENV CONFIG /config
78
ENV LIBERTY /opt/ol
89
ENV PATH=/opt/ol/wlp/bin:/opt/ol/docker/:/opt/ol/helpers/build:$PATH \
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
ARG version
2+
ARG jdk
3+
ARG vm
4+
5+
FROM payara/server-full:${version} as default
6+
ENV HOME_DIR=$HOME_DIR
7+
8+
FROM adoptopenjdk:${jdk}-jdk-${vm}
9+
10+
# These environment variables have been confirmed to work with 5.2020.6 only
11+
ENV HOME_DIR=/opt/payara
12+
ENV PAYARA_DIR="${HOME_DIR}/appserver" \
13+
SCRIPT_DIR="${HOME_DIR}/scripts" \
14+
CONFIG_DIR="${HOME_DIR}/config" \
15+
DEPLOY_DIR="${HOME_DIR}/deployments" \
16+
PASSWORD_FILE="${HOME_DIR}/passwordFile" \
17+
ADMIN_USER="admin" \
18+
ADMIN_PASSWORD="admin" \
19+
MEM_MAX_RAM_PERCENTAGE=70.0 \
20+
MEM_XSS=512k \
21+
DOMAIN_NAME="production" \
22+
PREBOOT_COMMANDS="${HOME_DIR}/config/pre-boot-commands.asadmin" \
23+
POSTBOOT_COMMANDS="${HOME_DIR}/config/post-boot-commands.asadmin" \
24+
PATH="${PATH}:${HOME_DIR}/scripts"
25+
26+
COPY --from=default $HOME_DIR $HOME_DIR
27+
RUN rm ${PAYARA_DIR}/glassfish/modules/phonehome-bootstrap.jar
28+
29+
WORKDIR $HOME_DIR
30+
31+
EXPOSE 8080
32+
CMD ["entrypoint.sh"]
33+
COPY app.war $DEPLOY_DIR

smoke-tests/matrix/src/payara.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ARG version
22
ARG jdk
33

4-
FROM payara/server-full:${version}
4+
FROM payara/server-full:${version}${tagSuffix}
55

66
RUN rm ${PAYARA_DIR}/glassfish/modules/phonehome-bootstrap.jar
77

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
ARG version
22
ARG jdk
3+
ARG vm
34

4-
FROM tomcat:${version}-jdk${jdk}-adoptopenjdk-hotspot
5+
FROM tomcat:${version}-jdk${jdk}-adoptopenjdk-${vm}
56

67
COPY app.war /usr/local/tomcat/webapps/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
ARG version
2+
ARG jdk
3+
ARG vm
4+
5+
FROM tomee:${jdk}-jre-${version}-webprofile as default
6+
7+
FROM adoptopenjdk:${jdk}-jdk-${vm}
8+
9+
ENV SERVER_BASE=/usr/local/tomee
10+
COPY --from=default $SERVER_BASE $SERVER_BASE
11+
WORKDIR $SERVER_BASE
12+
13+
EXPOSE 8080
14+
CMD ["bin/catalina.sh", "run"]
15+
COPY app.war $SERVER_BASE/webapps/

smoke-tests/matrix/src/wildfly.dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
ARG jdk
2-
FROM adoptopenjdk:${jdk}
2+
ARG vm
3+
FROM adoptopenjdk:${jdk}-jdk-${vm}
34

45
# Create a user and group used to launch processes
56
# The user ID 1000 is the default for the first "regular" user on Fedora/RHEL,

0 commit comments

Comments
 (0)