Implement getBinaryBuildProperties method
1. getBinaryBuildProperties() should be used to define mandatory
properties for binary artifact, which are:
"gerritProject=${env.GERRIT_PROJECT}",
"gerritChangeNumber=${env.GERRIT_CHANGE_NUMBER}",
"gerritPatchsetNumber=${env.GERRIT_PATCHSET_NUMBER}",
"gerritChangeId=${env.GERRIT_CHANGE_ID}",
"gitSha=${env.GERRIT_PATCHSET_REVISION}"
2. User can add some custom properties, e.g:
def properties = tools.getBinaryBuildProperties(
["test=123",
"prop1=val1",
prop2=val2"
])
3. The resulting values will be the string in props format with
namespace com.mirantis, e.g:
gerritProject=asd;gerritChangeNumber=123;gerritChangeId=ddd
4. How to use:
def tools = new ci.mcp.Tools()
...
def buildInfo = Artifactory.newBuildInfo()
...
def properties = tools.getBinaryBuildProperties()
...
// Create the upload spec.
def uploadSpec = """{
"files": [
{
"pattern": "**",
"target": "some/target",
"props": "${properties}"
}
]
}"""
server.upload(uploadSpec, buildInfo)
server.publishBuildInfo buildInfo
Change-Id: I6dcc879c10b7fccf6dfcd8cb3ce86f52311c1a5a
diff --git a/src/ci/mcp/Tools.groovy b/src/ci/mcp/Tools.groovy
index 2c1986f..6772288 100644
--- a/src/ci/mcp/Tools.groovy
+++ b/src/ci/mcp/Tools.groovy
@@ -3,6 +3,13 @@
/**
* https://issues.jenkins-ci.org/browse/JENKINS-26481
* fix groovy List.collect()
+**/
+@NonCPS
+def constructString(ArrayList options, String keyOption, String separator = " ") {
+ return options.collect{ keyOption + it }.join(separator).replaceAll("\n", "")
+}
+
+/**
* Build command line options, e.g:
* cmd_opts=["a=b", "c=d", "e=f"]
* key = "--build-arg "
@@ -15,8 +22,31 @@
* @param keyOption key that should be added before each option
* @param separator Separator between key+Option pairs
*/
-
-@NonCPS
def getCommandBuilder(ArrayList options, String keyOption, String separator = " ") {
- return options.collect{ keyOption + it }.join(separator).replaceAll("\n", "")
+ return constructString(options, keyOption)
+}
+
+/**
+* Return string of mandatory build properties for binaries
+* User can also add some custom properties
+*
+* @param customProperties a Array of Strings that should be added to mandatory props
+* in format ["prop1=value1", "prop2=value2"]
+**/
+def getBinaryBuildProperties(ArrayList customProperties) {
+
+ def namespace = "com.mirantis."
+ def properties = [
+ "gerritProject=${env.GERRIT_PROJECT}",
+ "gerritChangeNumber=${env.GERRIT_CHANGE_NUMBER}",
+ "gerritPatchsetNumber=${env.GERRIT_PATCHSET_NUMBER}",
+ "gerritChangeId=${env.GERRIT_CHANGE_ID}",
+ "gitSha=${env.GERRIT_PATCHSET_REVISION}"
+ ]
+
+ if (customProperties){
+ properties.addAll(customProperties)
+ }
+
+ return constructString(properties, namespace, ";")
}