mirror of
https://github.com/GoogleContainerTools/kaniko
synced 2026-10-01 12:51:25 +02:00
* Remove tarball.WithCompressedCaching flag to resolve OOM Killed error Large images cannot be build as the kaniko container will be killed due to an OOM error. Removing the tarball compression drastically reduces the memory required to push large image layers. Fixes #1680 This change may increase the build time for smaller images. Therefore a command line option to trigger the compression or a more intelligent behaviour may be useful. * Add new command line flag to toggle compressed caching * Add unittest for build with --compressed-caching command line flag set to false
129 lines
3.3 KiB
Go
129 lines
3.3 KiB
Go
/*
|
|
Copyright 2018 Google LLC
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package config
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// CacheOptions are base image cache options that are set by command line arguments
|
|
type CacheOptions struct {
|
|
CacheDir string
|
|
CacheTTL time.Duration
|
|
}
|
|
|
|
// RegistryOptions are all the options related to the registries, set by command line arguments.
|
|
type RegistryOptions struct {
|
|
RegistryMirrors multiArg
|
|
InsecureRegistries multiArg
|
|
SkipTLSVerifyRegistries multiArg
|
|
RegistriesCertificates keyValueArg
|
|
Insecure bool
|
|
SkipTLSVerify bool
|
|
InsecurePull bool
|
|
SkipTLSVerifyPull bool
|
|
PushRetry int
|
|
}
|
|
|
|
// KanikoOptions are options that are set by command line arguments
|
|
type KanikoOptions struct {
|
|
RegistryOptions
|
|
CacheOptions
|
|
Destinations multiArg
|
|
BuildArgs multiArg
|
|
Labels multiArg
|
|
Git KanikoGitOptions
|
|
IgnorePaths multiArg
|
|
DockerfilePath string
|
|
SrcContext string
|
|
SnapshotMode string
|
|
CustomPlatform string
|
|
Bucket string
|
|
TarPath string
|
|
Target string
|
|
CacheRepo string
|
|
DigestFile string
|
|
ImageNameDigestFile string
|
|
ImageNameTagDigestFile string
|
|
OCILayoutPath string
|
|
ImageFSExtractRetry int
|
|
SingleSnapshot bool
|
|
Reproducible bool
|
|
NoPush bool
|
|
Cache bool
|
|
Cleanup bool
|
|
CompressedCaching bool
|
|
IgnoreVarRun bool
|
|
SkipUnusedStages bool
|
|
RunV2 bool
|
|
CacheCopyLayers bool
|
|
ForceBuildMetadata bool
|
|
}
|
|
|
|
type KanikoGitOptions struct {
|
|
Branch string
|
|
SingleBranch bool
|
|
RecurseSubmodules bool
|
|
}
|
|
|
|
var ErrInvalidGitFlag = errors.New("invalid git flag, must be in the key=value format")
|
|
|
|
func (k *KanikoGitOptions) Type() string {
|
|
return "gitoptions"
|
|
}
|
|
|
|
func (k *KanikoGitOptions) String() string {
|
|
return fmt.Sprintf("branch=%s,single-branch=%t,recurse-submodules=%t", k.Branch, k.SingleBranch, k.RecurseSubmodules)
|
|
}
|
|
|
|
func (k *KanikoGitOptions) Set(s string) error {
|
|
var parts = strings.SplitN(s, "=", 2)
|
|
if len(parts) != 2 {
|
|
return fmt.Errorf("%w: %s", ErrInvalidGitFlag, s)
|
|
}
|
|
switch parts[0] {
|
|
case "branch":
|
|
k.Branch = parts[1]
|
|
case "single-branch":
|
|
v, err := strconv.ParseBool(parts[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
k.SingleBranch = v
|
|
case "recurse-submodules":
|
|
v, err := strconv.ParseBool(parts[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
k.RecurseSubmodules = v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// WarmerOptions are options that are set by command line arguments to the cache warmer.
|
|
type WarmerOptions struct {
|
|
CacheOptions
|
|
RegistryOptions
|
|
CustomPlatform string
|
|
Images multiArg
|
|
Force bool
|
|
}
|