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?
-
Push an artifact with platform information:
oras push localhost:5000/myartifact:v1 blob --artifact-platform linux/amd64
-
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?
What happened in your environment?
The PR #1500 introduced a new
--artifact-platformoption to theoras pushcommand, 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-platformis incompatible with other commands that provide the--platformoption, such asoras pull --platform,oras manifest fetch-config --platform, andoras copy --platform.Symptom
For example, if one pushes an artifact with platform metadata like this:
and then pulls it specifying the platform as well:
They would get this error message:
Root Cause
This is because the
oras-gobacking 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?
Push an artifact with platform information:
Pull the same artifact specifying the platform:
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?