diff --git a/pom.xml b/pom.xml index 34abd11..16c55c7 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.eficode devstack - 2.3.2-SNAPSHOT + 2.3.3-SNAPSHOT jar DevStack diff --git a/src/main/groovy/com/eficode/devstack/container/impl/JsmContainer.groovy b/src/main/groovy/com/eficode/devstack/container/impl/JsmContainer.groovy index 12f3682..893c248 100644 --- a/src/main/groovy/com/eficode/devstack/container/impl/JsmContainer.groovy +++ b/src/main/groovy/com/eficode/devstack/container/impl/JsmContainer.groovy @@ -22,12 +22,23 @@ class JsmContainer implements Container { String containerImageTag = "latest" long jvmMaxRam = 6000 + private String debugPort //Contains the port used for JVM debug + JsmContainer(String dockerHost = "", String dockerCertPath = "") { if (dockerHost && dockerCertPath) { assert setupSecureRemoteConnection(dockerHost, dockerCertPath): "Error setting up secure remote docker connection" } } + /** + * Enables JVM debug of JIRA for port portNr + * @param portNr + */ + void enableJvmDebug(String portNr = "5005") { + + assert !created: "Error, cant enable JVM Debug for a container that has already been crated" + debugPort = portNr + } /** * Gets the latest version number from Atlassian Marketplace @@ -38,9 +49,9 @@ class JsmContainer implements Container { UnirestInstance unirest = Unirest.spawnInstance() HttpResponse response = unirest.get("https://marketplace.atlassian.com/rest/2/products/key/jira-servicedesk/versions/latest").asJson() as HttpResponse - assert response.success : "Error getting latest JSM version from marketplace" + assert response.success: "Error getting latest JSM version from marketplace" String version = response?.body?.object?.get("name") - assert version : "Error parsing latest JSM version from marketplace response" + assert version: "Error parsing latest JSM version from marketplace response" unirest.shutDown() @@ -50,7 +61,7 @@ class JsmContainer implements Container { @Override ContainerCreateRequest setupContainerCreateRequest() { - String image = containerImage + ":" + containerImageTag + String image = containerImage + ":" + containerImageTag log.debug("Setting up container create request for JSM container") if (dockerClient.engineArch != "x86_64") { @@ -72,13 +83,24 @@ class JsmContainer implements Container { ContainerCreateRequest containerCreateRequest = new ContainerCreateRequest().tap { c -> c.image = image + c.hostname = containerName + c.env = ["JVM_MAXIMUM_MEMORY=" + jvmMaxRam + "m", "JVM_MINIMUM_MEMORY=" + ((jvmMaxRam / 2) as String) + "m", "ATL_TOMCAT_PORT=" + containerMainPort] + customEnvVar + + c.exposedPorts = [(containerMainPort + "/tcp"): [:]] c.hostConfig = new HostConfig().tap { h -> h.portBindings = [(containerMainPort + "/tcp"): [new PortBinding("0.0.0.0", (containerMainPort))]] + + if (debugPort) { + h.portBindings.put((debugPort + "/tcp"), [new PortBinding("0.0.0.0", (debugPort))]) + c.exposedPorts.put((debugPort + "/tcp"), [:]) + c.env.add("JVM_SUPPORT_RECOMMENDED_ARGS=-Xdebug -Xrunjdwp:transport=dt_socket,address=*:${debugPort},server=y,suspend=n".toString()) + } + + h.mounts = this.mounts } - c.hostname = containerName - c.env = ["JVM_MAXIMUM_MEMORY=" + jvmMaxRam + "m", "JVM_MINIMUM_MEMORY=" + ((jvmMaxRam / 2) as String) + "m", "ATL_TOMCAT_PORT=" + containerMainPort] + customEnvVar + } @@ -88,10 +110,6 @@ class JsmContainer implements Container { } - - - - boolean runOnFirstStartup() { ArrayList initialOut = runBashCommandInContainer("echo END")