Merge pull request #1775 from dmcgowan/fix-push-different-tags
Update docker pusher check tag
This commit is contained in:
commit
77cb722e1c
@ -52,7 +52,11 @@ func (p dockerPusher) Push(ctx context.Context, desc ocispec.Descriptor) (conten
|
|||||||
case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList,
|
case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList,
|
||||||
ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex:
|
ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex:
|
||||||
isManifest = true
|
isManifest = true
|
||||||
|
if p.tag == "" {
|
||||||
existCheck = path.Join("manifests", desc.Digest.String())
|
existCheck = path.Join("manifests", desc.Digest.String())
|
||||||
|
} else {
|
||||||
|
existCheck = path.Join("manifests", p.tag)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
existCheck = path.Join("blobs", desc.Digest.String())
|
existCheck = path.Join("blobs", desc.Digest.String())
|
||||||
}
|
}
|
||||||
@ -71,6 +75,17 @@ func (p dockerPusher) Push(ctx context.Context, desc ocispec.Descriptor) (conten
|
|||||||
log.G(ctx).WithError(err).Debugf("Unable to check existence, continuing with push")
|
log.G(ctx).WithError(err).Debugf("Unable to check existence, continuing with push")
|
||||||
} else {
|
} else {
|
||||||
if resp.StatusCode == http.StatusOK {
|
if resp.StatusCode == http.StatusOK {
|
||||||
|
var exists bool
|
||||||
|
if isManifest && p.tag != "" {
|
||||||
|
dgstHeader := digest.Digest(resp.Header.Get("Docker-Content-Digest"))
|
||||||
|
if dgstHeader == desc.Digest {
|
||||||
|
exists = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
exists = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if exists {
|
||||||
p.tracker.SetStatus(ref, Status{
|
p.tracker.SetStatus(ref, Status{
|
||||||
Status: content.Status{
|
Status: content.Status{
|
||||||
Ref: ref,
|
Ref: ref,
|
||||||
@ -79,7 +94,7 @@ func (p dockerPusher) Push(ctx context.Context, desc ocispec.Descriptor) (conten
|
|||||||
})
|
})
|
||||||
return nil, errors.Wrapf(errdefs.ErrAlreadyExists, "content %v on remote", desc.Digest)
|
return nil, errors.Wrapf(errdefs.ErrAlreadyExists, "content %v on remote", desc.Digest)
|
||||||
}
|
}
|
||||||
if resp.StatusCode != http.StatusNotFound {
|
} else if resp.StatusCode != http.StatusNotFound {
|
||||||
// TODO: log error
|
// TODO: log error
|
||||||
return nil, errors.Errorf("unexpected response: %s", resp.Status)
|
return nil, errors.Errorf("unexpected response: %s", resp.Status)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user