This commit introduces two new flags for the skopeo copy command to provide
more granular control over multi-architecture image copying:
--remove-list-signatures: Removes only the manifest list signature while
preserving per-instance signatures. This provides finer control than the
existing --remove-signatures flag which removes all signatures.
--strip-sparse-manifest-list: Strips missing instances from manifest lists
when copying only a subset of platforms (using --multi-arch with a platform
list). This is useful for registries that don't support sparse manifest lists.
The --strip-sparse-manifest-list flag requires explicit signature removal
using either --remove-signatures or --remove-list-signatures, as stripping
instances invalidates the manifest list signature.
These flags address scenarios where users need to copy multi-architecture
images to registries with different signature requirements or those that
don't support sparse manifest lists, while still maintaining control over
which signatures are preserved.
Documentation has been updated with usage examples, and integration tests
have been added to verify the new functionality.
Signed-off-by: Alex Guidi <aguidi@redhat.com>
gopkg.in/yaml.v3 is unmaintained; go.yaml.in/yaml/v3
is the current maintained version.
For now, we include both copies either way, but
container-libs have also migrated, so the next time we update,
gopkg.in/yaml.v3 will only be used by test-only stretchr/testify.
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This was originally a part of a --sign-by paragraph. I don't think
we _really_ need it, the "add a signature" wording should be clear
enough. If we did move it back to --sign-by, we should add it
to all the --sign-... options; it's simpler to just drop it.
Should not change behavior.
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
The skopeo_cidev image is built and published from the
podman-container-tools/automation repo to
ghcr.io/podman-container-tools/skopeo_cidev.
Signed-off-by: Tim Zhou <tizhou@redhat.com>
The Oracle VM runners are being retired. Migrate the four self-hosted
jobs (validate, doccheck, test_skopeo, ostree_rs_ext) to the equivalent
CNCF Ubuntu runner sizes, and update the actionlint allowlist to match.
Size mapping:
oracle-vm-2cpu-8gb-x86-64 -> cncf-ubuntu-2-8-x86 (test_skopeo)
oracle-vm-4cpu-16gb-x86-64 -> cncf-ubuntu-4-16-x86 (validate,
doccheck,
ostree_rs_ext)
Signed-off-by: Tim Zhou <tizhou@redhat.com>
The POC used a repo settings variable, but that doesn't
work for pull requests; and it would be hard to maintain
with branches.
Sadly, there seems to be no easy facility to define a file-wide
constant in GitHub actions, so hard-code three copies. Hopefully
Renovate can be set up to update this, then the number of copies
won't matter.
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Mirrors validate, doccheck, cross, osx, test_skopeo, and ostree_rs_ext
from containers/skopeo's .cirrus.yml into a GH Actions workflow on
podman-io/skopeo-sandbox.
Signed-off-by: Tim Zhou <tizhou@redhat.com>
Bump Skopeo to v1.23.0 to go out with Podman 6.0.
It appears that I negelcted to bump to 1.23.0-dev after 1.22.0 was
release as I should have.
Signed-off-by: Tom Sweeney <tsweeney@redhat.com>
Bump the following:
c/common to v0.68.0
c/image to v5.40.0
c/storage to v1.63.0
In preparation for Skopeo v1.23.0 to go out with Podman v6.0
Signed-off-by: Tom Sweeney <tsweeney@redhat.com>
Extends the --multi-arch flag to accept platform specifications,
allowing users to copy specific platforms from multi-architecture
images without requiring digest hashes.
Users can now specify platforms using OS/Architecture pairs:
skopeo copy --multi-arch=linux/amd64,linux/arm64 docker://src docker://dst
This feature:
- Parses comma-separated platform specifications (e.g., linux/amd64,linux/arm64)
- Copies ALL instances matching each specified platform (including all
compression variants and other variations)
- Works alongside existing --multi-arch options (system, all, index-only)
- Leverages the InstancePlatforms field added in containers/image
The implementation follows the design from containers/image#1938 and
containers/container-libs#656, providing a more user-friendly alternative
to specifying digest hashes via the Instances field.
Signed-off-by: Alex Guidi <aguidi@redhat.com>