mbox series

[v3,0/5] Introduce container fetcher and pre-loader

Message ID cover.1721139489.git.jan.kiszka@siemens.com
Headers show
Series Introduce container fetcher and pre-loader | expand

Message

Jan Kiszka July 16, 2024, 2:18 p.m. UTC
We noticed internally that there are at least 3 implementations for
solving the task of pre-loading container images into isar-built base
systems, may it be that the images are not publicly available or the
device is only poorly connected, if at all. This series tries to solve
the task generically - hopefully.

Changes in v3:
 - do not compress container deb packages [Benedikt]
 - fix various spelling issues in the doc [Adriaan, Benedikt]

Changes in v2:
 - switch to open-coded unpack before loading
 - switch to zstd as default compression
 - use default compression settings from bitbake.conf
 - add support for delete-after-load (opt-in)
 - factor out fetched container installation into separate task
   (should make self-built container packaging easier)
 - use BPN instead of PN
 - add "Requires" to systemd service
 - use PACKAGE_ARCH to select container arch (rather than DISTRO_ARCH)
 - add CI test
 - add documentation

Jan

Jan Kiszka (5):
  Introduce fetcher from container registries
  container-loader: Introduce helper to load container images into local
    registry
  meta-isar: Add demo packages for installing prebuilt containers
  ci: Add test cases for container fetching and loading
  doc: Describe how to use the container fetcher and loader

 doc/user_manual.md                            |  60 +++++++++++
 kas/package/Kconfig                           |  19 ++++
 kas/package/pkg_prebuilt-docker-img.yaml      |   9 ++
 kas/package/pkg_prebuilt-podman-img.yaml      |   9 ++
 .../prebuilt-docker-img_0.1.bb                |  12 +++
 .../prebuilt-podman-img_0.1.bb                |  10 ++
 .../recipes-core/images/isar-image-ci.bb      |   2 +
 meta/classes/dpkg-base.bbclass                |   6 ++
 meta/lib/container_fetcher.py                 |  90 ++++++++++++++++
 .../container-loader/container-loader.inc     | 101 ++++++++++++++++++
 .../container-loader/docker-loader.inc        |  10 ++
 .../files/container-loader.service.tmpl       |  12 +++
 .../files/container-loader.sh.tmpl            |  18 ++++
 .../container-loader/podman-loader.inc        |  10 ++
 testsuite/citest.py                           |  21 ++++
 15 files changed, 389 insertions(+)
 create mode 100644 kas/package/pkg_prebuilt-docker-img.yaml
 create mode 100644 kas/package/pkg_prebuilt-podman-img.yaml
 create mode 100644 meta-isar/recipes-app/prebuilt-container/prebuilt-docker-img_0.1.bb
 create mode 100644 meta-isar/recipes-app/prebuilt-container/prebuilt-podman-img_0.1.bb
 create mode 100644 meta/lib/container_fetcher.py
 create mode 100644 meta/recipes-support/container-loader/container-loader.inc
 create mode 100644 meta/recipes-support/container-loader/docker-loader.inc
 create mode 100644 meta/recipes-support/container-loader/files/container-loader.service.tmpl
 create mode 100755 meta/recipes-support/container-loader/files/container-loader.sh.tmpl
 create mode 100644 meta/recipes-support/container-loader/podman-loader.inc