From a82f79e4070dc53cbfd84e72f06b41f5cacb0fbc Mon Sep 17 00:00:00 2001 From: Kanishk Date: Thu, 10 Apr 2025 14:04:59 +0530 Subject: [PATCH] Added hints in errors message on possible causes of 403 status for docker push --- artifactory/utils/container/image.go | 11 +++++++++++ plugins/common/utils.go | 2 +- utils/coreutils/coreconsts.go | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/artifactory/utils/container/image.go b/artifactory/utils/container/image.go index bf1b1d369..81f3d5e3d 100644 --- a/artifactory/utils/container/image.go +++ b/artifactory/utils/container/image.go @@ -3,6 +3,7 @@ package container import ( "net/http" "path" + "strconv" "strings" "github.com/jfrog/jfrog-client-go/artifactory" @@ -152,6 +153,9 @@ func (image *Image) GetRemoteRepo(serviceManager artifactory.ArtifactoryServices if err != nil { return "", err } + if resp.StatusCode == http.StatusForbidden { + return "", errorutils.CheckErrorf(getStatusForbiddenErrorMessage()) + } if resp.StatusCode != http.StatusOK { return "", errorutils.CheckErrorf("error while getting docker repository name. Artifactory response: " + resp.Status) } @@ -169,3 +173,10 @@ func buildRequestUrl(longImageName, imageTag, containerRegistryUrl string, https } return "http://" + endpoint } + +func getStatusForbiddenErrorMessage() string { + errorMessage := "error while getting docker repository name. Artifactory response: " + strconv.Itoa(http.StatusForbidden) + + ", Possible causes include: \n- Xray scan in progress \n- Xray policy violations \n- insufficient permissions\n- invalid authentication method\n- disabled anonymous access\n- missing Docker manifests." + + "\nPlease verify the above factors to resolve the issue." + return errorMessage +} diff --git a/plugins/common/utils.go b/plugins/common/utils.go index 873251e48..20d2c13eb 100644 --- a/plugins/common/utils.go +++ b/plugins/common/utils.go @@ -10,9 +10,9 @@ import ( coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" clientutils "github.com/jfrog/jfrog-client-go/utils" - "os" "github.com/jfrog/jfrog-client-go/utils/errorutils" "github.com/jfrog/jfrog-client-go/utils/io/content" + "os" "sort" "strconv" "strings" diff --git a/utils/coreutils/coreconsts.go b/utils/coreutils/coreconsts.go index 2c0c9602d..87854e09b 100644 --- a/utils/coreutils/coreconsts.go +++ b/utils/coreutils/coreconsts.go @@ -67,8 +67,8 @@ var ( HomeDir = "JFROG_CLI_HOME_DIR" BuildName = "JFROG_CLI_BUILD_NAME" BuildNumber = "JFROG_CLI_BUILD_NUMBER" - BuildUrl = "JFROG_CLI_BUILD_URL" - EnvExclude = "JFROG_CLI_ENV_EXCLUDE" + BuildUrl = "JFROG_CLI_BUILD_URL" + EnvExclude = "JFROG_CLI_ENV_EXCLUDE" Project = "JFROG_CLI_BUILD_PROJECT" ApplicationKey = "JFROG_CLI_APPLICATION_KEY" SourceCodeRepository = "JFROG_CLI_SOURCECODE_REPOSITORY"