diff --git a/app.go b/app.go index 5425b83..8e05719 100644 --- a/app.go +++ b/app.go @@ -466,7 +466,7 @@ func Run() { Usage: "path to save Docker image as tar file", EnvVar: "PLUGIN_TAR_PATH, PLUGIN_DESTINATION_TAR_PATH", }, - cli.BoolFlag{ + cli.BoolTFlag{ Name: "buildkit-inherit-auth", Usage: "inherit auth from docker daemon", EnvVar: "PLUGIN_BUILDKIT_INHERIT_AUTH", diff --git a/docker.go b/docker.go index a6fead5..081a5a9 100644 --- a/docker.go +++ b/docker.go @@ -817,14 +817,26 @@ func sanitizeCacheCommand(build *Build) { sanitizeCacheArgs := func(args []string) []string { for i, arg := range args { - // Replace access_key_id if placeholder exists and the actual key is not empty - if strings.Contains(arg, "access_key_id=harness_placeholder_aws_creds") && build.HarnessSelfHostedS3AccessKey != "" { - arg = strings.Replace(arg, "access_key_id=harness_placeholder_aws_creds", "access_key_id="+build.HarnessSelfHostedS3AccessKey, 1) + // Handle access_key_id placeholder + if strings.Contains(arg, "access_key_id=harness_placeholder_aws_creds") { + if build.HarnessSelfHostedS3AccessKey != "" { + arg = strings.Replace(arg, "access_key_id=harness_placeholder_aws_creds", "access_key_id="+build.HarnessSelfHostedS3AccessKey, 1) + } else { + arg = strings.Replace(arg, ",access_key_id=harness_placeholder_aws_creds", "", 1) + arg = strings.Replace(arg, "access_key_id=harness_placeholder_aws_creds,", "", 1) + arg = strings.Replace(arg, "access_key_id=harness_placeholder_aws_creds", "", 1) + } } - // Replace secret_access_key if placeholder exists and the actual key is not empty - if strings.Contains(arg, "secret_access_key=harness_placeholder_aws_creds") && build.HarnessSelfHostedS3SecretKey != "" { - arg = strings.Replace(arg, "secret_access_key=harness_placeholder_aws_creds", "secret_access_key="+build.HarnessSelfHostedS3SecretKey, 1) + // Handle secret_access_key placeholder + if strings.Contains(arg, "secret_access_key=harness_placeholder_aws_creds") { + if build.HarnessSelfHostedS3SecretKey != "" { + arg = strings.Replace(arg, "secret_access_key=harness_placeholder_aws_creds", "secret_access_key="+build.HarnessSelfHostedS3SecretKey, 1) + } else { + arg = strings.Replace(arg, ",secret_access_key=harness_placeholder_aws_creds", "", 1) + arg = strings.Replace(arg, "secret_access_key=harness_placeholder_aws_creds,", "", 1) + arg = strings.Replace(arg, "secret_access_key=harness_placeholder_aws_creds", "", 1) + } } // Handle gcp_json_key diff --git a/docker_test.go b/docker_test.go index 218b5ae..afaf4be 100644 --- a/docker_test.go +++ b/docker_test.go @@ -378,6 +378,17 @@ func TestSanitizeCacheCommand(t *testing.T) { expectedCacheFrom: []string{"type=gcs"}, expectedCacheTo: []string{"type=gcs,bucket=test,prefix=dlc"}, }, + { + name: "Remove AWS placeholders when keys are empty", + build: Build{ + CacheFrom: []string{"type=s3,bucket=test,access_key_id=harness_placeholder_aws_creds,secret_access_key=harness_placeholder_aws_creds,prefix=dlc"}, + CacheTo: []string{"type=s3,bucket=test,access_key_id=harness_placeholder_aws_creds,secret_access_key=harness_placeholder_aws_creds,mode=max,ignore-error=true"}, + HarnessSelfHostedS3AccessKey: "", + HarnessSelfHostedS3SecretKey: "", + }, + expectedCacheFrom: []string{"type=s3,bucket=test,prefix=dlc"}, + expectedCacheTo: []string{"type=s3,bucket=test,mode=max,ignore-error=true"}, + }, { name: "Multiple placeholders in CacheFrom", build: Build{