Closed Wwwsylvia closed 1 month ago
Checked the oras-go function that does the platform matching, sounds like --artifact-type
should not be used with --aritfact-platform
for when image spec is set tov1.0
➜ oras git:(main) ✗ ./bin/linux/amd64/oras push localhost:5000/test:config-type --artifact-platform linux/amd64 --artifact-type billy/test --image-spec v1.0
✓ Exists billy/test 37/37 B 100.00% 0s
└─ sha256:9d99a75171aea000c711b34c0e5e3f28d3d537dd99d110eafbfbc2bd8e52c2bf
✓ Uploaded application/vnd.oci.image.manifest.v1+json 291/291 B 100.00% 0s
└─ sha256:42f833fb2750fab31688457d69c57e5a7f4b6dbd13c8bffbdbd2e5a56bdf6e87
Pushed [registry] localhost:5000/test:config-type
ArtifactType: billy/test
Digest: sha256:42f833fb2750fab31688457d69c57e5a7f4b6dbd13c8bffbdbd2e5a56bdf6e87
➜ oras git:(main) ✗ ./bin/linux/amd64/oras pull localhost:5000/test:config-type --platform linux/amd64
Error: fail to recognize platform from unknown config billy/test: expect application/vnd.oci.image.config.v1+json
What happened in your environment?
The PR #1500 introduced a new
--artifact-platform
option to theoras 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 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-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:
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: 97cb3766ad2055ddbf3cb5dd49c2725ae0b12148 Git tree state: clean
What is your OS environment?
Ubuntu 22.04.1
Are you willing to submit PRs to fix it?