Switch to building with Depot

Change-Id: I4547e671e11f76e6776192cc68040d5e2ff61be9
diff --git a/docker-bake.hcl b/docker-bake.hcl
new file mode 100644
index 0000000..fb1b0fe
--- /dev/null
+++ b/docker-bake.hcl
@@ -0,0 +1,256 @@
+variable "REGISTRY" {
+    default = "harbor.atmosphere.dev/library"
+}
+
+variable "TAG" {
+    default = "main"
+}
+
+target "ubuntu" {
+    context = "images/ubuntu"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "docker-image://docker.io/library/ubuntu:jammy-20240227"
+    }
+}
+
+target "ubuntu-cloud-archive" {
+    context = "images/ubuntu-cloud-archive"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "target:ubuntu"
+    }
+}
+
+target "python-base" {
+    context = "images/python-base"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+    }
+}
+
+target "openstack-venv-builder" {
+    context = "images/openstack-venv-builder"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+        "python-base" = "target:python-base"
+    }
+}
+
+target "openstack-runtime" {
+    context = "images/openstack-runtime"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "base" = "target:ubuntu-cloud-archive"
+    }
+}
+
+target "openstack-python-runtime" {
+    context = "images/openstack-runtime"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "base" = "target:python-base"
+    }
+}
+
+target "keepalived" {
+    context = "images/keepalived"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "ubuntu" = "target:ubuntu"
+    }
+
+    tags = [
+        "${REGISTRY}/keepalived:${TAG}"
+    ]
+}
+
+target "kubernetes-entrypoint" {
+    context = "images/kubernetes-entrypoint"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.21"
+    }
+
+    tags = [
+        "${REGISTRY}/kubernetes-entrypoint:${TAG}"
+    ]
+}
+
+target "libvirtd" {
+    context = "images/libvirtd"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-runtime" = "target:openstack-runtime"
+    }
+
+    args = {
+        PROJECT = "nova"
+    }
+
+    tags = [
+        "${REGISTRY}/libvirtd:${TAG}"
+    ]
+}
+
+target "netoffload" {
+    context = "images/netoffload"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.20"
+        "ubuntu" = "target:ubuntu"
+    }
+
+    tags = [
+        "${REGISTRY}/netoffload:${TAG}"
+    ]
+}
+
+target "nova-ssh" {
+    context = "images/nova-ssh"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-runtime" = "target:openstack-runtime"
+    }
+
+    args = {
+        PROJECT = "nova"
+    }
+
+    tags = [
+        "${REGISTRY}/nova-ssh:${TAG}"
+    ]
+}
+
+target "openvswitch" {
+    context = "images/openvswitch"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "centos" = "docker-image://quay.io/centos/centos:stream9"
+    }
+
+    tags = [
+        "${REGISTRY}/openvswitch:${TAG}"
+    ]
+}
+
+target "ovn" {
+    name = "ovn-${component}"
+    matrix = {
+        component = ["host", "central"]
+    }
+
+    context = "images/ovn"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "golang" = "docker-image://docker.io/library/golang:1.20"
+        "openvswitch" = "target:openvswitch"
+    }
+
+    args = {
+        OVN_COMPONENT = "${component}"
+    }
+
+    tags = [
+        "${REGISTRY}/ovn-${component}:${TAG}"
+    ]
+}
+
+target "python-openstackclient" {
+    context = "images/python-openstackclient"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    contexts = {
+        "openstack-venv-builder" = "target:openstack-venv-builder"
+        "python-base" = "target:python-base"
+    }
+
+    tags = [
+        "${REGISTRY}/python-openstackclient:${TAG}"
+    ]
+}
+
+target "openstack" {
+    name = "openstack-${service}"
+    matrix = {
+        service = [
+            "barbican",
+            "cinder",
+            "designate",
+            "glance",
+            "heat",
+            "horizon",
+            "ironic",
+            "keystone",
+            "magnum",
+            "manila",
+            "neutron",
+            "nova",
+            "octavia",
+            "placement",
+            "staffeln",
+            "tempest",
+        ]
+    }
+
+    context = "images/${service}"
+    platforms = ["linux/amd64", "linux/arm64"]
+
+    args = {
+        PROJECT = "${service}"
+    }
+
+    contexts = {
+        "openstack-venv-builder" = "target:openstack-venv-builder"
+        "openstack-python-runtime" = "target:openstack-python-runtime"
+    }
+
+    tags = [
+        "${REGISTRY}/${service}:${TAG}"
+    ]
+}
+
+group "default" {
+    targets = [
+        "keepalived",
+        "kubernetes-entrypoint",
+        "libvirtd",
+        "netoffload",
+        "nova-ssh",
+        "openstack-barbican",
+        "openstack-cinder",
+        "openstack-designate",
+        "openstack-glance",
+        "openstack-heat",
+        "openstack-horizon",
+        "openstack-ironic",
+        "openstack-keystone",
+        "openstack-magnum",
+        "openstack-manila",
+        "openstack-neutron",
+        "openstack-nova",
+        "openstack-octavia",
+        "openstack-placement",
+        "openstack-staffeln",
+        "openstack-tempest",
+        "openvswitch",
+        "ovn-central",
+        "ovn-host",
+        "python-openstackclient",
+    ]
+}