about summary refs log tree commit diff
path: root/tools/nixery/server/builder/builder.go
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-09-10T10·13+0100
committerVincent Ambo <github@tazj.in>2019-09-10T10·32+0100
commit5a002fe067e52d503062307515179670b5e3de13 (patch)
treed3649de6008562be0e4fcd6ca6e5c235d71b060d /tools/nixery/server/builder/builder.go
parent4a58b0ab4d21473723834dec651c876da2dec220 (diff)
refactor(builder): Calculate image cache key only once
Diffstat (limited to 'tools/nixery/server/builder/builder.go')
-rw-r--r--tools/nixery/server/builder/builder.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/tools/nixery/server/builder/builder.go b/tools/nixery/server/builder/builder.go
index dd26ccc310aa..0ded94dfad01 100644
--- a/tools/nixery/server/builder/builder.go
+++ b/tools/nixery/server/builder/builder.go
@@ -110,7 +110,13 @@ func convenienceNames(packages []string) []string {
 // Call out to Nix and request that an image be built. Nix will, upon success,
 // return a manifest for the container image.
 func BuildImage(ctx *context.Context, cfg *config.Config, cache *LocalCache, image *Image, bucket *storage.BucketHandle) (*BuildResult, error) {
-	resultFile, cached := manifestFromCache(ctx, bucket, cfg.Pkgs, cache, image)
+	var resultFile string
+	cached := false
+
+	key := cfg.Pkgs.CacheKey(image.Packages, image.Tag)
+	if key != "" {
+		resultFile, cached = manifestFromCache(ctx, cache, bucket, key)
+	}
 
 	if !cached {
 		packages, err := json.Marshal(image.Packages)
@@ -158,7 +164,10 @@ func BuildImage(ctx *context.Context, cfg *config.Config, cache *LocalCache, ima
 		log.Println("Finished Nix image build")
 
 		resultFile = strings.TrimSpace(string(stdout))
-		cacheManifest(ctx, bucket, cfg.Pkgs, cache, image, resultFile)
+
+		if key != "" {
+			cacheManifest(ctx, cache, bucket, key, resultFile)
+		}
 	}
 
 	buildOutput, err := ioutil.ReadFile(resultFile)