@@ -48,7 +48,6 @@ class ImageBuilder extends DoodContainer {
48
48
* @return
49
49
*/
50
50
ImageSummary buildJsm (String jsmVersion , boolean force = false ){
51
-
52
51
String imageName = " atlassian/jira-servicemanagement"
53
52
String artifactName = " atlassian-servicedesk"
54
53
String archType = dockerClient. engineArch
@@ -76,7 +75,49 @@ class ImageBuilder extends DoodContainer {
76
75
ImageSummary newImage = images. find {it. repoTags == [imageTag]}
77
76
log. debug(" \t Finished building image:" + imageTag + " , ID:" + newImage. id[7 .. 17 ])
78
77
return newImage
78
+ }
79
79
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
80
121
}
81
122
82
123
0 commit comments