@@ -6,8 +6,6 @@ import com.eficode.devstack.container.impl.JsmContainer
6
6
import com.eficode.devstack.deployment.Deployment
7
7
import com.eficode.devstack.util.DirectorySyncer
8
8
import com.eficode.devstack.util.DockerClientDS
9
- import de.gesellix.docker.client.DockerClient
10
- import de.gesellix.docker.client.EngineResponseContent
11
9
import de.gesellix.docker.remote.api.Volume
12
10
import org.slf4j.Logger
13
11
import org.slf4j.LoggerFactory
@@ -25,7 +23,9 @@ class JsmDevDeployment implements Deployment {
25
23
Volume srcCodeVolume
26
24
27
25
AllureContainer allureContainer
26
+ Volume jiraReportVolume
28
27
Volume allureReportVolume
28
+ DirectorySyncer reportSyncer
29
29
30
30
DockerClientDS dockerClient
31
31
@@ -40,17 +40,27 @@ class JsmDevDeployment implements Deployment {
40
40
allureContainer. containerName = componentsPrefix + " -reporter"
41
41
dockerClient = allureContainer. dockerClient
42
42
43
- allureReportVolume = getOrCreateVolume( componentsPrefix+ " -reports" )
43
+
44
+ allureReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -allureReports" )
45
+ jiraReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -jiraReports" )
44
46
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)
46
48
47
49
48
- srcCodeVolume = getOrCreateVolume(componentsPrefix + " -code" )
50
+ srcCodeVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -code" )
51
+ srcSyncer = DirectorySyncer . getDuplicateContainer(dockerClient, " SrcSyncer" )
49
52
this . srcCodePaths = srcCodePaths
50
53
54
+ if (srcSyncer?. created) {
55
+ log. warn(" Old SrcSyncer container exists, removing it before proceeding" )
56
+ srcSyncer. stopAndRemoveContainer()
57
+ srcSyncer = null
58
+ }
59
+
60
+
51
61
subDeployments. add(new JsmH2Deployment (jiraBaseUrl, dockerHost, dockerCertPath))
52
62
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 )
54
64
55
65
56
66
}
@@ -66,40 +76,65 @@ class JsmDevDeployment implements Deployment {
66
76
67
77
@Override
68
78
ArrayList<Container > getContainers () {
69
- return [srcSyncer, allureContainer, jsmContainer]
79
+ return [srcSyncer, allureContainer, jsmContainer, reportSyncer ]
70
80
}
71
81
72
82
@Override
73
83
void setContainers (ArrayList<Container > containers ) {
74
84
throw new InputMismatchException (" Not implemented" )
75
85
}
76
86
77
- Volume getOrCreateVolume (String volumeName ) {
78
- Volume volume = dockerClient. getVolumesWithName(volumeName). find { true }
79
-
80
- if (volume) {
81
- log. debug(" \t Found existing volume:" + volume. name)
82
- } else {
83
- log. debug(" \t Creating 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\t Created 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)
88
103
}
89
104
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
+
91
115
}
92
116
93
117
@Override
94
118
boolean setupDeployment () {
95
119
96
120
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
+
98
127
allureContainer. created ?: allureContainer. createContainer()
99
128
allureContainer. startContainer()
100
129
101
- jsmDeployment. setupDeployment(true , false )
102
130
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
+ }
103
138
104
139
}
105
140
0 commit comments