Handle multi-arch docker manifests in promote

A multi-arch manifist is a manifest list which has a different content-type
than a regular manifest.  In order to re-tag the image correctly, tell
docker hub that we can accept both kinds of manifests, and re-upload
the one that it gives us.  This will be a manifest list if it exists, or
a regular manifest if it doesn't.

Change-Id: I7863b0c824c0b3cb20f94ba67399e823a216092b
This commit is contained in:
James E. Blair 2020-07-01 15:37:58 -07:00
parent 06e35b2125
commit b2b5ba1f27

View File

@ -4,7 +4,7 @@
url: "https://registry.hub.docker.com/v2/{{ zj_image.repository }}/manifests/change_{{ zuul.change }}_{{ zj_image_tag }}" url: "https://registry.hub.docker.com/v2/{{ zj_image.repository }}/manifests/change_{{ zuul.change }}_{{ zj_image_tag }}"
status_code: 200 status_code: 200
headers: headers:
Accept: "application/vnd.docker.distribution.manifest.v2+json" Accept: "application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v2+json"
Authorization: "Bearer {{ token.json.token }}" Authorization: "Bearer {{ token.json.token }}"
return_content: true return_content: true
register: manifest register: manifest
@ -16,7 +16,7 @@
status_code: 201 status_code: 201
body: "{{ manifest.content | string }}" body: "{{ manifest.content | string }}"
headers: headers:
Content-Type: "application/vnd.docker.distribution.manifest.v2+json" Content-Type: "{{ manifest.content_type }}"
Authorization: "Bearer {{ token.json.token }}" Authorization: "Bearer {{ token.json.token }}"
- name: Delete the current change tag - name: Delete the current change tag
no_log: true no_log: true