github.com/jenkins-x/jx/v2@v2.1.155/pkg/cloud/gke/images.go (about)

     1  package gke
     2  
     3  import (
     4  	"encoding/json"
     5  	"strings"
     6  )
     7  
     8  // ImageTagInfo contains tag information for container images
     9  type ImageTagInfo struct {
    10  	Digest string   `json: "digest"`
    11  	Tags   []string `json: "tags"`
    12  }
    13  
    14  // FindLatestImageTag returns the latest image tag from the JSON output of the command
    15  // ` gcloud container images list-tags gcr.io/jenkinsxio/builder-maven --format jsonhig`
    16  func FindLatestImageTag(output string) (string, error) {
    17  	infos := []ImageTagInfo{}
    18  
    19  	err := json.Unmarshal([]byte(output), &infos)
    20  	if err != nil {
    21  		return "", err
    22  	}
    23  	for _, info := range infos {
    24  		for _, tag := range info.Tags {
    25  			if tag != "" && !strings.Contains(tag, "SNAPSHOT") {
    26  				return tag, nil
    27  			}
    28  		}
    29  	}
    30  	return "", nil
    31  }