Procházet zdrojové kódy

add image repository creation before build when useCache is set

Alexander Belanger před 4 roky
rodič
revize
45d4cbc00a
2 změnil soubory, kde provedl 36 přidání a 13 odebrání
  1. 23 0
      cli/cmd/apply.go
  2. 13 13
      cli/cmd/deploy/create.go

+ 23 - 0
cli/cmd/apply.go

@@ -367,6 +367,7 @@ func (d *Driver) applyApplication(resource *models.Resource, client *api.Client,
 	}
 
 	if appConfig.Build.UseCache {
+		// set the docker config so that pack caching can use the repo credentials
 		err := setDockerConfig(client)
 
 		if err != nil {
@@ -469,6 +470,28 @@ func (d *Driver) createApplication(resource *models.Resource, client *api.Client
 	if appConf.Build.Method == "registry" {
 		subdomain, err = createAgent.CreateFromRegistry(appConf.Build.Image, appConf.Values)
 	} else {
+		// if useCache is set, create the image repository first
+		if appConf.Build.UseCache {
+			regID, imageURL, err := createAgent.GetImageRepoURL(resource.Name, sharedOpts.Namespace)
+
+			if err != nil {
+				return nil, err
+			}
+
+			err = client.CreateRepository(
+				context.Background(),
+				sharedOpts.ProjectID,
+				regID,
+				&types.CreateRegistryRepositoryRequest{
+					ImageRepoURI: imageURL,
+				},
+			)
+
+			if err != nil {
+				return nil, err
+			}
+		}
+
 		subdomain, err = createAgent.CreateFromDocker(appConf.Values, sharedOpts.OverrideTag, buildConfig, appConf.Build.ForceBuild)
 	}
 

+ 13 - 13
cli/cmd/deploy/create.go

@@ -313,21 +313,21 @@ func (c *CreateAgent) CreateFromDocker(
 			return "", err
 		}
 
-		// create repository
-		err = c.Client.CreateRepository(
-			context.Background(),
-			opts.ProjectID,
-			regID,
-			&types.CreateRegistryRepositoryRequest{
-				ImageRepoURI: imageURL,
-			},
-		)
+		if !opts.SharedOpts.UseCache {
+			// create repository
+			err = c.Client.CreateRepository(
+				context.Background(),
+				opts.ProjectID,
+				regID,
+				&types.CreateRegistryRepositoryRequest{
+					ImageRepoURI: imageURL,
+				},
+			)
 
-		if err != nil {
-			return "", err
-		}
+			if err != nil {
+				return "", err
+			}
 
-		if !opts.SharedOpts.UseCache {
 			err = agent.PushImage(fmt.Sprintf("%s:%s", imageURL, imageTag))
 
 			if err != nil {