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")