rewrite updateRelaseMetadata for more generic way
Related-prod: PROD-31485
Change-Id: If5e275364372d523eccc967bb0caab8c8edf0296
diff --git a/src/com/mirantis/mk/ReleaseWorkflow.groovy b/src/com/mirantis/mk/ReleaseWorkflow.groovy
index 8fe21ae..5d54776 100644
--- a/src/com/mirantis/mk/ReleaseWorkflow.groovy
+++ b/src/com/mirantis/mk/ReleaseWorkflow.groovy
@@ -1,5 +1,4 @@
package com.mirantis.mk
-
/**
* ReleaseWorkflow functions
*
@@ -10,92 +9,79 @@
*
* @param key metadata key
* @param value metadata value
- * @param image image name
- * @param imageRelease image release name
+ * @param params string map with credentialsID, metadataRepoUrl, metadataGerritBranch and crTopic
*/
-def updateReleaseMetadata(key, value, image, imageRelease){
+def updateReleaseMetadata(key, value, String[] params) {
+ credentialsID = params['credentialsID'] ?: "mcp-ci-gerrit"
+ metadataRepoUrl = params['metadataRepoUrl'] ?: "ssh://mcp-ci-gerrit@gerrit.mcp.mirantis.net:29418/mcp/release-matadata"
+ metadataGerritBranch = params['metadataGerritBranch'] ?: "master"
+ crTopic = params['crTopic'] ?: ""
def python = new com.mirantis.mk.Python()
def gerrit = new com.mirantis.mk.Gerrit()
def git = new com.mirantis.mk.Git()
def changeAuthorName = "MCP-CI"
def changeAuthorEmail = "mcp-ci-jenkins@ci.mcp.mirantis.net"
- def cred = common.getCredentials(env["CREDENTIALS_ID"], 'key')
+ def cred = common.getCredentials(credentialsID, 'key')
String gerritUser = cred.username
- def gerritHost = env["METADATA_REPO_URL.tokenize"]('@')[-1].tokenize(':')[0]
- def metadataProject = env["METADATA_REPO_URL"].tokenize('/')[-2..-1].join('/')
- def gerritPort = env["METADATA_REPO_URL"].tokenize(':')[-1].tokenize('/')[0]
+ def gerritHost = metadataRepoUrl.tokenize('@')[-1].tokenize(':')[0]
+ def metadataProject = metadataRepoUrl.tokenize('/')[-2..-1].join('/')
+ def gerritPort = metadataRepoUrl.tokenize(':')[-1].tokenize('/')[0]
def workspace = common.getWorkspace()
def venvDir = "${workspace}/gitreview-venv"
def repoDir = "${venvDir}/repo"
def metadataDir = "${repoDir}/metadata"
- def imageChangeId
+ def ChangeId
def commitMessage
def gitRemote
- if (env["RELEASE_METADATA_CR"].toBoolean()) {
- stage("Installing virtualenv") {
- python.setupVirtualenv(venvDir, 'python3', ['git-review', 'PyYaml'])
+ stage("Installing virtualenv") {
+ python.setupVirtualenv(venvDir, 'python3', ['git-review', 'PyYaml'])
+ }
+ stage('Cleanup repo dir') {
+ dir(repoDir) {
+ deleteDir()
}
-
- stage('Cleanup repo dir') {
- dir(repoDir) {
- deleteDir()
- }
+ }
+ stage('Cloning release-metadata repository') {
+ git.checkoutGitRepository(repoDir, metadataRepoUrl, metadataGerritBranch, credentialsID, true, 10, 0)
+ dir(repoDir) {
+ gitRemote = sh(
+ script:
+ 'git remote -v | head -n1 | cut -f1',
+ returnStdout: true,
+ ).trim()
}
- stage('Cloning release-metadata repository') {
- git.checkoutGitRepository(repoDir, env["METADATA_REPO_URL"], env["METADATA_GERRIT_BRANCH"], env["CREDENTIALS_ID"], true, 10, 0)
- dir(repoDir) {
- gitRemote = sh(
- script:
- 'git remote -v | head -n1 | cut -f1',
- returnStdout: true,
- ).trim()
- }
+ }
+ stage('Creating CR') {
+ def gerritAuth = ['PORT': gerritPort, 'USER': gerritUser, 'HOST': gerritHost]
+ def changeParams = ['owner': gerritUser, 'status': 'open', 'project': metadataProject, 'branch': metadataGerritBranch, 'topic': crTopic]
+ def gerritChange = gerrit.findGerritChange(credentialsID, gerritAuth, changeParams)
+ git.changeGitBranch(repoDir, metadataGerritBranch)
+ if (gerritChange) {
+ def jsonChange = readJSON text: gerritChange
+ changeNum = jsonChange['number']
+ ChangeId = 'Change-Id: '
+ ChangeId += jsonChange['id']
+ //get existent change from gerrit
+ gerrit.getGerritChangeByNum(credentialsID, venvDir, repoDir, gitRemote, changeNum)
+ } else {
+ ChangeId = ''
+ git.createGitBranch(repoDir, crTopic)
}
- stage('Creating CRs') {
- for (openstackRelease in resultBuiltImages.keySet()) {
- def crTopic = "nightly_update_images_" + openstackRelease
- //Check if CR already exist
+ cmdText = "python ${repoDir}/utils/app.py --path ${metadataDir} update --key ${key} --value ${value}"
+ python.runVirtualenvCommand(venvDir, cmdText)
+ commitMessage =
+ """[oscore] Auto-update ${metadataProject}
- def gerritAuth = ['PORT': gerritPort, 'USER': gerritUser, 'HOST': gerritHost]
- def changeParams = ['owner': gerritUser, 'status': 'open', 'project': metadataProject, 'branch': env["METADATA_GERRIT_BRANCH"], 'topic': crTopic]
- def gerritChange = gerrit.findGerritChange(env["CREDENTIALS_ID"], gerritAuth, changeParams)
-
- git.changeGitBranch(repoDir, env["METADATA_GERRIT_BRANCH"])
- if (gerritChange) {
- def jsonChange = readJSON text: gerritChange
- changeNum = jsonChange['number']
- imageChangeId = 'Change-Id: '
- imageChangeId += jsonChange['id']
- //get existent change from gerrit
- gerrit.getGerritChangeByNum(env["CREDENTIALS_ID"], venvDir, repoDir, gitRemote, changeNum)
- } else {
- imageChangeId = ''
- git.createGitBranch(repoDir, crTopic)
- }
-
- for (component in resultBuiltImages[openstackRelease].keySet()) {
- resultBuiltImages[openstackRelease][component].each {
- cmdText = "python ${repoDir}/utils/app.py --path ${metadataDir} update --key images:${image}:${imageRelease}:${component}:${key} --value ${value}"
- python.runVirtualenvCommand(venvDir, cmdText)
- }
- }
-
- commitMessage =
- """[oscore] Auto-update ${metadataProject}
-
- |${imageChangeId}
+ |${ChangeId}
""".stripMargin()
- //commit change
- if (gerritChange) {
- git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false, true)
- } else {
- git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false)
- }
- //post change
- gerrit.postGerritReview(CREDENTIALS_ID, venvDir, repoDir, changeAuthorName, changeAuthorEmail, gitRemote, crTopic, METADATA_GERRIT_BRANCH)
-
- }
+ //commit change
+ if (gerritChange) {
+ git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false, true)
+ } else {
+ git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false)
}
+ //post change
+ gerrit.postGerritReview(credentialsID, venvDir, repoDir, changeAuthorName, changeAuthorEmail, gitRemote, crTopic, metadataGerritBranch)
}
}
\ No newline at end of file