diff --git a/vars/buildCalicoContainers.groovy b/vars/buildCalicoContainers.groovy
new file mode 100644
index 0000000..aa79e60
--- /dev/null
+++ b/vars/buildCalicoContainers.groovy
@@ -0,0 +1,126 @@
+def call(body) {
+  // evaluate the body block, and collect configuration into the object
+  def config = [:]
+  body.resolveStrategy = Closure.DELEGATE_FIRST
+  body.delegate = config
+  body()
+
+  // we need to use Tools library for getting mandatory binary properties
+  def tools = new ci.mcp.Tools()
+
+  def server = Artifactory.server(config.artifactoryServerId ?: "mcp-ci")
+  def buildInfo = Artifactory.newBuildInfo()
+  buildInfo.env.capture = true
+  buildInfo.env.filter.addInclude("*")
+  buildInfo.env.collect()
+
+  def dockerRepo = config.dockerRepo ?: "artifactory.mcp.mirantis.net:5001"
+  def artifactoryURL = config.artifactoryURL ?: "https://artifactory.mcp.mirantis.net/artifactory/projectcalico"
+
+  def nodeImage = config.nodeImage ?: "calico/node"
+  def nodeImageTag = config.nodeImageTag ?: "v0.20.0"
+  def nodeName = "${dockerRepo}/${nodeImage}:${nodeImageTag}"
+
+  def ctlImage = config.ctlImage ?: "calico/ctl"
+  def ctlImageTag = config.ctlImageTag ?: "v0.20.0"
+  def ctlName = "${dockerRepo}/${ctlImage}:${ctlImageTag}"
+
+  // calico/build goes from {artifactoryURL}/mcp/libcalico/
+  def buildImage = config.buildImage ?: "${artifactoryURL}/mcp/libcalico/lastbuild".toURL().text.trim()
+  // calico/felix goes from {artifactoryURL}/mcp/felix/
+  def felixImage = config.felixImage ?: "${artifactoryURL}/mcp/felix/lastbuild".toURL().text.trim()
+
+  def confdBuildId = config.confdBuildId ?: "${artifactoryURL}/mcp/confd/lastbuild".toURL().text.trim()
+  def confdUrl = config.confdUrl ?: "${artifactoryURL}/mcp/confd/confd-${confdBuildId}"
+
+  def birdBuildId = config.birdBuildId ?: "${artifactoryURL}/mcp/calico-bird/lastbuild".toURL().text.trim()
+  def birdUrl = config.birdUrl ?: "${artifactoryURL}/mcp/calico-bird/bird-${birdBuildId}"
+  def bird6Url = config.bird6Url ?: "${artifactoryURL}/mcp/calico-bird/bird6-${birdBuildId}"
+  def birdclUrl = config.birdclUrl ?: "${artifactoryURL}/mcp/calico-bird/birdcl-${birdBuildId}"
+
+  def gitCommit = sh(returnStdout: true, script: "git -C ${WORKSPACE} rev-parse --short HEAD").trim()
+
+  def build = "${config.containersBuildId}-${gitCommit}"
+
+  // return values
+  def calicoNodeImageRepo="${dockerRepo}/${nodeImage}"
+  def calicoCtlImageRepo="${dockerRepo}/${ctlImage}"
+  def calicoVersion="${nodeImageTag}-${build}"
+
+  // Start build section
+
+  stage ('Build calico/ctl image'){
+    sh """
+      make ctl_image \
+        CTL_CONTAINER_NAME=${ctlName}-${build} \
+        BUILD_CONTAINER_NAME=${buildImage} \
+        BIRDCL_URL=${birdclUrl}
+    """
+  }
+
+
+  stage('Build calico/node'){
+    sh """
+      make node_image \
+        NODE_CONTAINER_NAME=${nodeName}-${build} \
+        BUILD_CONTAINER_NAME=${buildImage} \
+        FELIX_CONTAINER_NAME=${felixImage} \
+        CONFD_URL=${confdUrl} \
+        BIRD_URL=${birdUrl} \
+        BIRD6_URL=${bird6Url} \
+        BIRDCL_URL=${birdclUrl}
+    """
+  }
+
+
+  stage('Publishing containers artifacts'){
+
+    withCredentials([
+      [$class: 'UsernamePasswordMultiBinding',
+        credentialsId: "${config.credentialsId}",
+        passwordVariable: 'ARTIFACTORY_PASSWORD',
+        usernameVariable: 'ARTIFACTORY_LOGIN']
+    ]) {
+      sh """
+        echo 'Pushing images'
+        docker login -u ${ARTIFACTORY_LOGIN} -p ${ARTIFACTORY_PASSWORD} ${dockerRepo}
+        docker push ${nodeName}-${build}
+        docker push ${ctlName}-${build}
+      """
+    }
+
+    dir("artifacts"){
+      // Save the last build ID
+      writeFile file: "lastbuild", text: "${build}"
+      // Create config yaml for Kargo
+      writeFile file: "calico-containers-${build}.yaml",
+                text: """\
+                  calico_node_image_repo: ${calicoNodeImageRepo}
+                  calicoctl_image_repo: ${calicoCtlImageRepo}
+                  calico_version: ${calicoVersion}
+                """.stripIndent()
+      // Create the upload spec.
+      def properties = tools.getBinaryBuildProperties()
+      def uploadSpec = """{
+          "files": [
+                  {
+                      "pattern": "**",
+                      "target": "projectcalico/${config.containersBuildId}/calico-containers/",
+                      "props": "${properties}"
+                  }
+              ]
+          }"""
+      // Upload to Artifactory.
+      server.upload(uploadSpec, buildInfo)
+      server.publishBuildInfo buildInfo
+
+    } // dir artifacts
+  } //stage
+
+  return [
+    CALICO_NODE_IMAGE_REPO:"${calicoNodeImageRepo}",
+    CALICOCTL_IMAGE_REPO:"${calicoCtlImageRepo}",
+    CALICO_VERSION: "${calicoVersion}"
+  ]
+
+}
diff --git a/vars/buildCalicoContainers.txt b/vars/buildCalicoContainers.txt
new file mode 100644
index 0000000..e0f1468
--- /dev/null
+++ b/vars/buildCalicoContainers.txt
@@ -0,0 +1,34 @@
+// Usage example
+// List of parameters with the default values
+  def server = Artifactory.server(config.artifactoryServerId ?: "mcp-ci")
+  def dockerRepo = config.dockerRepo ?: "artifactory.mcp.mirantis.net:5001"
+  def artifactoryURL = config.artifactoryURL ?: "https://artifactory.mcp.mirantis.net/artifactory/projectcalico"
+  def nodeImage = config.nodeImage ?: "calico/node"
+  def nodeImageTag = config.nodeImageTag ?: "v0.20.0"
+  def ctlImage = config.ctlImage ?: "calico/ctl"
+  def ctlImageTag = config.ctlImageTag ?: "v0.20.0"
+  def buildImage = config.buildImage ?: "${artifactoryURL}/mcp/libcalico/lastbuild".toURL().text.trim()
+  def felixImage = config.felixImage ?: "${artifactoryURL}/mcp/felix/lastbuild".toURL().text.trim()
+  def confdBuildId = config.confdBuildId ?: "${artifactoryURL}/mcp/confd/lastbuild".toURL().text.trim()
+  def confdUrl = config.confdUrl ?: "${artifactoryURL}/mcp/confd/confd-${confdBuildId}"
+  def birdBuildId = config.birdBuildId ?: "${artifactoryURL}/mcp/calico-bird/lastbuild".toURL().text.trim()
+  def birdUrl = config.birdUrl ?: "${artifactoryURL}/mcp/calico-bird/bird-${birdBuildId}"
+  def bird6Url = config.bird6Url ?: "${artifactoryURL}/mcp/calico-bird/bird6-${birdBuildId}"
+  def birdclUrl = config.birdclUrl ?: "${artifactoryURL}/mcp/calico-bird/birdcl-${birdBuildId}"
+  def build = "${config.containersBuildId}-${gitCommit}"
+  def credentialsId = config.credentialsId
+
+// *** Examples 1:
+// we still use old schema and want to publish to GERRIT_CHANGE_NUMBER
+def buildId = ${GERRIT_CHANGE_NUMBER}
+// we want to store in artifacts from gate then
+def buildId = "mcp"
+node {
+    buildCalicoContainers {
+      dockerRepo = "artifactory.mcp.mirantis.net:5004"
+      artifactoryURL = "https://artifactory.mcp.mirantis.net/artifactory/sandbox"
+      containersBuildId = buildId
+      credentialsId = "artifactory-sandbox"
+      artifactoryServerId = "mcp-ci-sandbox"
+    }
+}
