Explorar o código

Merge pull request #1833 from shin-/1815-always-push-tags

Push tags to registry even if images are already uploaded
Joffrey F %!s(int64=11) %!d(string=hai) anos
pai
achega
49b5c44ee9
Modificáronse 1 ficheiros con 15 adicións e 4 borrados
  1. 15 4
      server.go

+ 15 - 4
server.go

@@ -741,10 +741,24 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, localName
 		for _, round := range imgList {
 			// FIXME: This section can be parallelized
 			for _, elem := range round {
+				var pushTags func() error
+				pushTags = func() error {
+					out.Write(sf.FormatStatus("", "Pushing tags for rev [%s] on {%s}", elem.ID, ep+"repositories/"+remoteName+"/tags/"+elem.Tag))
+					if err := r.PushRegistryTag(remoteName, elem.ID, elem.Tag, ep, repoData.Tokens); err != nil {
+						return err
+					}
+					return nil
+				}
 				if _, exists := repoData.ImgList[elem.ID]; exists {
+					if err := pushTags(); err != nil {
+						return err
+					}
 					out.Write(sf.FormatStatus("", "Image %s already pushed, skipping", elem.ID))
 					continue
 				} else if r.LookupRemoteImage(elem.ID, ep, repoData.Tokens) {
+					if err := pushTags(); err != nil {
+						return err
+					}
 					out.Write(sf.FormatStatus("", "Image %s already pushed, skipping", elem.ID))
 					continue
 				}
@@ -754,10 +768,7 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, localName
 				} else {
 					elem.Checksum = checksum
 				}
-				out.Write(sf.FormatStatus("", "Pushing tags for rev [%s] on {%s}", elem.ID, ep+"repositories/"+remoteName+"/tags/"+elem.Tag))
-				if err := r.PushRegistryTag(remoteName, elem.ID, elem.Tag, ep, repoData.Tokens); err != nil {
-					return err
-				}
+				return pushTags()
 			}
 		}
 	}