'Openshift CLI - update Application with template and oc new-app

I am currently building and deploying an Application with a template using

oc new-app -f ./openshift/template.yaml

I am using a template and not separate Deployment-, Build-, etc. configs because I also want to be able to pass parameters like

oc new-app -f ./openshift/template.yaml --p DATABASE_PW=PW

To my knowledge this is not possible using

oc create -f ./openshift/deploymentconfig.yaml --p SOME_PARAM=TEST

Now I have also integrated this is in a Build Pipeline with Jenkins. My problem is now this. This all works fine on the first deployment, but it will not work for a redployment. I can either just rebuild the app with Jenkins like

oc start-build my-app

But this will cause that changes is my Template will not be considered. I also cannot use new-app as it does not replace existing configs producing an error similar to this

--> Creating resources ...
    error: services "my-app" already exists
    ....
--> Failed

Is there a way to solve this problem? Maybe something like a new-app replace command where all the configs are being replaced? I am currently solving this by killing the app completely using a shell file and then bringing it up again; but that will always cause a downtime of a few minutes which really bothers me.



Solution 1:[1]

To update a template parameter in a running pod which was started from a template YAML file (i.e. with oc create -f ./$tmpl_name.yaml):

# delete existing dc (leaving svc & route)
# (here dc and template are named the same: $tmpl_name)
oc delete dc $tmpl_name
    
# update template parameter (notice template was not deleted)
oc process $tmpl_name -p $PARAM_NAME=$PARAM_VALUE | oc create -f -

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mirekphd