diff --git a/docker-build-to-jfrog.groovy b/docker-build-to-jfrog.groovy
index 7f91a54..b16dc06 100644
--- a/docker-build-to-jfrog.groovy
+++ b/docker-build-to-jfrog.groovy
@@ -2,6 +2,7 @@
  * Docker image build pipeline with push to JFrog
  * IMAGE_NAME - Image name
  * IMAGE_TAGS - Tag list for image, separated by space
+ * CONTEXT_PATH - Path to build context directory
  * CREDENTIALS_ID - gerrit credentials id
  * DOCKERFILE_PATH - path to dockerfile in repository
  * DOCKER_REGISTRY - url to registry
@@ -21,6 +22,17 @@
   def dockerRepository = DOCKER_REGISTRY
   def docker_dev_repo = "docker-dev-local"
   def docker_prod_repo = "docker-prod-local"
+  def dockerFileOption
+
+  def buildTag = "oss-ci-docker-${BUILD_NUMBER}-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
+
+  if (DOCKERFILE_PATH.trim() == ''){
+    dockerFileOption = ''
+  }
+  else {
+    dockerFileOption = "--file ${DOCKERFILE_PATH}"
+  }
+  def buildCmd = "docker build --tag ${buildTag} ${dockerFileOption} --rm ${CONTEXT_PATH}"
 
   def imageTagsList = IMAGE_TAGS.tokenize(" ")
   def workspace = common.getWorkspace()
@@ -35,13 +47,10 @@
       ])
     }
     stage("build image"){
-      containerId = sh(
-        script: "docker build -f ${DOCKERFILE_PATH}/Dockerfile -q --rm . | awk -F':' '{print \$2}'",
-        returnStdout: true
-      ).trim().take(12)
+      sh "${buildCmd}"
       imageTagsList << "${GERRIT_CHANGE_NUMBER}_${GERRIT_PATCHSET_NUMBER}"
       for (imageTag in imageTagsList) {
-        sh "docker tag ${containerId} ${dockerRepository}/${projectNamespace}/${IMAGE_NAME}:${imageTag}"
+        sh "docker tag ${buildTag} ${dockerRepository}/${projectNamespace}/${IMAGE_NAME}:${imageTag}"
       }
     }
     stage("publish image"){
diff --git a/openstack-compute-upgrade.groovy b/openstack-compute-upgrade.groovy
index fe7f471..8a5d26b 100644
--- a/openstack-compute-upgrade.groovy
+++ b/openstack-compute-upgrade.groovy
@@ -110,7 +110,7 @@
         }
 
         command = "cmd.run"
-        args = "'DEBIAN_FRONTEND=noninteractive'; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade"
+        args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade;'
 
         stage('Apply package upgrades on sample') {
             out = salt.runSaltCommand(saltMaster, 'local', ['expression': targetLiveSubset, 'type': 'compound'], command, null, args, commandKwargs)
@@ -156,7 +156,7 @@
             }
         }
 
-        args = "'DEBIAN_FRONTEND=noninteractive'; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade"
+        args = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade;'
 
         stage('Apply package upgrades on all targeted nodes') {
             out = salt.runSaltCommand(saltMaster, 'local', ['expression': targetLiveAll, 'type': 'compound'], command, null, args, commandKwargs)
