All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Orling <ticotimo@gmail.com>
To: yocto-patches@lists.yoctoproject.org
Subject: [yocto-autobuilder-helper][PATCH v4 00/11] Implement 'containers' jobs
Date: Mon,  6 Jul 2026 15:05:32 -0700	[thread overview]
Message-ID: <cover.1783371914.git.tim.orling@konsulko.com> (raw)
In-Reply-To: <cover.1780710041.git.tim.orling@konsulko.com>

This series builds on top of the patches already merged from v2 and
previously submitted as v3.

This series contains the 'yocto-autobuilder-helper' patches to enable:
* building, testing and publishing of 'vcontainer-tarball'
  - vcontainer-tests job
* building and pushing containers from:
  - meta-virtualization
* containers are pushed when the push_containers boolean is set in the
  AutoBuilder UI
  - regstries are set with CONTAINER_REGISTRIES variable
* authentication uses local user credentials (e.g. ~/.docker/config.json
  or .../auth.json for podman)
* containers are tagged with PV_MAJOR, PV_MAJOR.PV_MINOR, DISTRO_CODENAME
  and yocto-x.y release (yocto-x.y.z for release builds).
* multiarch containers built for x86-64 and aarch64
* signing of containers
* attaching SPDX 3.0 SBOM attestation (and signing it) for pushed
  containers
* 'dev' mode containers which run as 'root' user and in some cases add a
  shell. These are tagged as above but with a '-dev' suffix.

Additional features, such as attaching SLSA provenance attestations will
come in a future series.

Concerns about the possible infinite loop around the tarball extraction
"while True, try, expect OSError" code [1] are addressed separately [2],
since the original patch has been merged.

This series relies on the resolution of [3].

The 'vcontainer-tests' job is currently experiencing some failures [4],
which will have to be resolved separately.

[1] https://lore.kernel.org/yocto-patches/02f0c35f16a8a51bbe0e89145353008f67180a84.camel@pbarker.dev/
[2] https://lore.kernel.org/yocto-patches/20260606011918.61582-1-tim.orling@konsulko.com/
[3] https://lore.kernel.org/yocto-meta-virtualization/cover.1783356922.git.tim.orling@konsulko.com/
[4] https://autobuilder.yoctoproject.org/valkyrie/?#/builders/118/builds/4

Changes in v2:
* Simplify by merging vdkr-tests and vpdmn-tests into vcontainer-tests
* Simplify by building containers from meta-virtualization:
- Depends on resolution of: https://lists.yoctoproject.org/g/meta-virtualization/message/9826
* Workaround for recent (since Friday May 29, 2026) errors:
  Error: reading blob sha256:<hash>: file integrity checksum failed for
  "<file>"
  - This is probably related to either sstate changes or recent changes
    in vcontainer-common...

Changes in v3:
* vcontainer-tarball is installed in jobs that set "vcontainer" similar
  to "extratools", instead of the more global "buildtools" behavior.
* The (rather large amount of) code for pushing containers in run-config
  is broken out into a dedicated run-push-containers script.
* Workaround for pushing containers is moved to run-push-containers. The
  most recent behavior (on top of meta-virt master-next) showed a
  different error pattern:
  Error: reading blob sha256:<hash>: EOF
  The workaround simply removes all container images from the VM's
  container-registry before importing or pushing new container images.
  The commit message was reworded accordingly.
* Rather than installing latest versions of pip, setuptools and wheel,
  silence the pip warning with PIP_DISABLE_PIP_VERSION_CHECK=1
* Rather than installing the latest versions of pytest, pytest-timeout
  and pexpect, install from meta-virtualization/tests/requirements.txt.
* Refactor run-vcontainer-tests script to use optargs instead of a mix of
  positional args and env vars.

Changes in v4:
* Adjusted the 'vcontainer' installation of the vcontainer-tarball to
  only apply to 'push-containers' step, as we currently only need the
  functionality to 'vimport' and push single-arch containers.
* Added app-container-alpine as a single-arch container example
* Switched other container builds to multi-arch, building both x86-64 and
  aarch64 flavors
* Added conditional signing of containers in the run-push-containers
  script, this is gated by CONTAINER_COSIGN_KEY being set to the path to
  a 'cosign' private key.
* Added conditional attachment of SPDX 3.0 SBOM attestation (when
  CONTAINER_COSIGN_KEY is defined).
* Added conditional verification of the SPDX 3.0 SBOM attestation, which
  is gated by CONTAINER_COSIGN_PUB being set to the path to a 'cosign'
  public key.
* Added building of '-dev' mode containers, with PACKAGECONFIG 'dev',
  which run as 'root' user instead of the 'nonroot' user and in some
  cases conditionally add a shell (depends on the container image recipe).
* Added pushing of '-dev'containers adding a '-dev' suffix to the tags. 

Tim Orling (11):
  scripts: add vcontainer-tarball setup, integration, and publishing
  config.json: add vcontainer-tarball build target
  scripts: add run-vcontainer-tests for meta-virtualization
  scripts: add container registry push, auth, tagging, runtime selection
  config.json: add 'containers-library' build job
  scripts/run-push-containers: push multiarch containers with
    skopeo-native
  containers-library: switch to multiarch; add alpine single-arch
  run-push-containers: conditionally sign pushed containers with cosign
  scripts/run-push-containers: add SPDX SBOM attestation
  config.json: add -dev container builds to containers-library
  run-push-containers: optionally push -dev tagged containers

 config.json                  | 168 +++++++++++++
 scripts/publish-artefacts    |   5 +
 scripts/run-config           |  19 ++
 scripts/run-push-containers  | 471 +++++++++++++++++++++++++++++++++++
 scripts/run-vcontainer-tests | 212 ++++++++++++++++
 scripts/utils.py             |  20 +-
 6 files changed, 891 insertions(+), 4 deletions(-)
 create mode 100755 scripts/run-push-containers
 create mode 100755 scripts/run-vcontainer-tests

These changes can be found:
https://git.yoctoproject.org/yocto-autobuilder-helper/log/?h=contrib/timo/containers-upstream-v4

These changes had a successful build of containers-library job:
https://autobuilder.yoctoproject.org/valkyrie/#/builders/117/builds/25
(with one additional commit to set the path to VCONTAINER_TARBALL_URL)

-- 
2.54.0



  parent reply	other threads:[~2026-07-06 22:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-06  2:51 [yocto-autobuilder2][PATCH v3 0/6] Implement 'containers' jobs tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 1/6] scripts: add vcontainer-tarball setup, integration, and publishing tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 2/6] config.json: add vcontainer-tarball build target tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 3/6] scripts: add run-vcontainer-tests for meta-virtualization tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 4/6] scripts: add container registry push, auth, tagging, runtime selection tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 5/6] config.json: add 'containers-library' build job tim.orling
2026-06-06  2:51 ` [yocto-autobuilder2][PATCH v3 6/6] scripts/run-push-containers: remove all images before push tim.orling
2026-07-06 22:05 ` Tim Orling [this message]
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 01/11] scripts: add vcontainer-tarball setup, integration, and publishing Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 02/11] config.json: add vcontainer-tarball build target Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 03/11] scripts: add run-vcontainer-tests for meta-virtualization Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 04/11] scripts: add container registry push, auth, tagging, runtime selection Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 05/11] config.json: add 'containers-library' build job Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 06/11] scripts/run-push-containers: push multiarch containers with skopeo-native Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 07/11] containers-library: switch to multiarch; add alpine single-arch Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 08/11] run-push-containers: conditionally sign pushed containers with cosign Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 09/11] scripts/run-push-containers: add SPDX SBOM attestation Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 10/11] config.json: add -dev container builds to containers-library Tim Orling
2026-07-06 22:05   ` [yocto-autobuilder-helper][PATCH v4 11/11] run-push-containers: optionally push -dev tagged containers Tim Orling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1783371914.git.tim.orling@konsulko.com \
    --to=ticotimo@gmail.com \
    --cc=yocto-patches@lists.yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.