Skip to content

avoid pushing artifacts without artifactType if --image-spec v1.1 is specified #1313

@qweeah

Description

@qweeah

What is the version of your ORAS CLI

v1.2.0

What would you like to be added?

oras push supports pushing an artifact without artifactType even when OCI image spec v1.1 is specified.

~ oras push localhost:5000/artifact:type --format json --config <(echo -n "{}"):my/type --image-spec v1.1
✓ Exists    my/type                                                                                0/0  B 100.00%     0s
  └─ sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
✓ Exists    application/vnd.oci.empty.v1+json                                                      2/2  B 100.00%     0s
  └─ sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
✓ Uploaded  application/vnd.oci.image.manifest.v1+json                                         442/442  B 100.00%     0s
  └─ sha256:3179007d443a6c79a5e3b8af868cf762202ca3e95ecf87da456e59963913e006
{
  "Ref": "localhost:5000/artifact@sha256:3179007d443a6c79a5e3b8af868cf762202ca3e95ecf87da456e59963913e006",
  "MediaType": "application/vnd.oci.image.manifest.v1+json",
  "Digest": "sha256:3179007d443a6c79a5e3b8af868cf762202ca3e95ecf87da456e59963913e006",
  "Size": 442,
  "Annotations": {
    "org.opencontainers.image.created": "2024-03-28T01:43:28Z"
  },
  "ArtifactType": ""
}~ oras manifest fetch --pretty localhost:5000/artifact:type
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.manifest.v1+json",
  "config": {
    "mediaType": "my/type",
    "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
    "size": 0
  },
  "layers": [
    {
      "mediaType": "application/vnd.oci.empty.v1+json",
      "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
      "size": 2,
      "data": "e30="
    }
  ],
  "annotations": {
    "org.opencontainers.image.created": "2024-03-28T01:43:28Z"

Why is this needed for ORAS?

According to the guidance, v1.1 artifact should always contains an artifactType, so

  1. --config MUST not to be used with --image-spec v1.1 if --artifac-type is not specified, return error when encounter this.
  2. --image-spec should be default to auto, which represents v1.0 if --config is used and --artifact-type not used. Otherwise v1.1

Are you willing to submit PRs to contribute to this feature?

  • Yes, I am willing to implement it.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions