mirror of
https://github.com/GoogleContainerTools/kaniko
synced 2026-10-18 16:53:46 +02:00
feat: kaniko dir config option (#1997)
* remove configurables from constants * add configurables to config init * add kaniko dir flag * cleanup pkg constants * replace buildcontext constants pkg occurrences with config * add KanikoDir to KanikoOptions * replace executor constants pkg occurrences with config * remove redundant KanikoDir assignment * replace constants to config for IntermediateStagesDir * fix imports * add default kaniko directory into constants * add check for kanikoDir on use * update init to use default path constant * update executor kanikoDir check Co-authored-by: Jason Hall <jasonhall@redhat.com> * alter checkKanikoDir parameter * add TestKanikoDir func * update error handling style Co-authored-by: Jason Hall <jasonhall@redhat.com> * remove shorthand flag usage from test Co-authored-by: Jason Hall <jasonhall@redhat.com> * add docstring to integration test Co-authored-by: Jason Hall <jasonhall@redhat.com> * remove shorthand flag from kaniko-dir Co-authored-by: Jason Hall <jasonhall@redhat.com>
This commit is contained in:
@@ -67,6 +67,11 @@ var RootCmd = &cobra.Command{
|
||||
Use: "executor",
|
||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
if cmd.Use == "executor" {
|
||||
|
||||
if err := checkKanikoDir(config.KanikoDir); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resolveEnvironmentBuildArgs(opts.BuildArgs, os.Getenv)
|
||||
|
||||
if err := logging.Configure(logLevel, logFormat, logTimestamp); err != nil {
|
||||
@@ -182,6 +187,7 @@ func addKanikoOptionsFlags() {
|
||||
RootCmd.PersistentFlags().BoolVarP(&opts.SkipTLSVerifyPull, "skip-tls-verify-pull", "", false, "Pull from insecure registry ignoring TLS verify")
|
||||
RootCmd.PersistentFlags().IntVar(&opts.PushRetry, "push-retry", 0, "Number of retries for the push operation")
|
||||
RootCmd.PersistentFlags().IntVar(&opts.ImageFSExtractRetry, "image-fs-extract-retry", 0, "Number of retries for image FS extraction")
|
||||
RootCmd.PersistentFlags().StringVarP(&opts.KanikoDir, "kaniko-dir", "", "/kaniko", "Path to the kaniko directory")
|
||||
RootCmd.PersistentFlags().StringVarP(&opts.TarPath, "tarPath", "", "", "Path to save the image in as a tarball instead of pushing")
|
||||
RootCmd.PersistentFlags().BoolVarP(&opts.SingleSnapshot, "single-snapshot", "", false, "Take a single snapshot at the end of the build.")
|
||||
RootCmd.PersistentFlags().BoolVarP(&opts.Reproducible, "reproducible", "", false, "Strip timestamps out of the image to make it reproducible")
|
||||
@@ -233,6 +239,22 @@ func addHiddenFlags(cmd *cobra.Command) {
|
||||
cmd.PersistentFlags().MarkHidden("bucket")
|
||||
}
|
||||
|
||||
// checkKanikoDir will check whether the executor is operating in the default '/kaniko' directory,
|
||||
// conducting the relevant operations if it is not
|
||||
func checkKanikoDir(dir string) error {
|
||||
if dir != constants.DefaultKanikoPath {
|
||||
|
||||
if err := os.MkdirAll(dir, os.ModeDir); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := os.Rename(constants.DefaultKanikoPath, dir); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkContained() bool {
|
||||
return proc.GetContainerRuntime(0, 0) != proc.RuntimeNotFound
|
||||
}
|
||||
@@ -289,16 +311,16 @@ func resolveEnvironmentBuildArgs(arguments []string, resolver func(string) strin
|
||||
// copy Dockerfile to /kaniko/Dockerfile so that if it's specified in the .dockerignore
|
||||
// it won't be copied into the image
|
||||
func copyDockerfile() error {
|
||||
if _, err := util.CopyFile(opts.DockerfilePath, constants.DockerfilePath, util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID); err != nil {
|
||||
if _, err := util.CopyFile(opts.DockerfilePath, config.DockerfilePath, util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID); err != nil {
|
||||
return errors.Wrap(err, "copying dockerfile")
|
||||
}
|
||||
dockerignorePath := opts.DockerfilePath + ".dockerignore"
|
||||
if util.FilepathExists(dockerignorePath) {
|
||||
if _, err := util.CopyFile(dockerignorePath, constants.DockerfilePath+".dockerignore", util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID); err != nil {
|
||||
if _, err := util.CopyFile(dockerignorePath, config.DockerfilePath+".dockerignore", util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID); err != nil {
|
||||
return errors.Wrap(err, "copying Dockerfile.dockerignore")
|
||||
}
|
||||
}
|
||||
opts.DockerfilePath = constants.DockerfilePath
|
||||
opts.DockerfilePath = config.DockerfilePath
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user