Add a prototype updatepackages task.
diff --git a/cicd/jobs/task_updatepackages.jenkins b/cicd/jobs/task_updatepackages.jenkins
new file mode 100644
index 0000000..696bde7
--- /dev/null
+++ b/cicd/jobs/task_updatepackages.jenkins
@@ -0,0 +1,19 @@
+#!/usr/bin/env groovy
+
+pipelineJob("task.updatepackages") {
+    description("Update apt packages repository")
+
+    definition {
+        cpsScm {
+            scm {
+                git {
+                    remote {
+                        url('https://coral.googlesource.com/gke-jenkins')
+                    }
+                    branches('*/master')
+                }
+            }
+            scriptPath("cicd/pipelines/tasks/task_updatepackages.jenkins")
+        }
+    }
+}
diff --git a/cicd/pipelines/tasks/task_updatepackages.jenkins b/cicd/pipelines/tasks/task_updatepackages.jenkins
new file mode 100644
index 0000000..0620abe
--- /dev/null
+++ b/cicd/pipelines/tasks/task_updatepackages.jenkins
@@ -0,0 +1,73 @@
+#!/usr/bin/env groovy
+
+library 'functions'
+
+def packageBuildNames = [
+    'mendel-minimal',
+    'base-files',
+    'edgetpuvision',
+    'edgetpudemo',
+    'mdt-services',
+    'mendel-distro-info-data',
+    'mendel-keyring',
+    'runonce',
+    'usb-gadget',
+    'vitalsd',
+    'meta-mendel'
+]
+
+def label = "build-jenkins-operator-${UUID.randomUUID().toString()}"
+def home = "/home/jenkins"
+def workspace = "${home}/workspace/build-pbuilder-cross"
+def workdir = "${workspace}/src"
+
+podTemplate(label: label,
+        containers: [
+                containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'),
+                containerTemplate(name: 'debian', image: 'debian:buster-slim', command: 'cat', ttyEnabled: true, privileged: true),
+        ],
+        envVars: [
+        ],
+        ) {
+
+    node(label) {
+        dir(workdir) {
+            stage('Init') {
+                container('debian') {
+                    packageBuildNames.each {
+                        copyArtifacts(projectName: it, filter: '**/*', flatten: true, selector: lastSuccessful())
+                    }
+
+                    sh """
+                       echo "deb http://packages.cloud.google.com/apt buster main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
+                       curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+                       apt-get update
+                       apt-get -y install apt-utils gcsfuse
+                       """
+                }
+            }
+
+            stage('Build') {
+                container('debian') {
+                    sh """
+                       mkdir archive/pool
+                       cp out/target/product/*/packages/*/* archive/pool
+                       cd archive
+                       apt-ftparchive -o APT::FTPArchive::SHA512=false pool > Packages
+                       """
+                }
+            }
+
+            stage('Deploy') {
+                container('debian') {
+                    googleStorageUpload
+                        bucket: 'gs://mendel-linux-apt/',
+                        credentialsId: 'mendel-linux-cloud-infra',
+                        pattern: 'archive/**',
+                        pathPrefix: 'archive/'
+                        sharedPublicly: true
+                }
+            }
+        }
+    }
+}