@@ -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
@@ -27,7 +25,9 @@ class JsmDevDeployment implements Deployment {
27
25
Volume srcCodeVolume
28
26
29
27
AllureContainer allureContainer
28
+ Volume jiraReportVolume
30
29
Volume allureReportVolume
30
+ DirectorySyncer reportSyncer
31
31
32
32
DockerClientDS dockerClient
33
33
@@ -42,17 +42,27 @@ class JsmDevDeployment implements Deployment {
42
42
allureContainer. containerName = componentsPrefix + " -reporter"
43
43
dockerClient = allureContainer. dockerClient
44
44
45
- allureReportVolume = getOrCreateVolume( componentsPrefix+ " -reports" )
45
+
46
+ allureReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -allureReports" )
47
+ jiraReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -jiraReports" )
46
48
allureContainer. prepareCustomEnvVar([" CHECK_RESULTS_EVERY_SECONDS=3" , " KEEP_HISTORY=1" , " KEEP_HISTORY_LATEST=30" ])
47
- allureContainer. prepareVolumeMount (allureReportVolume. name, " /app/allure-results " , false )
49
+ allureContainer. setResultsVolume (allureReportVolume. name)
48
50
49
51
50
- srcCodeVolume = getOrCreateVolume(componentsPrefix + " -code" )
52
+ srcCodeVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -code" )
53
+ srcSyncer = DirectorySyncer . getDuplicateContainer(dockerClient, " SrcSyncer" )
51
54
this . srcCodePaths = srcCodePaths
52
55
56
+ if (srcSyncer?. created) {
57
+ log. warn(" Old SrcSyncer container exists, removing it before proceeding" )
58
+ srcSyncer. stopAndRemoveContainer()
59
+ srcSyncer = null
60
+ }
61
+
62
+
53
63
subDeployments. add(new JsmH2Deployment (jiraBaseUrl, dockerHost, dockerCertPath))
54
64
jsmDeployment. jsmContainer. prepareVolumeMount(srcCodeVolume. name, " /var/atlassian/application-data/jira/scripts/" , false )
55
- jsmDeployment. jsmContainer. prepareVolumeMount(allureReportVolume . name, " /var/atlassian/application-data/jira/allure-results/" , false )
65
+ jsmDeployment. jsmContainer. prepareVolumeMount(jiraReportVolume . name, " /var/atlassian/application-data/jira/allure-results/" , false )
56
66
57
67
58
68
}
@@ -68,40 +78,65 @@ class JsmDevDeployment implements Deployment {
68
78
69
79
@Override
70
80
ArrayList<Container > getContainers () {
71
- return [srcSyncer, allureContainer, jsmContainer]
81
+ return [srcSyncer, allureContainer, jsmContainer, reportSyncer ]
72
82
}
73
83
74
84
@Override
75
85
void setContainers (ArrayList<Container > containers ) {
76
86
throw new InputMismatchException (" Not implemented" )
77
87
}
78
88
79
- Volume getOrCreateVolume (String volumeName ) {
80
- Volume volume = dockerClient. getVolumesWithName(volumeName). find { true }
81
-
82
- if (volume) {
83
- log. debug(" \t Found existing volume:" + volume. name)
84
- } else {
85
- log. debug(" \t Creating new volume $volumeName " )
86
- EngineResponseContent<Volume > volumeResponse = dockerClient. createVolume(volumeName)
87
- volume = volumeResponse?. content
88
- assert volume: " Error creating volume $volumeName , " + volumeResponse?. getStatus()?. text
89
- log. debug(" \t\t Created volume:" + volume. name)
89
+ @Override
90
+ boolean stopAndRemoveDeployment () {
91
+
92
+ Volume jsmSnapshotVolume
93
+
94
+ try {
95
+ jsmSnapshotVolume = jsmContainer. getSnapshotVolume()
96
+ }catch (ignored){}
97
+
98
+
99
+ Boolean success = Deployment . super . stopAndRemoveDeployment()
100
+ if (jiraReportVolume) {
101
+ dockerClient. rmVolume(jiraReportVolume. name)
102
+ }
103
+ if (allureReportVolume) {
104
+ dockerClient. rmVolume(allureReportVolume. name)
90
105
}
91
106
92
- return volume
107
+ if (srcCodeVolume) {
108
+ dockerClient. rmVolume(srcCodeVolume. name)
109
+ }
110
+
111
+ if (jsmSnapshotVolume) {
112
+ dockerClient. rmVolume(jsmSnapshotVolume. name)
113
+ }
114
+
115
+ return success
116
+
93
117
}
94
118
95
119
@Override
96
120
boolean setupDeployment () {
97
121
98
122
99
123
srcSyncer = DirectorySyncer . createSyncToVolume(srcCodePaths, srcCodeVolume. name, " SrcSyncer" , " -avh --chown=2001:2001" )
124
+
125
+
126
+ reportSyncer = DirectorySyncer . syncBetweenVolumesAndUsers(jiraReportVolume. name, allureReportVolume. name, " 1000:1000" , " ReportSyncer" )
127
+
128
+
100
129
allureContainer. created ?: allureContainer. createContainer()
101
130
allureContainer. startContainer()
102
131
103
- jsmDeployment. setupDeployment(true , false )
104
132
133
+ jsmDeployment. setupDeployment(true , true )
134
+ // Change owner of the mounted volume
135
+ jsmContainer. runBashCommandInContainer(" chown -R jira:jira /var/atlassian/application-data/jira/allure-results" , 10 , " root" )
136
+
137
+ if (jsmDeployment. jiraRest. scriptRunnerIsInstalled()) {
138
+ jsmDeployment. jiraRest. deploySpockEndpoint([' com.riadalabs.jira.plugins.insight' ])
139
+ }
105
140
106
141
}
107
142
0 commit comments