Skip to content

Commit 9690768

Browse files
authored
Merge pull request #44 from eficode/2.3.23
2.3.23
2 parents a7aa388 + 213eb0a commit 9690768

File tree

11 files changed

+435
-107
lines changed

11 files changed

+435
-107
lines changed

.idea/.gitignore

-3
This file was deleted.

.idea/jarRepositories.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

+7-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.eficode</groupId>
88
<artifactId>devstack</artifactId>
9-
<version>2.3.22</version>
9+
<version>2.3.23</version>
1010
<packaging>jar</packaging>
1111

1212
<name>DevStack</name>
@@ -23,7 +23,7 @@
2323
<spock-core.version>2.3-groovy-${groovy.major.version}</spock-core.version>
2424
<jiraShortcuts.version>2.0.3-SNAPSHOT-groovy-3.0</jiraShortcuts.version>
2525
<bitbucketinstancemanager.version>0.0.3-SNAPSHOT-groovy-3.0</bitbucketinstancemanager.version>
26-
<jirainstancemanager.version>2.1.7</jirainstancemanager.version>
26+
<jirainstancemanager.version>2.1.9</jirainstancemanager.version>
2727
</properties>
2828

2929

@@ -111,25 +111,26 @@
111111
</dependency>
112112

113113

114-
<dependency>
114+
<!--dependency>
115115
<groupId>org.junit.jupiter</groupId>
116116
<artifactId>junit-jupiter-api</artifactId>
117-
<version>5.9.0</version>
117+
<version>5.10.2</version>
118118
<scope>test</scope>
119119
</dependency>
120120
<dependency>
121121
<groupId>org.junit.jupiter</groupId>
122122
<artifactId>junit-jupiter-engine</artifactId>
123-
<version>5.9.0</version>
123+
<version>5.10.2</version>
124124
<scope>test</scope>
125-
</dependency>
125+
</dependency-->
126126

127127

128128

129129

130130
</dependencies>
131131

132132
<repositories>
133+
133134
<repository>
134135
<id>eficode-github-jiraManagerRest</id>
135136
<url>https://github.com/eficode/JiraInstanceManagerRest/raw/packages/repository/</url>

src/main/groovy/com/eficode/devstack/container/Container.groovy

+1-4
Original file line numberDiff line numberDiff line change
@@ -476,10 +476,7 @@ trait Container {
476476

477477

478478
if (self.isRunning()) {
479-
dockerClient.stop(self.containerId, timeoutS)
480-
if (self.isRunning()) {
481-
dockerClient.kill(self.containerId)
482-
}
479+
dockerClient.kill(self.containerId)
483480
}
484481

485482
dockerClient.rm(self.containerId)
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.eficode.devstack.container.impl
22

33
import com.eficode.devstack.container.Container
4-
import de.gesellix.docker.remote.api.ContainerCreateRequest
4+
import de.gesellix.docker.remote.api.Volume
55

66
class AllureContainer implements Container {
77

@@ -10,7 +10,6 @@ class AllureContainer implements Container {
1010
String containerImage = "frankescobar/allure-docker-service"
1111
String containerImageTag = "latest"
1212
String defaultShell = "/bin/bash"
13-
String user = "2001:2001"
1413

1514

1615
AllureContainer(String dockerHost = "", String dockerCertPath = "") {
@@ -19,5 +18,10 @@ class AllureContainer implements Container {
1918
}
2019
}
2120

21+
void setResultsVolume(String volumeName) {
22+
Volume volume = dockerClient.getOrCreateVolume(volumeName)
23+
prepareVolumeMount(volume.name, "/app/allure-results", false)
24+
}
25+
2226

2327
}

src/main/groovy/com/eficode/devstack/container/impl/JsmContainer.groovy

+16-2
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,32 @@ class JsmContainer implements Container {
3232
}
3333
}
3434

35+
3536
/**
3637
* Enables JVM debug of JIRA for port portNr
3738
* @param portNr
3839
*/
3940
void enableJvmDebug(String portNr = "5005") {
4041

41-
42-
assert !created: "Error, cant enable JVM Debug for a container that has already been created"
42+
log.info("Enabling JVM debug for port $portNr")
4343
debugPort = portNr
44+
if (jvmDebugEnabled) {
45+
log.debug("\tJVM Debug is already enabled")
46+
return
47+
}
48+
49+
4450
jvmSupportRecommendedArgs += ["-Xdebug", "-Xrunjdwp:transport=dt_socket,address=*:${debugPort},server=y,suspend=n"]
4551
}
4652

53+
/**
54+
* Checks if jvm debug is enabled for a container that has been created
55+
* @return
56+
*/
57+
boolean isJvmDebugEnabled() {
58+
hasEnv("-Xrunjdwp:transport=dt_socket,address=*:${debugPort},server=y,suspend=n")
59+
}
60+
4761
/**
4862
* Enables upload of Apps so that not only Marketplace apps can be installed
4963
* See: https://jira.atlassian.com/browse/JRASERVER-77129

src/main/groovy/com/eficode/devstack/deployment/impl/JsmDevDeployment.groovy

+56-21
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import com.eficode.devstack.container.impl.JsmContainer
66
import com.eficode.devstack.deployment.Deployment
77
import com.eficode.devstack.util.DirectorySyncer
88
import com.eficode.devstack.util.DockerClientDS
9-
import de.gesellix.docker.client.DockerClient
10-
import de.gesellix.docker.client.EngineResponseContent
119
import de.gesellix.docker.remote.api.Volume
1210
import org.slf4j.Logger
1311
import org.slf4j.LoggerFactory
@@ -25,7 +23,9 @@ class JsmDevDeployment implements Deployment {
2523
Volume srcCodeVolume
2624

2725
AllureContainer allureContainer
26+
Volume jiraReportVolume
2827
Volume allureReportVolume
28+
DirectorySyncer reportSyncer
2929

3030
DockerClientDS dockerClient
3131

@@ -40,17 +40,27 @@ class JsmDevDeployment implements Deployment {
4040
allureContainer.containerName = componentsPrefix + "-reporter"
4141
dockerClient = allureContainer.dockerClient
4242

43-
allureReportVolume = getOrCreateVolume( componentsPrefix+ "-reports")
43+
44+
allureReportVolume = dockerClient.getOrCreateVolume(componentsPrefix + "-allureReports")
45+
jiraReportVolume = dockerClient.getOrCreateVolume(componentsPrefix + "-jiraReports")
4446
allureContainer.prepareCustomEnvVar(["CHECK_RESULTS_EVERY_SECONDS=3", "KEEP_HISTORY=1", "KEEP_HISTORY_LATEST=30"])
45-
allureContainer.prepareVolumeMount(allureReportVolume.name, "/app/allure-results", false)
47+
allureContainer.setResultsVolume(allureReportVolume.name)
4648

4749

48-
srcCodeVolume = getOrCreateVolume(componentsPrefix + "-code")
50+
srcCodeVolume = dockerClient.getOrCreateVolume(componentsPrefix + "-code")
51+
srcSyncer = DirectorySyncer.getDuplicateContainer(dockerClient, "SrcSyncer")
4952
this.srcCodePaths = srcCodePaths
5053

54+
if (srcSyncer?.created) {
55+
log.warn("Old SrcSyncer container exists, removing it before proceeding")
56+
srcSyncer.stopAndRemoveContainer()
57+
srcSyncer = null
58+
}
59+
60+
5161
subDeployments.add(new JsmH2Deployment(jiraBaseUrl, dockerHost, dockerCertPath))
5262
jsmDeployment.jsmContainer.prepareVolumeMount(srcCodeVolume.name, "/var/atlassian/application-data/jira/scripts/", false)
53-
jsmDeployment.jsmContainer.prepareVolumeMount(allureReportVolume.name, "/var/atlassian/application-data/jira/allure-results/", false)
63+
jsmDeployment.jsmContainer.prepareVolumeMount(jiraReportVolume.name, "/var/atlassian/application-data/jira/allure-results/", false)
5464

5565

5666
}
@@ -66,40 +76,65 @@ class JsmDevDeployment implements Deployment {
6676

6777
@Override
6878
ArrayList<Container> getContainers() {
69-
return [srcSyncer, allureContainer, jsmContainer]
79+
return [srcSyncer, allureContainer, jsmContainer, reportSyncer]
7080
}
7181

7282
@Override
7383
void setContainers(ArrayList<Container> containers) {
7484
throw new InputMismatchException("Not implemented")
7585
}
7686

77-
Volume getOrCreateVolume(String volumeName) {
78-
Volume volume = dockerClient.getVolumesWithName(volumeName).find { true }
79-
80-
if (volume) {
81-
log.debug("\tFound existing volume:" + volume.name)
82-
} else {
83-
log.debug("\tCreating new volume $volumeName")
84-
EngineResponseContent<Volume> volumeResponse = dockerClient.createVolume(volumeName)
85-
volume = volumeResponse?.content
86-
assert volume: "Error creating volume $volumeName, " + volumeResponse?.getStatus()?.text
87-
log.debug("\t\tCreated volume:" + volume.name)
87+
@Override
88+
boolean stopAndRemoveDeployment() {
89+
90+
Volume jsmSnapshotVolume
91+
92+
try {
93+
jsmSnapshotVolume = jsmContainer.getSnapshotVolume()
94+
}catch (ignored){}
95+
96+
97+
Boolean success = Deployment.super.stopAndRemoveDeployment()
98+
if (jiraReportVolume) {
99+
dockerClient.rmVolume(jiraReportVolume.name)
100+
}
101+
if (allureReportVolume) {
102+
dockerClient.rmVolume(allureReportVolume.name)
88103
}
89104

90-
return volume
105+
if (srcCodeVolume) {
106+
dockerClient.rmVolume(srcCodeVolume.name)
107+
}
108+
109+
if (jsmSnapshotVolume) {
110+
dockerClient.rmVolume(jsmSnapshotVolume.name)
111+
}
112+
113+
return success
114+
91115
}
92116

93117
@Override
94118
boolean setupDeployment() {
95119

96120

97-
srcSyncer = DirectorySyncer.createSyncToVolume(srcCodePaths, srcCodeVolume.name, "-avh --chown=2001:2001")
121+
srcSyncer = DirectorySyncer.createSyncToVolume(srcCodePaths, srcCodeVolume.name, "SrcSyncer", "-avh --chown=2001:2001")
122+
123+
124+
reportSyncer = DirectorySyncer.syncBetweenVolumesAndUsers(jiraReportVolume.name, allureReportVolume.name, "1000:1000", "ReportSyncer")
125+
126+
98127
allureContainer.created ?: allureContainer.createContainer()
99128
allureContainer.startContainer()
100129

101-
jsmDeployment.setupDeployment(true, false)
102130

131+
jsmDeployment.setupDeployment(true, true)
132+
//Change owner of the mounted volume
133+
jsmContainer.runBashCommandInContainer("chown -R jira:jira /var/atlassian/application-data/jira/allure-results", 10, "root")
134+
135+
if (jsmDeployment.jiraRest.scriptRunnerIsInstalled()) {
136+
jsmDeployment.jiraRest.deploySpockEndpoint(['com.riadalabs.jira.plugins.insight' ])
137+
}
103138

104139
}
105140

0 commit comments

Comments
 (0)