Skip to content
Snippets Groups Projects
Commit 366ed712 authored by Mark Beierl's avatar Mark Beierl
Browse files

Removing charm promotion


Change-Id: Ic4cf3985f20bcbacf4949ce5c9b5c07530e67bbf
Signed-off-by: default avatarMark Beierl <mark.beierl@canonical.com>
parent 37a7ee5c
No related branches found
No related tags found
No related merge requests found
......@@ -126,122 +126,6 @@ def ci_pipeline(mdg,url_prefix,project,branch,refspec,revision,do_stage_3,artifa
}
}
stage('Charm build') {
charms = [
'installers/charm/bundles/osm',
'installers/charm/bundles/osm-ha',
'installers/charm/grafana',
'installers/charm/mongodb-exporter',
'installers/charm/mysqld-exporter',
'installers/charm/osm-lcm',
'installers/charm/osm-mon',
'installers/charm/osm-nbi',
'installers/charm/osm-ng-ui',
'installers/charm/osm-pol',
'installers/charm/osm-ro',
'installers/charm/prometheus',
'installers/charm/vca-integrator-operator',
]
parallelSteps = [:]
concurrency = sh(returnStdout: true, script: "expr `nproc` / 2").trim() as int
for (charmPath in charms) {
def directory = charmPath
if (fileExists("$charmPath/charmcraft.yaml")) {
CHECK_CHANGES = "git diff --name-only origin/$GERRIT_BRANCH -- $directory |wc -l"
charmsChanged = sh(returnStdout:true, script: CHECK_CHANGES).trim()
if (charmsChanged != "0" || isMergeJob) {
println("$directory has changes, rebuilding")
parallelSteps[directory] = {
waitUntil(quiet: true, initialRecurrencePeriod: 5) {
if (concurrency > 0) {
concurrency--
true
} else {
sleep 5
false
}
}
try {
dir("${directory}") {
try {
sh "charmcraft pack --format json --verbosity brief 1> pack.json 2> pack-stderr.log"
} catch (Exception e) {
sh "cat pack-stderr.log"
throw e
}
def charmFilename = sh(
returnStdout: true,
script: 'cat pack.json | jq -r ".charms[0], .bundles[0]" | grep -v null').trim()
withCredentials([string(credentialsId: 'Charmstore', variable: 'CHARMCRAFT_AUTH')]) {
try {
println("Uploading $charmFilename")
sh "charmcraft upload --format json --verbosity brief $charmFilename 1> upload.json 2> upload-stderr.log"
} catch (Exception e) {
def errorMessage = sh(
returnStdout: true,
script: 'cat upload.json | jq -r ".errors[0].message" | grep -v null').trim()
if (errorMessage.contains("already exists")) {
println("No changes, skipping upload")
return 0
}
sh "cat upload-stderr.log"
throw e
}
def charmRevision = sh(
returnStdout: true,
script: 'cat upload.json | jq -r ".revision"').trim()
def charmBranch="merged"
if ( !JOB_NAME.contains('merge') ) {
charmBranch="${GERRIT_REFSPEC}".replaceAll('/','-')
}
def channel="latest"
if (BRANCH_NAME.startsWith("v")) {
channel=BRANCH_NAME.substring(1)
} else if (BRANCH_NAME!="master") {
REV="/"+BRANCH_NAME+REV.replaceAll('/','-')
}
def charmName = sh(
returnStdout:true,
script: "if [ -f bundle.yaml ];then cat bundle.yaml;else cat metadata.yaml;fi|yq -r .name").trim()
def resourceArgument = ""
try {
def resourceName = sh(
returnStdout:true,
script: "cat metadata.yaml | yq '.resources | keys | .[0]'").trim()
resourceArgument = "--resource $resourceName:1"
resourceName = sh(
returnStdout:true,
script: "cat metadata.yaml | yq '.resources | keys | .[1]'").trim()
if( resourceName != "null" ) {
resourceArgument += " --resource $resourceName:1"
}
} catch (Exception discard) {
print("No resource associated with bundle, skipping")
}
print("resourceArgument = $resourceArgument")
sh "charmcraft release ${charmName} --revision=${charmRevision} ${resourceArgument} --channel=${channel}/edge/${charmBranch}"
}
}
} finally {
concurrency++
}
}
}
}
}
parallel parallelSteps
}
if ( do_stage_3 ) {
stage('Build System') {
def downstream_params_stage_3 = [
......
......@@ -675,73 +675,6 @@ EOF"""
}
}
} // stage('Snap promotion')
stage('Charm promotion') {
charms = [
'osm', // bundle
'osm-ha', // bundle
'osm-grafana',
'osm-mariadb',
'mongodb-exporter-k8s',
'mysqld-exporter-k8s',
'osm-lcm',
'osm-mon',
'osm-nbi',
'osm-ng-ui',
'osm-pol',
'osm-ro',
'osm-prometheus',
'osm-vca-integrator',
]
for (charm in charms) {
channel = 'latest'
if (BRANCH_NAME.startsWith('v')) {
channel = BRANCH_NAME.substring(1)
} else if (BRANCH_NAME != 'master') {
channel += '/' + BRANCH_NAME.replaceAll('/', '-')
}
withCredentials([string(credentialsId: 'Charmstore', variable: 'CHARMCRAFT_AUTH')]) {
sh "charmcraft status $charm --format json > ${charm}.json"
isCharm = sh(returnStdout: true, script: "grep architecture ${charm}.json | wc -l").trim() as int
resourceArgument = ""
if (isCharm) {
jqScriptEdge = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[] | select(.base.architecture==\"amd64\" and .base.channel==\"20.04\") | .releases[] | select(.channel==\"$channel/edge/merged\")| .version'|head -1"
jqScriptBeta = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[] | select(.base.architecture==\"amd64\" and .base.channel==\"20.04\") | .releases[] | select(.channel==\"$channel/beta\")| .version'|head -1"
index=0
while (index < 5) {
resourceNameScript = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[] | select(.base.architecture==\"amd64\" and .base.channel==\"20.04\") | .releases[] | select(.channel==\"$channel/edge/merged\")| .resources[$index].name'|head -1"
resourceRevsScript = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[] | select(.base.architecture==\"amd64\" and .base.channel==\"20.04\") | .releases[] | select(.channel==\"$channel/edge/merged\")| .resources[$index].revision'|head -1"
resourceName = sh(returnStdout: true, script: resourceNameScript).trim()
resourceRevs = sh(returnStdout: true, script: resourceRevsScript).trim()
if (resourceName != "null") {
resourceArgument += " --resource ${resourceName}:${resourceRevs}"
} else {
break
}
index ++
}
} else {
jqScriptEdge = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[].releases[] | select(.channel==\"$channel/edge/merged\")| .version'|head -1"
jqScriptBeta = "cat ${charm}.json | jq -r '.[] | select(.track==\"$channel\") | .mappings[].releases[] | select(.channel==\"$channel/beta\")| .version'|head -1"
}
// edge/merged is used in place of /edge as 10.1.0 LTS uses latest/edge
edge_rev = sh(returnStdout: true, script: jqScriptEdge).trim()
beta_rev = sh(returnStdout: true, script: jqScriptBeta).trim()
try { edge_rev = edge_rev as int } catch (NumberFormatException nfe) {edge_rev = 0}
try { beta_rev = beta_rev as int } catch (NumberFormatException nfe) {beta_rev = 0}
print "Edge: $edge_rev, Beta: $beta_rev $resourceArgument"
if (edge_rev > beta_rev) {
print "Promoting $edge_rev to beta in place of $beta_rev"
beta_track = channel + 'beta'
sh "charmcraft release ${charm} --revision=${edge_rev} ${resourceArgument} --channel=${channel}/beta"
}
}
}
} // stage('Charm promotion')
} // if (params.DO_DOCKERPUSH)
} // stage('Archive')
} // if (params.SAVE_ARTIFACTS_OVERRIDE || stage_archive)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment