name: kata-containers website: https://github.com/kata-containers/kata-containers summary: Build lightweight VMs that seamlessly plug into the containers ecosystem description: | Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs confinement: classic adopt-info: metadata base: core20 parts: metadata: plugin: nil prime: - -* build-packages: - git - git-extras override-pull: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" version="9999" if echo "${GITHUB_REF:-}" | grep -q -E "^refs/tags"; then version=$(echo ${GITHUB_REF:-} | cut -d/ -f3) git checkout ${version} fi snapcraftctl set-grade "stable" snapcraftctl set-version "${version}" mkdir -p $(dirname ${kata_dir}) ln -sf $(realpath "${SNAPCRAFT_STAGE}/..") ${kata_dir} docker: after: [metadata] plugin: nil prime: - -* build-packages: - ca-certificates - containerd - curl - gnupg - lsb-release - runc override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" curl -fsSL https://download.docker.com/linux/ubuntu/gpg |\ sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg distro_codename=$(lsb_release -cs) echo "deb [arch=${dpkg_arch} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu ${distro_codename} stable" |\ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get -y update sudo apt-get -y install docker-ce docker-ce-cli containerd.io echo "Unmasking docker service" sudo -E systemctl unmask docker.service || true sudo -E systemctl unmask docker.socket || true echo "Adding $USER into docker group" sudo -E gpasswd -a $USER docker echo "Starting docker" # docker may fail to start using "fd://" in docker.service sudo sed -i 's/fd:\/\//unix:\/\//g' /lib/systemd/system/docker.service sudo systemctl daemon-reload sudo -E systemctl start docker || true image: after: [docker] plugin: nil override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make rootfs-image-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-rootfs-image.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" sudo -E NO_TTY=true make rootfs-initrd-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-rootfs-initrd.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" runtime: after: [docker] plugin: nil override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make shim-v2-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-shim-v2.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" mkdir -p "${SNAPCRAFT_PART_INSTALL}/usr/bin" ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/containerd-shim-kata-v2" "${SNAPCRAFT_PART_INSTALL}/usr/bin/containerd-shim-kata-v2" ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/kata-runtime" "${SNAPCRAFT_PART_INSTALL}/usr/bin/kata-runtime" ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/kata-collect-data.sh" "${SNAPCRAFT_PART_INSTALL}/usr/bin/kata-collect-data.sh" kernel: after: [docker] plugin: nil override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make kernel-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-kernel.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" qemu: plugin: make after: [docker] override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make qemu-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-qemu.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" virtiofsd: plugin: nil after: [docker] override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make virtiofsd-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-virtiofsd.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" cloud-hypervisor: plugin: nil after: [docker] override-build: | source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh" if [ "${arch}" == "aarch64" ] || [ "${arch}" == "x86_64" ]; then cd "${SNAPCRAFT_PROJECT_DIR}" sudo -E NO_TTY=true make cloud-hypervisor-tarball tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-cloud-hypervisor.tar.xz" tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}" fi apps: runtime: command: usr/bin/kata-runtime shim: command: usr/bin/containerd-shim-kata-v2 collect-data: command: usr/bin/kata-collect-data.sh