diff --git a/jjb/pipeline/omec-postmerge.groovy b/jjb/pipeline/omec-postmerge.groovy
new file mode 100644
index 0000000..9ba9398
--- /dev/null
+++ b/jjb/pipeline/omec-postmerge.groovy
@@ -0,0 +1,80 @@
+// Copyright 2020-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// omec-postmerge.groovy
+// Combines docker-publish and deploy-staging pipelines into one job that can be triggered by a GitHub PR merge
+
+def hssdb_tag = ""
+def hss_tag = ""
+def mme_tag = ""
+def spgwc_tag = ""
+def spgwu_tag = ""
+
+pipeline {
+
+  agent {
+    label "${params.buildNode}"
+  }
+
+  stages {
+
+    stage('Publish') {
+      steps {
+        build job: "docker-publish-github_$repoName", parameters: [
+              string(name: 'gitUrl', value: "${repoUrl}"),
+              string(name: 'gitRef', value: "${branchName}"),
+              string(name: 'branchName', value: "${branchName}-${commitHash}"),
+              string(name: 'projectName', value: "${repoName}"),
+            ]
+      }
+    }
+
+    stage('Deploy') {
+      steps {
+        script {
+          hssdb_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/c3po-hssdb/tags/' | jq '.results[] | select(.name | contains("${c3poBranchName}")).name' | head -1 | tr -d \\\""""
+          hss_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/c3po-hss/tags/' | jq '.results[] | select(.name | contains("${c3poBranchName}")).name' | head -1 | tr -d \\\""""
+          mme_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/openmme/tags/' | jq '.results[] | select(.name | contains("${openmmeBranchName}")).name' | head -1 | tr -d \\\""""
+          spgwc_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/ngic-cp/tags/' | jq '.results[] | select(.name | contains("${ngicBranchName}")).name' | head -1 | tr -d \\\""""
+          spgwu_tag = sh returnStdout: true, script: """curl -s 'https://registry.hub.docker.com/v2/repositories/omecproject/ngic-dp/tags/' | jq '.results[] | select(.name | contains("${ngicBranchName}")).name' | head -1 | tr -d \\\""""
+          switch("${params.repoName}") {
+          case "c3po":
+            hssdb_tag = "${branchName}-${commitHash}"
+            hss_tag = "${branchName}-${commitHash}"
+            break
+          case "ngic-rtc":
+            spgwc_tag = "${branchName}-${commitHash}"
+            spgwu_tag = "${branchName}-${commitHash}"
+            break
+          case "openmme":
+            mme_tag = "${branchName}-${commitHash}"
+            break
+          }
+        }
+        build job: "omec-deploy-staging", parameters: [
+              string(name: 'hssdb_tag', value: "${hssdb_tag}"),
+              string(name: 'mme_tag', value: "${hss_tag}"),
+              string(name: 'hss_tag', value: "${mme_tag}"),
+              string(name: 'spgwc_tag', value: "${spgwc_tag}"),
+              string(name: 'spgwu_tag', value: "${spgwu_tag}"),
+            ]
+      }
+    }
+  }
+  post {
+    failure {
+      step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${params.maintainers}", sendToIndividuals: false])
+    }
+  }
+}
