@@ -48,7 +48,6 @@ class ImageBuilder extends DoodContainer {
4848 * @return
4949 */
5050 ImageSummary buildJsm (String jsmVersion , boolean force = false ){
51-
5251 String imageName = " atlassian/jira-servicemanagement"
5352 String artifactName = " atlassian-servicedesk"
5453 String archType = dockerClient. engineArch
@@ -76,7 +75,49 @@ class ImageBuilder extends DoodContainer {
7675 ImageSummary newImage = images. find {it. repoTags == [imageTag]}
7776 log. debug(" \t Finished building image:" + imageTag + " , ID:" + newImage. id[7 .. 17 ])
7877 return newImage
78+ }
7979
80+ ImageSummary buildFaketimeJsm (String jsmVersion , boolean force = false ){
81+ String imageName = " atlassian/jira-servicemanagement"
82+ String artifactName = " atlassian-servicedesk"
83+ String archType = dockerClient. engineArch
84+ String imageTag = " $imageName :$jsmVersion -$archType "
85+ String faketimeDockerFilePath = " /faketimebuild/Dockerfile"
86+ String faketimeImageTag = " $imageName -faketime:$jsmVersion -$archType "
87+ containerName = faketimeImageTag. replaceAll(/ [^a-zA-Z0-9_.-]/ , " -" ). take(128 - " -imageBuilder" . length())
88+ containerName + = " -imageBuilder"
89+
90+ log. info(" my name is now $containerName " )
91+
92+ // Check first if an image with the expected tag already exists
93+ if (! force) {
94+ ArrayList<ImageSummary > existingImages = dockerClient. images(). content
95+ ImageSummary existingImage = existingImages. find {it. repoTags == [faketimeImageTag]}
96+ if (existingImage) {
97+ return existingImage
98+ }
99+ }
100+
101+ String faketimeDockerFile = """
102+ FROM $imageTag
103+ WORKDIR /
104+ RUN apt-get update && apt-get install -y wget g++ make
105+ RUN wget https://github.com/odnoklassniki/jvmti-tools/raw/master/faketime/faketime.cpp
106+ RUN g++ -O2 -fPIC -shared -I \$ JAVA_HOME/include -I \$ JAVA_HOME/include/linux -olibfaketime.so faketime.cpp
107+
108+ ENV JVM_SUPPORT_RECOMMENDED_ARGS="-agentpath:/libfaketime.so=+2592000000"
109+ """
110+
111+ putBuilderCommand(" mkdir -p /faketimebuild" , " status:0" )
112+ putBuilderCommand(" cat > $faketimeDockerFilePath <<- 'EOF'\n " + faketimeDockerFile + " \n EOF" , " " ) // TODO: 2nd argument?
113+ putBuilderCommand(" cd /faketimebuild && docker build --tag $faketimeImageTag --build-arg JIRA_VERSION=$jsmVersion --build-arg ARTEFACT_NAME=$artifactName . && echo status:\$ ?" , " status:0" )
114+ putBuilderCommand(" pkill tail" , " " )
115+
116+ assert build() : " Error building the image."
117+
118+ ArrayList<ImageSummary > images = dockerClient. images(). content
119+ ImageSummary newImage = images. find {it. repoTags == [faketimeImageTag]}
120+ return newImage
80121 }
81122
82123
0 commit comments