parent
4919fb5bca
commit
c8b19894bb
|
|
@ -63,7 +63,6 @@ _If you are interested in contributing to kaniko, see [DEVELOPMENT.md](DEVELOPME
|
|||
- [--single-snapshot](#--single-snapshot)
|
||||
- [--skip-tls-verify](#--skip-tls-verify)
|
||||
- [--skip-tls-verify-pull](#--skip-tls-verify-pull)
|
||||
- [--additional-whitelist](#--additional-whitelist)
|
||||
- [--snapshotMode](#--snapshotmode)
|
||||
- [--target](#--target)
|
||||
- [--tarPath](#--tarpath)
|
||||
|
|
@ -494,9 +493,6 @@ Set this flag to skip TLS certificate validation when pushing to a registry. It
|
|||
|
||||
Set this flag to skip TLS certificate validation when pulling from a registry. It is supposed to be used for testing purposes only and should not be used in production!
|
||||
|
||||
#### --additional-whitelist
|
||||
Set this flag with a list of filepaths and Kaniko will ignore these paths during the build. Useful for improving build performance on large filesystems.
|
||||
|
||||
#### --snapshotMode
|
||||
|
||||
You can set the `--snapshotMode=<full (default), time>` flag to set how kaniko will snapshot the filesystem.
|
||||
|
|
|
|||
|
|
@ -75,6 +75,12 @@ var RootCmd = &cobra.Command{
|
|||
return errors.New("You must provide --destination if setting ImageNameDigestFile")
|
||||
}
|
||||
|
||||
if additionalWhitelist == nil {
|
||||
additionalWhitelist = []string{
|
||||
"/var/run",
|
||||
}
|
||||
}
|
||||
|
||||
for _, path := range additionalWhitelist {
|
||||
util.AddToWhitelist(path)
|
||||
}
|
||||
|
|
@ -152,7 +158,7 @@ func addKanikoOptionsFlags() {
|
|||
|
||||
// We use nil as the default value so we can differentiate between the flag passed
|
||||
// with an empty list and the flag not set
|
||||
RootCmd.PersistentFlags().StringSliceVar(&additionalWhitelist, "additional-whitelist", []string{}, "Paths to whitelist. These will be ignored by kaniko to improve performance.")
|
||||
RootCmd.PersistentFlags().StringSliceVar(&additionalWhitelist, "additional-whitelist", nil, "Paths to whitelist. These will be ignored be kaniko to improve performance.")
|
||||
}
|
||||
|
||||
// addHiddenFlags marks certain flags as hidden from the executor help text
|
||||
|
|
|
|||
|
|
@ -38,50 +38,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_DetectFilesystemWhitelist(t *testing.T) {
|
||||
type testcase struct {
|
||||
desc string
|
||||
additionalWhitelist []string
|
||||
expectedWhitelist []WhitelistEntry
|
||||
}
|
||||
|
||||
expectedWhitelist := []WhitelistEntry{
|
||||
{"/kaniko", false},
|
||||
{"/proc", false},
|
||||
{"/dev", false},
|
||||
{"/dev/pts", false},
|
||||
{"/sys", false},
|
||||
{"/etc/mtab", false},
|
||||
}
|
||||
|
||||
testCases := []testcase{
|
||||
{
|
||||
desc: "no additional whitelist",
|
||||
expectedWhitelist: expectedWhitelist,
|
||||
},
|
||||
{
|
||||
desc: "one additional whitelist - /var/run",
|
||||
additionalWhitelist: []string{"/var/run"},
|
||||
expectedWhitelist: append(expectedWhitelist, WhitelistEntry{"/var/run", false}),
|
||||
},
|
||||
{
|
||||
desc: "two additional whitelist - /var/run, /usr/bin",
|
||||
additionalWhitelist: []string{"/var/run", "/usr/bin"},
|
||||
expectedWhitelist: append(
|
||||
expectedWhitelist,
|
||||
WhitelistEntry{"/var/run", false},
|
||||
WhitelistEntry{"/usr/bin", false},
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
expectedWhitelist := tc.expectedWhitelist
|
||||
additionalWhitelist := tc.additionalWhitelist
|
||||
|
||||
tmpWhitelist := make([]WhitelistEntry, len(initialWhitelist))
|
||||
copy(tmpWhitelist, initialWhitelist)
|
||||
|
||||
testDir, err := ioutil.TempDir("", "")
|
||||
if err != nil {
|
||||
t.Fatalf("Error creating tempdir: %s", err)
|
||||
|
|
@ -101,33 +57,45 @@ func Test_DetectFilesystemWhitelist(t *testing.T) {
|
|||
t.Fatalf("Error writing file contents to %s: %s", path, err)
|
||||
}
|
||||
|
||||
for _, wl := range additionalWhitelist {
|
||||
AddToWhitelist(wl)
|
||||
}
|
||||
|
||||
err = DetectFilesystemWhitelist(path)
|
||||
actualWhitelist := whitelist
|
||||
|
||||
if len(actualWhitelist) != len(expectedWhitelist) {
|
||||
t.Errorf(
|
||||
"expected whitelist to have %d items but was %d",
|
||||
len(expectedWhitelist),
|
||||
len(actualWhitelist),
|
||||
)
|
||||
expectedWhitelist := []WhitelistEntry{
|
||||
{"/kaniko", false},
|
||||
{"/proc", false},
|
||||
{"/dev", false},
|
||||
{"/dev/pts", false},
|
||||
{"/sys", false},
|
||||
{"/etc/mtab", false},
|
||||
}
|
||||
|
||||
actualWhitelist := whitelist
|
||||
sort.Slice(actualWhitelist, func(i, j int) bool {
|
||||
return actualWhitelist[i].Path < actualWhitelist[j].Path
|
||||
})
|
||||
sort.Slice(expectedWhitelist, func(i, j int) bool {
|
||||
return expectedWhitelist[i].Path < expectedWhitelist[j].Path
|
||||
})
|
||||
|
||||
testutil.CheckErrorAndDeepEqual(t, false, err, expectedWhitelist, actualWhitelist)
|
||||
|
||||
initialWhitelist = tmpWhitelist
|
||||
tmpInitial := make([]WhitelistEntry, len(initialWhitelist))
|
||||
|
||||
copy(tmpInitial, initialWhitelist)
|
||||
defer func() {
|
||||
initialWhitelist = tmpInitial
|
||||
}()
|
||||
|
||||
AddToWhitelist("/var/run")
|
||||
|
||||
err = DetectFilesystemWhitelist(path)
|
||||
expectedWhitelist = append(expectedWhitelist,
|
||||
WhitelistEntry{"/var/run", false})
|
||||
|
||||
actualWhitelist = whitelist
|
||||
sort.Slice(actualWhitelist, func(i, j int) bool {
|
||||
return actualWhitelist[i].Path < actualWhitelist[j].Path
|
||||
})
|
||||
}
|
||||
sort.Slice(expectedWhitelist, func(i, j int) bool {
|
||||
return expectedWhitelist[i].Path < expectedWhitelist[j].Path
|
||||
})
|
||||
testutil.CheckErrorAndDeepEqual(t, false, err, expectedWhitelist, actualWhitelist)
|
||||
}
|
||||
|
||||
var tests = []struct {
|
||||
|
|
|
|||
Loading…
Reference in New Issue