blob: 8af3fbea9e8cdb08fb1ccdad9b593d2e5f583d09 [file] [log] [blame]
/**
*
* Promote MCP
*
* Expected parameters:
* SOURCE_REVISION
* TARGET_REVISION
* RELEASE_APTLY
* RELEASE_DEB_MIRRORS
* RELEASE_DOCKER
* RELEASE_GIT
* APTLY_URL
* APTLY_STORAGES
* DOCKER_CREDENTIALS
* DOCKER_URL
* DOCKER_IMAGES
* GIT_CREDENTIALS
* GIT_REPO_LIST
* EMAIL_NOTIFY
* NOTIFY_RECIPIENTS
* NOTIFY_TEXT
*
*/
common = new com.mirantis.mk.Common()
git = new com.mirantis.mk.Git()
def triggerAptlyPromoteJob(aptlyUrl, components, diffOnly, dumpPublish, packages, recreate, source, storages, target){
build job: "aptly-promote-all-testing-stable", parameters: [
[$class: 'StringParameterValue', name: 'APTLY_URL', value: aptlyUrl],
[$class: 'StringParameterValue', name: 'COMPONENTS', value: components],
[$class: 'BooleanParameterValue', name: 'DIFF_ONLY', value: diffOnly],
[$class: 'BooleanParameterValue', name: 'DUMP_PUBLISH', value: dumpPublish],
[$class: 'StringParameterValue', name: 'PACKAGES', value: packages],
[$class: 'BooleanParameterValue', name: 'RECREATE', value: recreate],
[$class: 'StringParameterValue', name: 'SOURCE', value: source],
[$class: 'StringParameterValue', name: 'STORAGES', value: storages],
[$class: 'StringParameterValue', name: 'TARGET', value: target]
]
}
def triggerDockerMirrorJob(dockerCredentials, dockerRegistryUrl, targetTag, imageList) {
build job: "docker-images-mirror", parameters: [
[$class: 'StringParameterValue', name: 'TARGET_REGISTRY_CREDENTIALS_ID', value: dockerCredentials],
[$class: 'StringParameterValue', name: 'REGISTRY_URL', value: dockerRegistryUrl],
[$class: 'StringParameterValue', name: 'IMAGE_TAG', value: targetTag],
[$class: 'StringParameterValue', name: 'IMAGE_LIST', value: imageList]
]
}
def triggerMirrorRepoJob(snapshotId, snapshotName) {
build job: "mirror-snapshot-name-all", parameters: [
[$class: 'StringParameterValue', name: 'SNAPSHOT_NAME', value: snapshotName],
[$class: 'StringParameterValue', name: 'SNAPSHOT_ID', value: snapshotId]
]
}
def triggerGitTagJob(gitRepoList, gitCredentials, tag) {
build job: "tag-git-repos-stable", parameters: [
[$class: 'StringParameterValue', name: 'GIT_REPO_LIST', value: gitRepoList],
[$class: 'StringParameterValue', name: 'GIT_CREDENTIALS', value: gitCredentials],
[$class: 'StringParameterValue', name: 'TAG', value: tag]
]
}
timeout(time: 12, unit: 'HOURS') {
node() {
try {
stage("Promote"){
if(RELEASE_APTLY.toBoolean())
{
common.infoMsg("Promoting Aptly")
triggerAptlyPromoteJob(APTLY_URL, 'all', false, true, 'all', false, "(.*)/${SOURCE_REVISION}", APTLY_STORAGES, "{0}/${TARGET_REVISION}")
}
if(RELEASE_DEB_MIRRORS.toBoolean()){
common.infoMsg("Promoting Debmirrors")
triggerMirrorRepoJob(SOURCE_REVISION, TARGET_REVISION)
}
if(RELEASE_DOCKER.toBoolean())
{
common.infoMsg("Promoting Docker images")
triggerDockerMirrorJob(DOCKER_CREDENTIALS, DOCKER_URL, TARGET_REVISION, DOCKER_IMAGES)
}
if(RELEASE_GIT.toBoolean())
{
common.infoMsg("Promoting Git repositories")
triggerGitTagJob(GIT_REPO_LIST, GIT_CREDENTIALS, TARGET_REVISION)
}
if (EMAIL_NOTIFY.toBoolean()) {
emailext(to: NOTIFY_RECIPIENTS,
body: NOTIFY_TEXT,
subject: "MCP Promotion has been done")
}
}
} catch (Throwable e) {
// If there was an error or exception thrown, the build failed
currentBuild.result = "FAILURE"
throw e
}
}
}