Add versionHistory property for docker images

Property versionHistory will track all history path for external images:
where it come from and which version.

Change-Id: I9bd15df174d9fffc1d2df0c498e7c76f94b0ebad
Related-bug: PROD-24725
diff --git a/docker-mirror-images.groovy b/docker-mirror-images.groovy
index dc88762..db37364 100644
--- a/docker-mirror-images.groovy
+++ b/docker-mirror-images.groovy
@@ -76,6 +76,7 @@
                             sh("docker push ${targetImageFull}")
                         }
                     }
+                    def buildTime = new Date().format("yyyyMMdd-HH:mm:ss.SSS", TimeZone.getTimeZone('UTC'))
                     if (targetImageFull.contains(externalMarker)) {
                         external = true
                     }
@@ -94,22 +95,23 @@
                         // exactly one, which we pushing now
                         guessImage = targetImageFull.replace(':', '/').replace(targetRegistry, '')
                         ArrayList img_data = new JsonSlurper().parseText(ret)['results']
-                        img_data*.uri.each { imgUrl ->
-                            if (imgUrl.contains(guessImage)) {
-                                artifactoryProperties = [
-                                    'com.mirantis.targetTag'    : env.IMAGE_TAG,
-                                    'com.mirantis.uniqueImageId': unique_image_id,
-                                ]
-                                if (external) {
-                                    artifactoryProperties << ['com.mirantis.externalImage': external]
-                                }
-                                common.infoMsg("artifactoryProperties=> ${artifactoryProperties}")
-                                // Call pipeline-library routine to set properties
-                                def mcp_artifactory = new com.mirantis.mcp.MCPArtifactory()
-                                common.retry(3, 5) {
-                                    mcp_artifactory.setProperties(imgUrl - '/manifest.json', artifactoryProperties)
-                                }
-                            }
+                        def imgUrl = img_data*.uri.find { it.contains(guessImage) } - '/manifest.json'
+                        artifactoryProperties = [
+                            'com.mirantis.targetTag'    : env.IMAGE_TAG,
+                            'com.mirantis.uniqueImageId': unique_image_id,
+                        ]
+                        if (external) {
+                            artifactoryProperties << ['com.mirantis.externalImage': external]
+                        }
+                        // Call pipeline-library routine to set properties
+                        def mcp_artifactory = new com.mirantis.mcp.MCPArtifactory()
+                        def historyProperties = mcp_artifactory.getPropertiesForArtifact(imgUrl).get('com.mirantis.versionHistory', [])
+                        historyProperties.add("${buildTime}%5C=${sourceImage}")
+                        // %5C - backslash symbol is needed
+                        artifactoryProperties << [ 'com.mirantis.versionHistory': historyProperties.join(',') ]
+                        common.infoMsg("artifactoryProperties=> ${artifactoryProperties}")
+                        common.retry(3, 5) {
+                            mcp_artifactory.setProperties(imgUrl, artifactoryProperties)
                         }
                     }
                 }