Skip to content

oras push --artifact-platform is not compatible with oras pull --platform and similar commands #1517

@Wwwsylvia

Description

@Wwwsylvia

What happened in your environment?

The PR #1500 introduced a new --artifact-platform option to the oras push command, which adds platform information to the artifact configuration using the media type "application/vnd.unknown.config.v1+json" by default.

However, this implementation of oras push --artifact-platform is incompatible with other commands that provide the --platform option, such as oras pull --platform, oras manifest fetch-config --platform, and oras copy --platform.

Symptom

For example, if one pushes an artifact with platform metadata like this:

oras push localhost:5000/myartifact:v1 blob --artifact-platform linux/amd64

and then pulls it specifying the platform as well:

oras pull localhost:5000/myartifact:v1 --platform linux/amd64

They would get this error message:

Error: fail to recognize platform from unknown config application/vnd.unknown.config.v1+json: expect application/vnd.oci.image.config.v1+json

Root Cause

This is because the oras-go backing library only extracts platform information from the image config media type "application/vnd.oci.image.config.v1+json" and throws errors for any other config media type.

Workaround

To temporarily address this issue, we can use "application/vnd.oci.image.config.v1+json" as the default config media type. While this solution is not ideal and introduces other problems, it serves as a workaround to enable the end-to-end workflow. Ultimately, we may need to reconsider the design for adding the platform information.

What did you expect to happen?

No response

How can we reproduce it?

  1. Push an artifact with platform information:

    oras push localhost:5000/myartifact:v1 blob --artifact-platform linux/amd64
  2. Pull the same artifact specifying the platform:

    oras pull localhost:5000/myartifact:v1 --platform linux/amd64

What is the version of your ORAS CLI?

Version: 1.2.0+unreleased
Go version: go1.23.0
Git commit: 97cb376
Git tree state: clean

What is your OS environment?

Ubuntu 22.04.1

Are you willing to submit PRs to fix it?

  • Yes, I am willing to fix it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions