Fix properties setting in `docker-images-mirror` (try #2)
Construct image API URL instead of using Artifactory search functions.
Change-Id: I5ba4484a6837826b4790aa0ce9a8afb4e42a0b9c
See: https://mirantis.jira.com/browse/PROD-25583
diff --git a/docker-mirror-images.groovy b/docker-mirror-images.groovy
index 522d044..aca4185 100644
--- a/docker-mirror-images.groovy
+++ b/docker-mirror-images.groovy
@@ -17,7 +17,6 @@
*
*/
import java.util.regex.Pattern
-import groovy.json.JsonSlurper
common = new com.mirantis.mk.Common()
external = false
@@ -92,18 +91,14 @@
if (setDefaultArtifactoryProperties) {
common.infoMsg("Processing artifactory props for : ${targetImageFull}")
LinkedHashMap artifactoryProperties = [:]
- // Get digest of pushed image
- String unique_image_id = sh(
- script: "docker inspect --format='{{index .RepoDigests 0}}' '${targetImageFull}'",
- returnStdout: true,
- ).trim()
- def image_sha256 = unique_image_id.tokenize(':')[1]
- def ret = new URL("https://${targetRegistry}/artifactory/api/search/checksum?sha256=${image_sha256}").getText()
- // Most probably, we would get many images, especially for external images. We need to guess
- // exactly one, which we pushing now
- def tgtGuessImage = targetImageFull.replace(':', '/').replace(targetRegistry, '')
- ArrayList img_data = new JsonSlurper().parseText(ret)['results']
- def tgtImgUrl = img_data*.uri.find { it.contains(tgtGuessImage) } - '/manifest.json'
+ // Guess API image URL to use for setting properties
+ String artRepo
+ String tgtGuessImage
+ (artRepo, tgtGuessImage) = targetImageFull.split('/', 2)
+ artRepo = artRepo.tokenize('.')[0]
+ tgtGuessImage = artRepo + '/' + tgtGuessImage.replace(':', '/')
+ String tgtImgUrl = "https://${targetRegistry}/artifactory/api/storage/${tgtGuessImage}"
+ // Collect properties
artifactoryProperties = [
'com.mirantis.targetTag' : env.IMAGE_TAG,
'com.mirantis.uniqueImageId': unique_image_id,