Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Commit

Permalink
Release/0.0.5 (#3)
Browse files Browse the repository at this point in the history
* ImageStream tagging workaround and preserve highest # of replicas

* Fix ImageStream name for tagging
  • Loading branch information
cvarjao authored Nov 22, 2018
1 parent 78bf4bd commit f98369b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
26 changes: 19 additions & 7 deletions src/main/groovy/ca/bc/gov/devops/OpenShiftDeploymentHelper.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,33 @@ class OpenShiftDeploymentHelper extends OpenShiftHelper{
String deploymageStreamTagName = "${object.metadata.name}:${deploymentConfig.version}"
Map buildImageStreamTag = ocGet(['ImageStreamTag', "${buildImageStreamTagName}",'--ignore-not-found=true', '-n', config.app.build.namespace])
Map deployImageStreamTag = ocGet(['ImageStreamTag', "${deploymageStreamTagName}",'--ignore-not-found=true', '-n', object.metadata.namespace])
if (deployImageStreamTag == null){

if (deployImageStreamTag == null || (buildImageStreamTag!=null && buildImageStreamTag.image.metadata.name != deployImageStreamTag.image.metadata.name )){
//Creating ImageStreamTag
oc(['tag', "${config.app.build.namespace}/${buildImageStreamTagName}", "${object.metadata.namespace}/${deploymageStreamTagName}", '-n', object.metadata.namespace])
}else if (buildImageStreamTag!=null && buildImageStreamTag.image.metadata.name != deployImageStreamTag.image.metadata.name ){
//Updating ImageStreamTag
oc(['tag', "${config.app.build.namespace}/${buildImageStreamTagName}", "${object.metadata.namespace}/${deploymageStreamTagName}", '-n', object.metadata.namespace])
//oc(['tag', "${config.app.build.namespace}/${buildImageStreamTagName}", "${object.metadata.namespace}/${deploymageStreamTagName}", '-n', object.metadata.namespace])
//WORKAROUND: There is a problem/bug when tagging images accross projjects. The tagging will have a reference to the source project as opossed to import the image
//workaround:step 1:Import the image to some temporary tag
oc(['import-image',"--namespace=${object.metadata.namespace}", "${deploymageStreamTagName}-tmp1", "--from=${buildImageStreamTag.image.dockerImageReference}", '--confirm=true', '--insecure=true'])
Map deployImageStream = ocGet(['ImageStream', "${object.metadata.name}",'--ignore-not-found=false', '-n', object.metadata.namespace])
//workaround:Step 2: Re-import the image from itself
oc(['import-image',"--namespace=${object.metadata.namespace}", "${deploymageStreamTagName}-tmp2", "--from=${deployImageStream.status.dockerImageRepository}@${buildImageStreamTag.image.metadata.name}", '--confirm=true', '--insecure=true'])
//workaround:Step 3: Final tagging
oc(['tag', "${object.metadata.name}@${buildImageStreamTag.image.metadata.name}", "${deploymageStreamTagName}", '-n', object.metadata.namespace])
//wokraround: Step 4: Cleanup temporary tags
oc(['tag',"--namespace=${object.metadata.namespace}", "${deploymageStreamTagName}-tmp1", '--delete=true'])
oc(['tag',"--namespace=${object.metadata.namespace}", "${deploymageStreamTagName}-tmp2", '--delete=true'])

//Uncomment after removing 'oc tag' workaround
//oc(['tag', "${config.app.build.namespace}/${buildImageStreamTagName}", "${object.metadata.namespace}/${deploymageStreamTagName}", '-n', object.metadata.namespace])
}
//println "${buildImageStreamTag}"
//oc(['cancel-build', "bc/${object.metadata.name}", '-n', object.metadata.namespace])
}else if (object.kind == 'DeploymentConfig'){
//The DeploymentConfig.spec.template.spec.containers[].image cannot be empty when updating
Map currentDeploymentConfig = ocGet(['DeploymentConfig', "${object.metadata.name}",'--ignore-not-found=true', '-n', "${object.metadata.namespace}"])

//Preserve current number of replicas
if (currentDeploymentConfig){
//Preserve current number of replicas, only if it is higher than the new one
if (currentDeploymentConfig != null && currentDeploymentConfig.spec.replicas > object.spec.replicas){
object.spec.replicas=currentDeploymentConfig.spec.replicas
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/pipeline-cli
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ GROOVYCMD="${GROOVY_DIR}/groovy-2.5.2/bin/groovy"

#echo "GROOVYCMD=${GROOVYCMD}"

OCP_PIPELINE_VERSION="${OCP_PIPELINE_VERSION:-0.0.4}"
OCP_PIPELINE_VERSION="${OCP_PIPELINE_VERSION:-0.0.5}"
OCP_PIPELINE_DOWNLOAD_URL="https://github.com/BCDevOps/ocp-cd-pipeline/archive/v${OCP_PIPELINE_VERSION}.zip"
OCP_PIPELINE_DOWNLOAD_FILE="/tmp/ocp-pipeline-${OCP_PIPELINE_VERSION}.zip"
OCP_PIPELINE_DIR="${OCP_PIPELINE_DIR:-/tmp/ocp-pipeline/${OCP_PIPELINE_VERSION}}"
Expand Down

0 comments on commit f98369b

Please sign in to comment.