Merge "Regenerate index.yaml in binary repository during a promotion"
diff --git a/src/com/mirantis/mcp/MCPArtifactory.groovy b/src/com/mirantis/mcp/MCPArtifactory.groovy
index cc30f8c..6f3780a 100644
--- a/src/com/mirantis/mcp/MCPArtifactory.groovy
+++ b/src/com/mirantis/mcp/MCPArtifactory.groovy
@@ -190,6 +190,31 @@
}
/**
+ * Get checksums of artifact
+ *
+ * @param artifactoryUrl String, an URL ofArtifactory repo
+ * @param repoName Artifact repository name
+ * @param artifactName Artifactory object name
+ * @param checksumType Type of checksum (default md5)
+ */
+
+def getArtifactChecksum(artifactoryUrl, repoName, artifactName, checksumType = 'md5'){
+ def url = "${artifactoryUrl}/api/storage/${repoName}/${artifactName}"
+ withCredentials([
+ [$class : 'UsernamePasswordMultiBinding',
+ credentialsId : 'artifactory',
+ passwordVariable: 'ARTIFACTORY_PASSWORD',
+ usernameVariable: 'ARTIFACTORY_LOGIN']
+ ]) {
+ def result = sh(script: "bash -c \"curl -X GET -u ${ARTIFACTORY_LOGIN}:${ARTIFACTORY_PASSWORD} \'${url}\'\"",
+ returnStdout: true).trim()
+ }
+
+ def properties = new groovy.json.JsonSlurperClassic().parseText(result)
+ return properties['checksums'][checksumType]
+}
+
+/**
* Check if image with tag exist by provided path
* Returns true or false
*
@@ -199,7 +224,7 @@
* @param artifactoryCreds String, artifactory creds to use. Optional, default is 'artifactory'
*/
def imageExists(String artifactoryURL, String imageRepo, String tag, String artifactoryCreds = 'artifactory') {
- def url = artifactoryURL + '/v2/' + imageRepo + '/manifest/' + tag
+ def url = artifactoryURL + '/v2/' + imageRepo + '/manifests/' + tag
def result
withCredentials([
[$class : 'UsernamePasswordMultiBinding',
diff --git a/src/com/mirantis/mk/Artifactory.groovy b/src/com/mirantis/mk/Artifactory.groovy
index 84eb143..824ba4f 100644
--- a/src/com/mirantis/mk/Artifactory.groovy
+++ b/src/com/mirantis/mk/Artifactory.groovy
@@ -429,6 +429,22 @@
}
/**
+ * Get checksums of artifact
+ *
+ * @param art Artifactory connection object
+ * @param artifactName Artifactory object name
+ * @param checksum Type of checksum (default md5)
+ * @param repoName Artifact repository name
+ */
+
+def getArtifactChecksum(art, repoName, artifactName, checksum = 'md5'){
+ def artifactory = new com.mirantis.mk.Artifactory()
+ def uri = "/storage/${repoName}/${artifactName}"
+ def output = artifactory.restGet(art, uri)
+ return output['checksums']["${checksum}"]
+}
+
+/**
* Create Helm repo for Artifactory
*
* @param art Artifactory connection object
diff --git a/src/com/mirantis/mk/Workflow.groovy b/src/com/mirantis/mk/Workflow.groovy
index 3a58bd3..596320b 100644
--- a/src/com/mirantis/mk/Workflow.groovy
+++ b/src/com/mirantis/mk/Workflow.groovy
@@ -54,9 +54,13 @@
if (!global_variables[param.value.get_variable_from_url]) {
global_variables[param.value.get_variable_from_url] = env[param.value.get_variable_from_url] ?: ''
}
- variable_content = http.restGet(base, global_variables[param.value.get_variable_from_url])
- parameters.add([$class: "${param.value.type}", name: "${param.key}", value: variable_content])
- println "${param.key}: <${param.value.type}> ${variable_content}"
+ if (global_variables[param.value.get_variable_from_url]) {
+ variable_content = http.restGet(base, global_variables[param.value.get_variable_from_url])
+ parameters.add([$class: "${param.value.type}", name: "${param.key}", value: variable_content])
+ println "${param.key}: <${param.value.type}> ${variable_content}"
+ } else {
+ println "${param.key} is empty, skipping get_variable_from_url"
+ }
} else if (param.value.containsKey('use_template')) {
template = engine.createTemplate(param.value.use_template).make(global_variables)
parameters.add([$class: "${param.value.type}", name: "${param.key}", value: template.toString()])
@@ -102,6 +106,7 @@
} else {
// Warning: no artifact with expected name
println "Artifact ${artifact.value} for ${artifact.key} not found in the build results ${build_url}, found the following artifacts:\n${job_artifacts}"
+ global_variables[artifact.key] = ''
}
}
}