浏览代码

Merge pull request #1848 from porter-dev/belanger/add-custom-repo-support

Add more preview environment improvements -- proper Helm repo support, pack cache fixes
abelanger5 4 年之前
父节点
当前提交
70170d7281
共有 2 个文件被更改,包括 44 次插入13 次删除
  1. 31 0
      cli/cmd/apply.go
  2. 13 13
      cli/cmd/deploy/create.go

+ 31 - 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)
 	}
 
@@ -634,6 +657,14 @@ func getSource(input map[string]interface{}, output *Source) error {
 		}
 
 		return fmt.Errorf("source does not exist in any repo")
+	} else {
+		// we look in the passed-in repo
+		values, err := existsInRepo(output.Name, output.Version, output.Repo)
+
+		if err == nil {
+			output.SourceValues = values
+			return nil
+		}
 	}
 
 	return fmt.Errorf("source '%s' does not exist in repo '%s'", output.Name, output.Repo)

+ 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 {