Skip to content

Commit

Permalink
Merge pull request #44 from eficode/2.3.23
Browse files Browse the repository at this point in the history
2.3.23
  • Loading branch information
farthinder committed May 21, 2024
2 parents a7aa388 + 213eb0a commit 9690768
Show file tree
Hide file tree
Showing 11 changed files with 435 additions and 107 deletions.
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

5 changes: 5 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.eficode</groupId>
<artifactId>devstack</artifactId>
<version>2.3.22</version>
<version>2.3.23</version>
<packaging>jar</packaging>

<name>DevStack</name>
Expand All @@ -23,7 +23,7 @@
<spock-core.version>2.3-groovy-${groovy.major.version}</spock-core.version>
<jiraShortcuts.version>2.0.3-SNAPSHOT-groovy-3.0</jiraShortcuts.version>
<bitbucketinstancemanager.version>0.0.3-SNAPSHOT-groovy-3.0</bitbucketinstancemanager.version>
<jirainstancemanager.version>2.1.7</jirainstancemanager.version>
<jirainstancemanager.version>2.1.9</jirainstancemanager.version>
</properties>


Expand Down Expand Up @@ -111,25 +111,26 @@
</dependency>


<dependency>
<!--dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0</version>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.0</version>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
</dependency-->




</dependencies>

<repositories>

<repository>
<id>eficode-github-jiraManagerRest</id>
<url>https://github.com/eficode/JiraInstanceManagerRest/raw/packages/repository/</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,10 +476,7 @@ trait Container {


if (self.isRunning()) {
dockerClient.stop(self.containerId, timeoutS)
if (self.isRunning()) {
dockerClient.kill(self.containerId)
}
dockerClient.kill(self.containerId)
}

dockerClient.rm(self.containerId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.eficode.devstack.container.impl

import com.eficode.devstack.container.Container
import de.gesellix.docker.remote.api.ContainerCreateRequest
import de.gesellix.docker.remote.api.Volume

class AllureContainer implements Container {

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


AllureContainer(String dockerHost = "", String dockerCertPath = "") {
Expand All @@ -19,5 +18,10 @@ class AllureContainer implements Container {
}
}

void setResultsVolume(String volumeName) {
Volume volume = dockerClient.getOrCreateVolume(volumeName)
prepareVolumeMount(volume.name, "/app/allure-results", false)
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,32 @@ class JsmContainer implements Container {
}
}


/**
* 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 created"
log.info("Enabling JVM debug for port $portNr")
debugPort = portNr
if (jvmDebugEnabled) {
log.debug("\tJVM Debug is already enabled")
return
}


jvmSupportRecommendedArgs += ["-Xdebug", "-Xrunjdwp:transport=dt_socket,address=*:${debugPort},server=y,suspend=n"]
}

/**
* Checks if jvm debug is enabled for a container that has been created
* @return
*/
boolean isJvmDebugEnabled() {
hasEnv("-Xrunjdwp:transport=dt_socket,address=*:${debugPort},server=y,suspend=n")
}

/**
* Enables upload of Apps so that not only Marketplace apps can be installed
* See: https://jira.atlassian.com/browse/JRASERVER-77129
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import com.eficode.devstack.container.impl.JsmContainer
import com.eficode.devstack.deployment.Deployment
import com.eficode.devstack.util.DirectorySyncer
import com.eficode.devstack.util.DockerClientDS
import de.gesellix.docker.client.DockerClient
import de.gesellix.docker.client.EngineResponseContent
import de.gesellix.docker.remote.api.Volume
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand All @@ -25,7 +23,9 @@ class JsmDevDeployment implements Deployment {
Volume srcCodeVolume

AllureContainer allureContainer
Volume jiraReportVolume
Volume allureReportVolume
DirectorySyncer reportSyncer

DockerClientDS dockerClient

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

allureReportVolume = getOrCreateVolume( componentsPrefix+ "-reports")

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


srcCodeVolume = getOrCreateVolume(componentsPrefix + "-code")
srcCodeVolume = dockerClient.getOrCreateVolume(componentsPrefix + "-code")
srcSyncer = DirectorySyncer.getDuplicateContainer(dockerClient, "SrcSyncer")
this.srcCodePaths = srcCodePaths

if (srcSyncer?.created) {
log.warn("Old SrcSyncer container exists, removing it before proceeding")
srcSyncer.stopAndRemoveContainer()
srcSyncer = null
}


subDeployments.add(new JsmH2Deployment(jiraBaseUrl, dockerHost, dockerCertPath))
jsmDeployment.jsmContainer.prepareVolumeMount(srcCodeVolume.name, "/var/atlassian/application-data/jira/scripts/", false)
jsmDeployment.jsmContainer.prepareVolumeMount(allureReportVolume.name, "/var/atlassian/application-data/jira/allure-results/", false)
jsmDeployment.jsmContainer.prepareVolumeMount(jiraReportVolume.name, "/var/atlassian/application-data/jira/allure-results/", false)


}
Expand All @@ -66,40 +76,65 @@ class JsmDevDeployment implements Deployment {

@Override
ArrayList<Container> getContainers() {
return [srcSyncer, allureContainer, jsmContainer]
return [srcSyncer, allureContainer, jsmContainer, reportSyncer]
}

@Override
void setContainers(ArrayList<Container> containers) {
throw new InputMismatchException("Not implemented")
}

Volume getOrCreateVolume(String volumeName) {
Volume volume = dockerClient.getVolumesWithName(volumeName).find { true }

if (volume) {
log.debug("\tFound existing volume:" + volume.name)
} else {
log.debug("\tCreating new volume $volumeName")
EngineResponseContent<Volume> volumeResponse = dockerClient.createVolume(volumeName)
volume = volumeResponse?.content
assert volume: "Error creating volume $volumeName, " + volumeResponse?.getStatus()?.text
log.debug("\t\tCreated volume:" + volume.name)
@Override
boolean stopAndRemoveDeployment() {

Volume jsmSnapshotVolume

try {
jsmSnapshotVolume = jsmContainer.getSnapshotVolume()
}catch (ignored){}


Boolean success = Deployment.super.stopAndRemoveDeployment()
if (jiraReportVolume) {
dockerClient.rmVolume(jiraReportVolume.name)
}
if (allureReportVolume) {
dockerClient.rmVolume(allureReportVolume.name)
}

return volume
if (srcCodeVolume) {
dockerClient.rmVolume(srcCodeVolume.name)
}

if (jsmSnapshotVolume) {
dockerClient.rmVolume(jsmSnapshotVolume.name)
}

return success

}

@Override
boolean setupDeployment() {


srcSyncer = DirectorySyncer.createSyncToVolume(srcCodePaths, srcCodeVolume.name, "-avh --chown=2001:2001")
srcSyncer = DirectorySyncer.createSyncToVolume(srcCodePaths, srcCodeVolume.name, "SrcSyncer", "-avh --chown=2001:2001")


reportSyncer = DirectorySyncer.syncBetweenVolumesAndUsers(jiraReportVolume.name, allureReportVolume.name, "1000:1000", "ReportSyncer")


allureContainer.created ?: allureContainer.createContainer()
allureContainer.startContainer()

jsmDeployment.setupDeployment(true, false)

jsmDeployment.setupDeployment(true, true)
//Change owner of the mounted volume
jsmContainer.runBashCommandInContainer("chown -R jira:jira /var/atlassian/application-data/jira/allure-results", 10, "root")

if (jsmDeployment.jiraRest.scriptRunnerIsInstalled()) {
jsmDeployment.jiraRest.deploySpockEndpoint(['com.riadalabs.jira.plugins.insight' ])
}

}

Expand Down
Loading

0 comments on commit 9690768

Please sign in to comment.