Commit Graph

35 Commits

Author SHA1 Message Date
Natalie Arellano df6be88240
Recover corrupted cache (#1381)
* add failing test to restorer

Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* restorer and exporter working as expected

Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* lint

Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update phase/restorer.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update phase/cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/image_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/volume_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/volume_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/volume_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/volume_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* Update cache/volume_cache.go

Co-authored-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* update based on feedback

Signed-off-by: Joey Brown <brown.joseph@salesforce.com>

* fix log

* temp fix

* this does not work as is. I think we need to modify img utils.

Image utils should fail with a Layer Not found in both ReuseLayer & GetLayer.

For GetLayer, when there is a missing blob, it's return an unexpected EOF error.

For ReuseLayer, when there is a missing blob, it's not returning an error but it should.

* add eof check

* add not exist check

* reuse layer test

* fix test regression

---------

Signed-off-by: Joey Brown <brown.joseph@salesforce.com>
Co-authored-by: Joey Brown <brown.joseph@salesforce.com>
2024-07-17 10:39:20 -04:00
Natalie Arellano 6c7d16a718
Move lifecycle package to sub-directory (#1205)
* Move files

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Fix imports

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Update mockgen directives

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* WIP: add TODOs

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Rename lifecycle -> phase

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Address TODOs by adding comments

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Update phase/handlers.go

Signed-off-by: Natalie Arellano <narellano@vmware.com>

---------

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2023-09-26 11:30:50 -04:00
Domenico Luciani 9c455eb4dd
Stop deleting cache images (#1136)
* Remove deleteOrigImage function from the cache and relative test

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Revert "Remove deleteOrigImage function from the cache and relative test"

This reverts commit 17e646fc39602777a37977dd9416e59aa62f6d04.

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Implemented a new component called cache deleter which takes care of the deletion of the cache images

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Adjusted the name of the struct field

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Move the imade deleter instatiation up to the main

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Add parameter to enable/diable the deletion functionality, for now always set has enabled

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Add feature guard based on the platformAPI version

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Fixing some test titles

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Introduce ImageComparer component

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

* Add async go-subroutine to the delete call to speed up the process

```go
func Benchmark(b *testing.B) {
	mockController := gomock.NewController(b)
	fakeImageComparer := cacheMock.NewMockImageComparer(mockController)
	testLogger := cmd.DefaultLogger
	imageDeleter := NewImageDeleter(fakeImageComparer, testLogger, true)
	for i := 0; i < b.N; i++ {
		fakeOrigImage := fakes.NewImage("fake-image", "", local.IDIdentifier{ImageID: "fakeImage"})
		fakeNewImage := fakes.NewImage("fake-image", "", local.IDIdentifier{ImageID: "fakeNewImage"})

		fakeImageComparer.EXPECT().ImagesEq(fakeOrigImage, fakeNewImage).AnyTimes().Return(false, nil)

		imageDeleter.DeleteOrigImageIfDifferentFromNewImage(fakeOrigImage, fakeNewImage)
	}
}
```

The code above produced this result:

* without the go-subroutine

```
goos: darwin
goarch: amd64
pkg: github.com/buildpacks/lifecycle/cache
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Benchmark
Benchmark-12    	    3501	   8995839 ns/op
PASS
```

* with the go-subroutine

```
goos: darwin
goarch: amd64
pkg: github.com/buildpacks/lifecycle/cache
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Benchmark
Benchmark-12    	    3560	   9133704 ns/op
PASS
```

Speed increased by 1.53% ns/op

Signed-off-by: Domenico Luciani <dluciani@vmware.com>

---------

Signed-off-by: Domenico Luciani <dluciani@vmware.com>
2023-07-12 17:31:30 -04:00
Natalie Arellano 5ae441444e
Fixes from user testing (#1117)
* Small fixes from user testing

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Fixes from user acceptance

- Removes -stack flag from analyzer
- Fixes debug log message
- Removes deprecated rand.Seed

Signed-off-by: Joe Kimmel <joe-kimmel-vmw@vmware.com>

* Bump linter to a version that will work with go 1.20

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Restorer should ensure ownership of kaniko directory

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* pull the less-than case for flags out of the switch

Signed-off-by: Joe Kimmel <jkimmel@vmware.com>

* appease the windows linter

Signed-off-by: Joe Kimmel <jkimmel@vmware.com>

* Fix weird log output

Signed-off-by: Natalie Arellano <narellano@vmware.com>

---------

Signed-off-by: Natalie Arellano <narellano@vmware.com>
Signed-off-by: Joe Kimmel <joe-kimmel-vmw@vmware.com>
Signed-off-by: Joe Kimmel <jkimmel@vmware.com>
Co-authored-by: Joe Kimmel <joe-kimmel-vmw@vmware.com>
Co-authored-by: Joe Kimmel <jkimmel@vmware.com>
2023-06-08 14:34:47 -04:00
Harshal Mittal 6a10b63c67
Replace print with logger in image_cache.go, fixes formatting (#1012)
* Replace print with logger in image_cache.go, fixes formatting

Signed-off-by: Harshal Mittal <harshalmittal4@gmail.com>

* Add tests for image_cache logger

Signed-off-by: Harshal Mittal <harshalmittal4@gmail.com>

---------

Signed-off-by: Harshal Mittal <harshalmittal4@gmail.com>
2023-02-21 10:25:04 -05:00
Michael de Senna 6a2b4bfd54
ci(lint): address most staticcheck alarms (#940)
* ci(lint): auto lint fixes

Signed-off-by: Michael de Senna <desenna@gmail.com>

* fix: replace deprecated funcs

Signed-off-by: Michael de Senna <desenna@gmail.com>

* ci(lint): fix many io/ioutil staticcheck

Signed-off-by: Michael de Senna <desenna@gmail.com>

* fix: import os

Signed-off-by: Michael de Senna <desenna@gmail.com>

Signed-off-by: Michael de Senna <desenna@gmail.com>
Signed-off-by: Natalie Arellano <narellano@vmware.com>
Co-authored-by: Natalie Arellano <narellano@vmware.com>
2022-10-25 17:48:29 -04:00
Yael Harel 2186200870
Move the layer metadata restorer and the layer sha store to a new package (#724)
* Move the layer metadata restorer and the layer sha store to a new package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Remove code duplication of WriteTOML

Signed-off-by: Yael Harel <yharel@vmware.com>

* Create a utils package

Move most of utils.go and the function WriteTOML there

Signed-off-by: Yael Harel <yharel@vmware.com>

* Refactor the new utils package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Make layermetadata an internal package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Move the imageutils files to the image package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Make encoding an internal package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Add the ReadGroup test

Signed-off-by: Yael Harel <yharel@vmware.com>

* Delete image/utils_test.go

WriteTOML that was tested there  moved to the internal/encoding package

Signed-off-by: Yael Harel <yharel@vmware.com>

* Updates to #724 (layer metadata restorer) (#753)

* Merge main

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Rename layermetadata to layer

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Rename layer metadata restorer

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* WIP - layers.go has all dependencies on buildpack

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* WIP

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Fix imports

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Move some things back to lifecycle package and make str package internal

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Rename variable

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Make helper function private

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Small fix

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Fix

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Make structs and interface private

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Consolidate logic for layer metadata file

Signed-off-by: Natalie Arellano <narellano@vmware.com>

* Remove unneeded file

Signed-off-by: Natalie Arellano <narellano@vmware.com>

Co-authored-by: Natalie Arellano <narellano@vmware.com>
2021-12-01 15:04:19 -05:00
Micah Young b592348df2
Merge branch 'main' into fix/analyzer-acceptance-windows 2021-03-25 11:16:25 -04:00
Natalie Arellano 2fd733bf29 Merge branch 'main' into add-gosec 2021-03-25 10:40:24 -04:00
Micah Young 6d87ea6b02 Merge branch 'main' into fix/analyzer-acceptance-windows
Signed-off-by: Micah Young <ymicah@vmware.com>
2021-03-22 09:55:34 -04:00
Natalie Arellano 5309991f67
Merge pull request #537 from buildpacks/opt-in-layer-caching
Opt in layer caching
2021-03-18 16:14:55 -04:00
Natalie Arellano ab0c8e9351 Turn on gosec
- test-only changes + nolint

Signed-off-by: Natalie Arellano <narellano@vmware.com>
2021-03-18 13:51:46 -04:00
Micah Young 9aa0691529 Fixes signature for NewImageCache
Signed-off-by: Micah Young <ymicah@vmware.com>
2021-03-17 12:17:19 -04:00
Micah Young 619a8366ce Changes to new image image constructors
- Fixes cache images create with wrong format
- imgutil WithPlatform initializes OS-specific images
- Windows sim base layers are generated by imgutil instead of lifecycle

Signed-off-by: Micah Young <ymicah@vmware.com>
2021-03-17 12:16:41 -04:00
Micah Young 08d1e30e5a Changes to new image image constructors
- Fixes cache images create with wrong format
- imgutil WithPlatform initializes OS-specific images
- Windows sim base layers are generated by imgutil instead of lifecycle

Signed-off-by: Micah Young <ymicah@vmware.com>
2021-03-16 07:35:33 -04:00
Javier Romero 99f42f5a95 Refactoring - create an EncoderDecoder interface
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Yael Harel <yharel@vmware.com>
2021-03-04 16:17:09 -05:00
Natalie Arellano 1e2b2d69a5 Move buildpack code into own package
Signed-off-by: Natalie Arellano <narellano@vmware.com>
2021-02-16 09:57:48 -05:00
Emily Casey e461c2ccfb Fixes test cleanup error on windows
* Ensures all opened files are properly closed.
* Bumps imgutil

Signed-off-by: Emily Casey <ecasey@vmware.com>
2020-10-08 11:30:24 -04:00
Emily Casey 60ddd29baf Enable errcheck
Signed-off-by: Emily Casey <ecasey@vmware.com>
2020-10-06 18:53:30 -04:00
Lukas Berger bf3d0c140c Compare string values of image identifiers
Signed-off-by: Lukas Berger <bergerl@google.com>
2020-06-02 14:37:07 -07:00
Lukas Berger ce1a9c4525 Do not delete original cache image if it is the same as new image
With the reproducibility improvements, it often happens that the old and
new cache images are the same. The original image should not be
deleted in this case.

This is an issue with remote images, where the image is deleted by
digest and both the old and new images share the same digest.

Signed-off-by: Lukas Berger <bergerl@google.com>
2020-06-01 16:08:52 -07:00
Emily Casey 61d41a0eaa Only calculate layer shas once
* improves exporter performance
* removes unused testmocks

Signed-off-by: Emily Casey <ecasey@pivotal.io>
2020-02-03 11:58:07 -05:00
Joe Kutner 239917126f
Rename Github org to github.com/buildpacks
Signed-off-by: Joe Kutner <jpkutner@gmail.com>
2019-12-12 10:20:55 -06:00
Emily Casey 068ab7ccde Moves all metadata types to lifecycle package
Signed-off-by: Emily Casey <ecasey@pivotal.io>
2019-11-04 09:31:05 -05:00
Emily Casey d5e1a38e07 Exports adds processes to to label
* Adds processes key to io.buildpacks.build.metadata label
* Moves build metadata to lifecycle package

Signed-off-by: Emily Casey <ecasey@pivotal.io>
2019-11-04 09:15:31 -05:00
David Gageot 3ec1d1647c Add more linters
Also restore the check on imports being organised
in 3 groups.

Signed-off-by: David Gageot <david@gageot.net>
2019-10-15 11:41:59 +02:00
Javier Romero 2c200d2871 Add buildpacks to build metadata label
Signed-off-by: Javier Romero <jromero@pivotal.io>
Signed-off-by: Emily Casey <ecasey@pivotal.io>
2019-07-29 10:48:32 -04:00
Javier Romero f49a44e65e Add support for additional image names (tags)
* Lock analyzed image and metadata for exporting
* Adds skip-layers flag to analyzer (analyzer now should run even when
cache is cleared)

Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
Signed-off-by: Javier Romero <jromero@pivotal.io>
Signed-off-by: Emily Casey <ecasey@pivotal.io>
2019-07-02 16:32:17 -04:00
Emily Casey b5bc1f8678 adds launch-cache to exporter
* compilation currently fails due to conflicting ggcr version in imgutil

Signed-off-by: Emily Casey <ecasey@pivotal.io>
Signed-off-by: Danny Joyce <djoyce@pivotal.io>
2019-05-09 18:02:41 -04:00
Danny Joyce f8860fb395 Bump imgutil
Signed-off-by: Danny Joyce <djoyce@pivotal.io>
Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
2019-04-25 11:36:27 -04:00
Danny Joyce 3ae096daa7 dont support reuses of the same cache object
* minor stylistic fixes

Signed-off-by: Danny Joyce <djoyce@pivotal.io>
Signed-off-by: Emily Casey <ecasey@pivotal.io>
2019-04-24 12:23:57 -04:00
Andrew Meyer f49658699a Use external imgutil library
Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
2019-04-17 13:33:34 -05:00
Andrew Meyer e4d4b66912 Remove extra newline
Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
2019-04-15 15:20:17 -05:00
Andrew Meyer 57b1334106 Address PR comments
- Move logging into cacher/restorer rather than in cache implementations
- Remove scary warnings
- Remove cyclic dependencies

Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
2019-04-15 14:15:48 -05:00
Andrew Meyer 1d3fb2a8d5 Add volume cache
- Add cache interface
- Make image cache adhere to interface
- Add new volume cache implementation

Signed-off-by: Andrew Meyer <ameyer@pivotal.io>
Signed-off-by: Danny Joyce <djoyce@pivotal.io>
2019-04-12 10:48:36 -05:00