blob: a4d1add9e70563942d60ce5e05c4e383f897559a [file] [log] [blame]
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +02001package com.mirantis.mk
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +02002/**
3 * ReleaseWorkflow functions
4 *
5 */
6
7/**
8 * Update release metadata after image build
Ruslan Gustomiasovcef1bb42019-06-25 17:00:13 +02009 *
10 * @param key metadata key
11 * @param value metadata value
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020012 * @param params string map with credentialsID, metadataRepoUrl, metadataGerritBranch and crTopic
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020013 */
14
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020015def updateReleaseMetadata(key, value, String[] params) {
16 credentialsID = params['credentialsID'] ?: "mcp-ci-gerrit"
17 metadataRepoUrl = params['metadataRepoUrl'] ?: "ssh://mcp-ci-gerrit@gerrit.mcp.mirantis.net:29418/mcp/release-matadata"
18 metadataGerritBranch = params['metadataGerritBranch'] ?: "master"
Ruslan Gustomiasov2e9e3452019-06-27 14:29:31 +020019 comment = params['comment'] ?: ""
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020020 crTopic = params['crTopic'] ?: ""
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020021 def python = new com.mirantis.mk.Python()
22 def gerrit = new com.mirantis.mk.Gerrit()
23 def git = new com.mirantis.mk.Git()
24 def changeAuthorName = "MCP-CI"
25 def changeAuthorEmail = "mcp-ci-jenkins@ci.mcp.mirantis.net"
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020026 def cred = common.getCredentials(credentialsID, 'key')
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020027 String gerritUser = cred.username
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020028 def gerritHost = metadataRepoUrl.tokenize('@')[-1].tokenize(':')[0]
29 def metadataProject = metadataRepoUrl.tokenize('/')[-2..-1].join('/')
30 def gerritPort = metadataRepoUrl.tokenize(':')[-1].tokenize('/')[0]
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020031 def workspace = common.getWorkspace()
32 def venvDir = "${workspace}/gitreview-venv"
33 def repoDir = "${venvDir}/repo"
34 def metadataDir = "${repoDir}/metadata"
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020035 def ChangeId
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020036 def commitMessage
37 def gitRemote
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020038 stage("Installing virtualenv") {
39 python.setupVirtualenv(venvDir, 'python3', ['git-review', 'PyYaml'])
40 }
41 stage('Cleanup repo dir') {
42 dir(repoDir) {
43 deleteDir()
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020044 }
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020045 }
46 stage('Cloning release-metadata repository') {
47 git.checkoutGitRepository(repoDir, metadataRepoUrl, metadataGerritBranch, credentialsID, true, 10, 0)
48 dir(repoDir) {
49 gitRemote = sh(
50 script:
51 'git remote -v | head -n1 | cut -f1',
52 returnStdout: true,
53 ).trim()
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020054 }
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020055 }
56 stage('Creating CR') {
57 def gerritAuth = ['PORT': gerritPort, 'USER': gerritUser, 'HOST': gerritHost]
58 def changeParams = ['owner': gerritUser, 'status': 'open', 'project': metadataProject, 'branch': metadataGerritBranch, 'topic': crTopic]
59 def gerritChange = gerrit.findGerritChange(credentialsID, gerritAuth, changeParams)
60 git.changeGitBranch(repoDir, metadataGerritBranch)
61 if (gerritChange) {
62 def jsonChange = readJSON text: gerritChange
63 changeNum = jsonChange['number']
64 ChangeId = 'Change-Id: '
65 ChangeId += jsonChange['id']
66 //get existent change from gerrit
67 gerrit.getGerritChangeByNum(credentialsID, venvDir, repoDir, gitRemote, changeNum)
68 } else {
69 ChangeId = ''
70 git.createGitBranch(repoDir, crTopic)
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020071 }
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020072 cmdText = "python ${repoDir}/utils/app.py --path ${metadataDir} update --key ${key} --value ${value}"
73 python.runVirtualenvCommand(venvDir, cmdText)
74 commitMessage =
Ruslan Gustomiasov2e9e3452019-06-27 14:29:31 +020075 """${comment}
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020076
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020077 |${ChangeId}
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020078 """.stripMargin()
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020079 //commit change
80 if (gerritChange) {
81 git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false, true)
82 } else {
83 git.commitGitChanges(repoDir, commitMessage, changeAuthorEmail, changeAuthorName, false)
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020084 }
Ruslan Gustomiasov37a17282019-06-27 13:17:07 +020085 //post change
86 gerrit.postGerritReview(credentialsID, venvDir, repoDir, changeAuthorName, changeAuthorEmail, gitRemote, crTopic, metadataGerritBranch)
Ruslan Gustomiasovda4edd62019-06-25 14:26:28 +020087 }
88}