@@ -27,6 +27,8 @@ class JsmDevDeployment implements Deployment {
27
27
Volume allureReportVolume
28
28
DirectorySyncer reportSyncer
29
29
30
+ private Builder builder
31
+
30
32
DockerClientDS dockerClient
31
33
32
34
// Used when naming various Docker components
@@ -35,36 +37,23 @@ class JsmDevDeployment implements Deployment {
35
37
JsmDevDeployment (String jiraBaseUrl , String dockerHost , String dockerCertPath , ArrayList<String > srcCodePaths ) {
36
38
37
39
componentsPrefix = AllureContainer . extractDomainFromUrl(jiraBaseUrl)
40
+ subDeployments. add(new JsmH2Deployment (jiraBaseUrl, dockerHost, dockerCertPath))
41
+
38
42
39
43
allureContainer = new AllureContainer (dockerHost, dockerCertPath)
40
44
allureContainer. containerName = componentsPrefix + " -reporter"
41
45
dockerClient = allureContainer. dockerClient
42
46
43
-
44
- allureReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -allureReports" )
45
- jiraReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -jiraReports" )
46
- allureContainer. prepareCustomEnvVar([" CHECK_RESULTS_EVERY_SECONDS=3" , " KEEP_HISTORY=1" , " KEEP_HISTORY_LATEST=30" ])
47
- allureContainer. setResultsVolume(allureReportVolume. name)
48
-
49
-
50
- srcCodeVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -code" )
51
47
srcSyncer = DirectorySyncer . getDuplicateContainer(dockerClient, " SrcSyncer" )
52
- this . srcCodePaths = srcCodePaths
48
+ reportSyncer = DirectorySyncer . getDuplicateContainer(dockerClient, " ReportSyncer " )
53
49
54
- if (srcSyncer?. created) {
55
- log. warn(" Old SrcSyncer container exists, removing it before proceeding" )
56
- srcSyncer. stopAndRemoveContainer()
57
- srcSyncer = null
58
- }
59
50
60
51
61
- subDeployments. add(new JsmH2Deployment (jiraBaseUrl, dockerHost, dockerCertPath))
62
- jsmDeployment. jsmContainer. prepareVolumeMount(srcCodeVolume. name, " /var/atlassian/application-data/jira/scripts/" , false )
63
- jsmDeployment. jsmContainer. prepareVolumeMount(jiraReportVolume. name, " /var/atlassian/application-data/jira/allure-results/" , false )
64
-
52
+ this . srcCodePaths = srcCodePaths
65
53
66
54
}
67
55
56
+
68
57
JsmH2Deployment getJsmDeployment () {
69
58
return subDeployments. find { it instanceof JsmH2Deployment } as JsmH2Deployment
70
59
}
@@ -91,7 +80,8 @@ class JsmDevDeployment implements Deployment {
91
80
92
81
try {
93
82
jsmSnapshotVolume = jsmContainer. getSnapshotVolume()
94
- }catch (ignored){}
83
+ } catch (ignored) {
84
+ }
95
85
96
86
97
87
Boolean success = Deployment . super . stopAndRemoveDeployment()
@@ -118,22 +108,35 @@ class JsmDevDeployment implements Deployment {
118
108
boolean setupDeployment () {
119
109
120
110
121
- srcSyncer = DirectorySyncer . createSyncToVolume(srcCodePaths, srcCodeVolume. name, " SrcSyncer" , " -avh --chown=2001:2001" )
122
111
112
+ srcCodeVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -code" )
113
+ allureReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -allureReports" )
114
+ jiraReportVolume = dockerClient. getOrCreateVolume(componentsPrefix + " -jiraReports" )
123
115
116
+
117
+ srcSyncer = DirectorySyncer . createSyncToVolume(srcCodePaths, srcCodeVolume. name, " SrcSyncer" , " -avh --chown=2001:2001" )
124
118
reportSyncer = DirectorySyncer . syncBetweenVolumesAndUsers(jiraReportVolume. name, allureReportVolume. name, " 1000:1000" , " ReportSyncer" )
125
119
126
120
121
+ allureContainer. prepareCustomEnvVar([" CHECK_RESULTS_EVERY_SECONDS=3" , " KEEP_HISTORY=1" , " KEEP_HISTORY_LATEST=30" ])
122
+ allureContainer. setResultsVolume(allureReportVolume. name)
123
+
124
+
127
125
allureContainer. created ?: allureContainer. createContainer()
128
126
allureContainer. startContainer()
129
127
128
+ if (! jsmDeployment. jsmContainer. created) {
129
+ jsmDeployment. jsmContainer. prepareVolumeMount(srcCodeVolume. name, " /var/atlassian/application-data/jira/scripts/" , false )
130
+ jsmDeployment. jsmContainer. prepareVolumeMount(jiraReportVolume. name, " /var/atlassian/application-data/jira/allure-results/" , false )
130
131
131
- jsmDeployment. setupDeployment(true , true )
132
+ }
133
+
134
+ jsmDeployment. setupDeployment(builder. useSnapshotIfAvailable, builder. snapshotAfterCreation)
132
135
// Change owner of the mounted volume
133
136
jsmContainer. runBashCommandInContainer(" chown -R jira:jira /var/atlassian/application-data/jira/allure-results" , 10 , " root" )
134
137
135
138
if (jsmDeployment. jiraRest. scriptRunnerIsInstalled()) {
136
- jsmDeployment. jiraRest. deploySpockEndpoint([' com.riadalabs.jira.plugins.insight' ])
139
+ jsmDeployment. jiraRest. deploySpockEndpoint([' com.riadalabs.jira.plugins.insight' ])
137
140
}
138
141
139
142
}
@@ -145,6 +148,8 @@ class JsmDevDeployment implements Deployment {
145
148
private String jsmVersion = " latest"
146
149
private String jsmJvmDebugPort = " 5005"
147
150
private Boolean enableJsmDooD = false
151
+ private Boolean useSnapshotIfAvailable = false
152
+ private Boolean snapshotAfterCreation = false
148
153
149
154
private Map<String , String > appsToInstall = [:]
150
155
@@ -194,6 +199,16 @@ class JsmDevDeployment implements Deployment {
194
199
return this
195
200
}
196
201
202
+ Builder useSnapshotIfAvailable () {
203
+ this . useSnapshotIfAvailable = true
204
+ return this
205
+ }
206
+
207
+ Builder snapshotAfterCreation () {
208
+ this . snapshotAfterCreation = true
209
+ return this
210
+ }
211
+
197
212
198
213
JsmDevDeployment build () {
199
214
@@ -207,7 +222,7 @@ class JsmDevDeployment implements Deployment {
207
222
devDeployment. jsmDeployment. jsmContainer. prepareBindMount(" /var/run/docker.sock" , " /var/run/docker.sock" , false )
208
223
}
209
224
devDeployment. jsmDeployment. appsToInstall = this . appsToInstall
210
-
225
+ devDeployment . builder = this
211
226
212
227
return devDeployment
213
228
0 commit comments