diff --git a/chart-sync/go.mod b/chart-sync/go.mod index 39a8e7c30..bce49496a 100644 --- a/chart-sync/go.mod +++ b/chart-sync/go.mod @@ -5,7 +5,7 @@ go 1.22.4 toolchain go1.22.6 replace ( - github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da + github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca helm.sh/helm/v3 v3.14.3 => github.com/devtron-labs/helm/v3 v3.14.1-0.20240401080259-90238cf69e42 ) @@ -123,3 +123,5 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) + +replace github.com/devtron-labs/chart-sync => github.com/devtron-labs/devtron-services/chart-sync v0.0.0-20241024131256-7d3ba621dece diff --git a/chart-sync/go.sum b/chart-sync/go.sum index c4b8c2857..1e627069a 100644 --- a/chart-sync/go.sum +++ b/chart-sync/go.sum @@ -54,8 +54,8 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/devtron-labs/helm/v3 v3.14.1-0.20240401080259-90238cf69e42 h1:pJmK44QaSztOiZe0iQHNf0sdy5KwkAeceydyhOG4RaY= github.com/devtron-labs/helm/v3 v3.14.1-0.20240401080259-90238cf69e42/go.mod h1:v6myVbyseSBJTzhmeE39UcPLNv6cQK6qss3dvgAySaE= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= diff --git a/chart-sync/vendor/modules.txt b/chart-sync/vendor/modules.txt index 03ba9bc59..7bce307c2 100644 --- a/chart-sync/vendor/modules.txt +++ b/chart-sync/vendor/modules.txt @@ -93,7 +93,7 @@ github.com/containerd/platforms # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew -# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/helmLib/registry github.com/devtron-labs/common-lib/utils/http @@ -785,4 +785,4 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/ci-runner/executor/stage/ciStages.go b/ci-runner/executor/stage/ciStages.go index e120ce30a..885b073e5 100644 --- a/ci-runner/executor/stage/ciStages.go +++ b/ci-runner/executor/stage/ciStages.go @@ -387,7 +387,7 @@ func (impl *CiStage) runBuildArtifact(ciCdRequest *helper.CiCdTriggerEvent, metr // build start := time.Now() metrics.BuildStartTime = start - dest, err := impl.dockerHelper.BuildArtifact(ciCdRequest.CommonWorkflowRequest) // TODO make it skipable + dest, err := impl.dockerHelper.BuildArtifact(ciCdRequest.CommonWorkflowRequest, scriptEnvs, preCiStageOutVariable) // TODO make it skipable metrics.BuildDuration = time.Since(start).Seconds() if err != nil { log.Println("Error in building artifact", "err", err) @@ -410,7 +410,7 @@ func (impl *CiStage) runBuildArtifact(ciCdRequest *helper.CiCdTriggerEvent, metr return dest, err } -func (impl *CiStage) extractDigest(ciCdRequest *helper.CiCdTriggerEvent, dest string, metrics *helper.CIMetrics, artifactUploaded bool) (string, error) { +func (impl *CiStage) extractDigest(ciCdRequest *helper.CiCdTriggerEvent, dest string, metrics *helper.CIMetrics, artifactUploaded bool, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*helper.VariableObject) (string, error) { var digest string var err error @@ -423,7 +423,7 @@ func (impl *CiStage) extractDigest(ciCdRequest *helper.CiCdTriggerEvent, dest st } else { // push to dest log.Println(util.DEVTRON, "Docker push Artifact", "dest", dest) - err = impl.pushArtifact(ciCdRequest, dest, digest, metrics, artifactUploaded) + err = impl.pushArtifact(ciCdRequest, dest, digest, metrics, artifactUploaded, scriptEnvs, preCiStageOutVariable) if err != nil { return err } @@ -496,7 +496,7 @@ func (impl *CiStage) getImageDestAndDigest(ciCdRequest *helper.CiCdTriggerEvent, if err != nil { return "", "", err } - digest, err := impl.extractDigest(ciCdRequest, dest, metrics, artifactUploaded) + digest, err := impl.extractDigest(ciCdRequest, dest, metrics, artifactUploaded, scriptEnvs, preCiStageOutVariable) if err != nil { log.Println("Error in extracting digest", "err", err) return "", "", err @@ -564,9 +564,10 @@ func sendCDFailureEvent(ciRequest *helper.CommonWorkflowRequest, err *helper.CdS } } -func (impl *CiStage) pushArtifact(ciCdRequest *helper.CiCdTriggerEvent, dest string, digest string, metrics *helper.CIMetrics, artifactUploaded bool) error { +func (impl *CiStage) pushArtifact(ciCdRequest *helper.CiCdTriggerEvent, dest string, digest string, metrics *helper.CIMetrics, artifactUploaded bool, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*helper.VariableObject) error { imageRetryCountValue := ciCdRequest.CommonWorkflowRequest.ImageRetryCount imageRetryIntervalValue := ciCdRequest.CommonWorkflowRequest.ImageRetryInterval + var err error for i := 0; i < imageRetryCountValue+1; i++ { if i != 0 { @@ -585,6 +586,27 @@ func (impl *CiStage) pushArtifact(ciCdRequest *helper.CiCdTriggerEvent, dest str WithFailureMessage(workFlow.PushFailed.String()). WithArtifactUploaded(artifactUploaded) } + multiDockerTagsValue := helper.GetMultiDockerTagsValue(scriptEnvs, preCiStageOutVariable) + if len(multiDockerTagsValue) > 0 { + tags := strings.Split(multiDockerTagsValue, `,`) + for _, tmpDockerTag := range tags { + if !strings.Contains(tmpDockerTag, ":") { + fullImageUrl, err := helper.BuildDockerImagePathForCustomTag(ciCdRequest.CommonWorkflowRequest, tmpDockerTag) + if err != nil { + log.Println("Error in building docker image", "fullImageUrl", fullImageUrl, "err", err) + return err + } + tmpDockerTag = fullImageUrl + } + log.Println(" -----> custom-tag push " + tmpDockerTag) + ciContext := cicxt.BuildCiContext(context.Background(), ciCdRequest.CommonWorkflowRequest.EnableSecretMasking) + err = impl.dockerHelper.PushArtifact(ciContext, tmpDockerTag) + if err != nil { + log.Println("Error in pushing artifact", "artifact", tmpDockerTag, "err", err) + } + } + + } return err } diff --git a/ci-runner/go.mod b/ci-runner/go.mod index bc6624b85..5ce085e2d 100644 --- a/ci-runner/go.mod +++ b/ci-runner/go.mod @@ -4,7 +4,7 @@ go 1.21 toolchain go1.21.8 -replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca require ( github.com/Knetic/govaluate v3.0.0+incompatible @@ -125,4 +125,4 @@ require ( sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.3.0 // indirect -) +) \ No newline at end of file diff --git a/ci-runner/go.sum b/ci-runner/go.sum index 9862f1fa9..55b7f5078 100644 --- a/ci-runner/go.sum +++ b/ci-runner/go.sum @@ -57,8 +57,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWTcc7GAneOY= diff --git a/ci-runner/helper/DockerHelper.go b/ci-runner/helper/DockerHelper.go index de4081849..1463976ae 100644 --- a/ci-runner/helper/DockerHelper.go +++ b/ci-runner/helper/DockerHelper.go @@ -59,12 +59,13 @@ const ( BUILDX_K8S_DRIVER_NAME = "devtron-buildx-builder" BUILDX_NODE_NAME = "devtron-buildx-node-" DOCKERD_OUTPUT_FILE_PATH = "/usr/local/bin/nohup.out" + MULTI_TAG_ENV = "docker_env_multi_tags" ) type DockerHelper interface { StartDockerDaemon(commonWorkflowRequest *CommonWorkflowRequest) DockerLogin(ciContext cicxt.CiContext, dockerCredentials *DockerCredentials) error - BuildArtifact(ciRequest *CommonWorkflowRequest) (string, error) + BuildArtifact(ciRequest *CommonWorkflowRequest, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) (string, error) StopDocker(ciContext cicxt.CiContext) error PushArtifact(ciContext cicxt.CiContext, dest string) error ExtractDigestForBuildx(dest string, ciRequest *CommonWorkflowRequest) (string, error) @@ -275,7 +276,8 @@ func (impl *DockerHelperImpl) DockerLogin(ciContext cicxt.CiContext, dockerCrede return util.ExecuteWithStageInfoLog(util.DOCKER_LOGIN_STAGE, performDockerLogin) } -func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest) (string, error) { +func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) (string, error) { + ciContext := cicxt.BuildCiContext(context.Background(), ciRequest.EnableSecretMasking) err := impl.DockerLogin(ciContext, &DockerCredentials{ DockerUsername: ciRequest.DockerUsername, @@ -323,7 +325,8 @@ func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest) (s } } - dockerBuildFlags := getDockerBuildFlagsMap(dockerBuildConfig) + + dockerBuildFlags := getDockerBuildFlagsMap(dockerBuildConfig, scriptEnvs, preCiStageOutVariable) for key, value := range dockerBuildFlags { dockerBuild = dockerBuild + " " + key + value } @@ -385,7 +388,25 @@ func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest) (s multiNodeK8sDriver := useBuildxK8sDriver && len(eligibleK8sDriverNodes) > 1 exportBuildxCacheAfterBuild := ciRequest.AsyncBuildxCacheExport && multiNodeK8sDriver - dockerBuild, buildxExportCacheFunc = impl.getBuildxBuildCommand(ciContext, exportBuildxCacheAfterBuild, cacheEnabled, ciRequest.BuildxCacheModeMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath) + + multiDockerTagsValue := GetMultiDockerTagsValue(scriptEnvs, preCiStageOutVariable) + fullUrlDockerTags := []string{} + if len(multiDockerTagsValue) > 0 { + dockerTags := strings.Split(multiDockerTagsValue, `,`) + for _, tmpDockerTag := range dockerTags { + tmpDockerTag = strings.TrimSpace(tmpDockerTag) + if !strings.Contains(tmpDockerTag, ":") { + fullImageUrl, err := BuildDockerImagePathForCustomTag(ciRequest, tmpDockerTag) + if err != nil { + log.Println("Error in building docker image multiple tags", "fullImageUrl", fullImageUrl, "err", err) + return "", err + } + tmpDockerTag = fullImageUrl + } + fullUrlDockerTags = append(fullUrlDockerTags, tmpDockerTag) + } + } + dockerBuild, buildxExportCacheFunc = impl.getBuildxBuildCommand(ciContext, exportBuildxCacheAfterBuild, cacheEnabled, ciRequest.BuildxCacheModeMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath, fullUrlDockerTags) } else { dockerBuild = fmt.Sprintf("%s -f %s --network host -t %s %s", dockerBuild, dockerfilePath, ciRequest.DockerRepository, dockerBuildConfig.BuildContext) } @@ -426,7 +447,7 @@ func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest) (s } if !useBuildx { - err = impl.tagDockerBuild(ciContext, ciRequest.DockerRepository, dest) + err = impl.tagDockerBuild(ciContext, ciRequest, dest, scriptEnvs, preCiStageOutVariable) if err != nil { return "", err } @@ -476,25 +497,60 @@ func (impl *DockerHelperImpl) BuildArtifact(ciRequest *CommonWorkflowRequest) (s return dest, nil } -func getDockerBuildFlagsMap(dockerBuildConfig *DockerBuildConfig) map[string]string { +func getDockerBuildFlagsMap(dockerBuildConfig *DockerBuildConfig, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) map[string]string { dockerBuildFlags := make(map[string]string) dockerBuildArgsMap := dockerBuildConfig.Args for k, v := range dockerBuildArgsMap { flagKey := fmt.Sprintf("%s %s", BUILD_ARG_FLAG, k) - dockerBuildFlags[flagKey] = parseDockerFlagParam(v) + parsedDockerFlagValue := parseDockerFlagParam(v, scriptEnvs, preCiStageOutVariable) + if len(parsedDockerFlagValue) > 0 { + dockerBuildFlags[flagKey] = parsedDockerFlagValue + } } dockerBuildOptionsMap := dockerBuildConfig.DockerBuildOptions for k, v := range dockerBuildOptionsMap { flagKey := "--" + k - dockerBuildFlags[flagKey] = parseDockerFlagParam(v) + parsedDockerFlagValue := parseDockerFlagParam(v, scriptEnvs, preCiStageOutVariable) + if len(parsedDockerFlagValue) > 0 { + dockerBuildFlags[flagKey] = parsedDockerFlagValue + } } return dockerBuildFlags } -func parseDockerFlagParam(param string) string { +func parseDockerFlagParam(param string, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) string { value := param if strings.HasPrefix(param, DEVTRON_ENV_VAR_PREFIX) { - value = os.Getenv(strings.TrimPrefix(param, DEVTRON_ENV_VAR_PREFIX)) + key := strings.TrimPrefix(param, DEVTRON_ENV_VAR_PREFIX) + + if preCiStageOutVariable != nil { + for k, task := range preCiStageOutVariable { + if _, ok := preCiStageOutVariable[k]; ok { + for variable, details := range task { + if variable == key { + outputVariableEnv := details.Value + if len(outputVariableEnv) > 0 { + value = outputVariableEnv + } + } + + } + } + } + } + if len(value) == 0 && scriptEnvs != nil { + scriptEnvVal, ok := scriptEnvs[key] + if ok { + value = scriptEnvVal + } + } + + if len(value) == 0 { + value = os.Getenv(key) + } + if strings.HasPrefix(value, DEVTRON_ENV_VAR_PREFIX) { + return "" + } } return wrapSingleOrDoubleQuotedValue(value) @@ -578,7 +634,7 @@ func getSourceCaches(targetPlatforms, oldCachePathLocation string) string { return strings.Join(allCachePaths, " ") } -func (impl *DockerHelperImpl) getBuildxBuildCommandV2(ciContext cicxt.CiContext, cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string) (string, func() error) { +func (impl *DockerHelperImpl) getBuildxBuildCommandV2(ciContext cicxt.CiContext, cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string, additionalImageTags []string) (string, func() error) { dockerBuild = fmt.Sprintf("%s %s -f %s --network host --allow network.host --allow security.insecure", dockerBuild, dockerBuildConfig.BuildContext, dockerfilePath) exportCacheCmds := make(map[string]string) @@ -600,18 +656,26 @@ func (impl *DockerHelperImpl) getBuildxBuildCommandV2(ciContext cicxt.CiContext, } manifestLocation := util.LOCAL_BUILDX_LOCATION + "/manifest.json" - dockerBuild = fmt.Sprintf("%s -t %s --push --metadata-file %s", dockerBuild, dest, manifestLocation) + dockerBuild = fmt.Sprintf("%s %s --push --metadata-file %s", dockerBuild, GetTagArgumentFlagForBuildx(dest, additionalImageTags), manifestLocation) return dockerBuild, impl.getBuildxExportCacheFunc(ciContext, exportCacheCmds) } -func (impl *DockerHelperImpl) getBuildxBuildCommandV1(cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string) (string, func() error) { +func GetTagArgumentFlagForBuildx(dest string, additionalTags []string) string { + flagCmd := fmt.Sprintf("-t %s", dest) + for _, tag := range additionalTags { + flagCmd = fmt.Sprintf("%s -t %s", flagCmd, tag) + } + return flagCmd +} + +func (impl *DockerHelperImpl) getBuildxBuildCommandV1(cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string, additionalImageTags []string) (string, func() error) { cacheMode := CacheModeMax if useCacheMin { cacheMode = CacheModeMin } - dockerBuild = fmt.Sprintf("%s -f %s -t %s --push %s --network host --allow network.host --allow security.insecure", dockerBuild, dockerfilePath, dest, dockerBuildConfig.BuildContext) + dockerBuild = fmt.Sprintf("%s -f %s %s --push %s --network host --allow network.host --allow security.insecure", dockerBuild, dockerfilePath, GetTagArgumentFlagForBuildx(dest, additionalImageTags), dockerBuildConfig.BuildContext) if cacheEnabled { dockerBuild = fmt.Sprintf("%s --cache-to=type=local,dest=%s,mode=%s --cache-from=type=local,src=%s", dockerBuild, localCachePath, cacheMode, oldCacheBuildxPath) } @@ -629,11 +693,11 @@ func (impl *DockerHelperImpl) getBuildxBuildCommandV1(cacheEnabled bool, useCach return dockerBuild, nil } -func (impl *DockerHelperImpl) getBuildxBuildCommand(ciContext cicxt.CiContext, exportBuildxCacheAfterBuild bool, cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string) (string, func() error) { +func (impl *DockerHelperImpl) getBuildxBuildCommand(ciContext cicxt.CiContext, exportBuildxCacheAfterBuild bool, cacheEnabled bool, useCacheMin bool, dockerBuild, oldCacheBuildxPath, localCachePath, dest string, dockerBuildConfig *DockerBuildConfig, dockerfilePath string, additionalImageTags []string) (string, func() error) { if exportBuildxCacheAfterBuild { - return impl.getBuildxBuildCommandV2(ciContext, cacheEnabled, useCacheMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath) + return impl.getBuildxBuildCommandV2(ciContext, cacheEnabled, useCacheMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath, additionalImageTags) } - return impl.getBuildxBuildCommandV1(cacheEnabled, useCacheMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath) + return impl.getBuildxBuildCommandV1(cacheEnabled, useCacheMin, dockerBuild, oldCacheBuildxPath, localCachePath, dest, dockerBuildConfig, dockerfilePath, additionalImageTags) } func (impl *DockerHelperImpl) handleLanguageVersion(ciContext cicxt.CiContext, projectPath string, buildpackConfig *BuildPackConfig) { @@ -722,18 +786,70 @@ func (impl *DockerHelperImpl) executeCmd(ciContext cicxt.CiContext, dockerBuild return err } -func (impl *DockerHelperImpl) tagDockerBuild(ciContext cicxt.CiContext, dockerRepository string, dest string) error { - dockerTag := "docker tag " + dockerRepository + ":latest" + " " + dest - log.Println(" -----> " + dockerTag) +func (impl *DockerHelperImpl) tagDockerBuild(ciContext cicxt.CiContext, ciRequest *CommonWorkflowRequest, dest string, scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) error { + dockerTag := "docker tag " + ciRequest.DockerRepository + ":latest" + " " + dest dockerTagCMD := impl.GetCommandToExecute(dockerTag) err := impl.cmdExecutor.RunCommand(ciContext, dockerTagCMD) if err != nil { log.Println(err) return err } + + log.Println(" -----> " + dockerTag) + multiDockerTagsValue := GetMultiDockerTagsValue(scriptEnvs, preCiStageOutVariable) + if len(multiDockerTagsValue) > 0 { + tags := strings.Split(multiDockerTagsValue, `,`) + for _, tmpDockerTag := range tags { + tmpDockerTag = strings.TrimSpace(tmpDockerTag) + if !strings.Contains(tmpDockerTag, ":") { + fullImageUrl, err := BuildDockerImagePathForCustomTag(ciRequest, tmpDockerTag) + if err != nil { + log.Println("Error in building docker image", "err", err) + return err + } + tmpDockerTag = fullImageUrl + } + log.Println(" -----> custom-tag " + tmpDockerTag) + tmpDockerTagCommand := "docker tag " + ciRequest.DockerRepository + ":latest" + " " + tmpDockerTag + tmpDockerTagCMD := impl.GetCommandToExecute(tmpDockerTagCommand) + err := impl.cmdExecutor.RunCommand(ciContext, tmpDockerTagCMD) + if err != nil { + log.Println(err) + return err + } + } + + } + return nil } +func GetMultiDockerTagsValue(scriptEnvs map[string]string, preCiStageOutVariable map[int]map[string]*VariableObject) string { + multiDockerTagsValue := "" + if preCiStageOutVariable != nil { + for k, task := range preCiStageOutVariable { + if _, ok := preCiStageOutVariable[k]; ok { + for variable, details := range task { + if variable == MULTI_TAG_ENV { + outputVariableEnv := details.Value + if len(outputVariableEnv) > 0 { + multiDockerTagsValue = outputVariableEnv + } + } + + } + } + } + } + if len(multiDockerTagsValue) == 0 && scriptEnvs != nil { + scriptEnvVal, ok := scriptEnvs[MULTI_TAG_ENV] + if ok { + multiDockerTagsValue = scriptEnvVal + } + } + return multiDockerTagsValue +} + func (impl *DockerHelperImpl) setupCacheForBuildx(ciContext cicxt.CiContext, localCachePath string, oldCacheBuildxPath string) error { err := impl.checkAndCreateDirectory(ciContext, localCachePath) if err != nil { @@ -818,6 +934,17 @@ func BuildDockerImagePath(ciRequest *CommonWorkflowRequest) (string, error) { } +func BuildDockerImagePathForCustomTag(ciRequest *CommonWorkflowRequest, dockerTag string) (string, error) { + return utils.BuildDockerImagePath(bean.DockerRegistryInfo{ + DockerImageTag: dockerTag, + DockerRegistryId: ciRequest.DockerRegistryId, + DockerRegistryType: ciRequest.DockerRegistryType, + DockerRegistryURL: ciRequest.IntermediateDockerRegistryUrl, + DockerRepository: ciRequest.DockerRepository, + }) + +} + func (impl *DockerHelperImpl) PushArtifact(ciContext cicxt.CiContext, dest string) error { //awsLogin := "$(aws ecr get-login --no-include-email --region " + ciRequest.AwsRegion + ")" dockerPush := "docker push " + dest diff --git a/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go b/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go index 38b27f4d7..40fd3cfdc 100644 --- a/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go +++ b/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go @@ -290,7 +290,7 @@ func (impl *GitCliManagerImpl) Clone(gitContext GitContext, prj CiProjectDetails logrus.Error("could not clone repo ", "msgMsg: ", msgMsg, " err: ", cErr) return "", msgMsg, cErr } - projectName := util.GetProjectName(prj.GitRepository) + projectName := util.GetGitRepoNameFromGitRepoUrl(prj.GitRepository) projRootDir := filepath.Join(checkoutPath, projectName) _, msgMsg, cErr = impl.moveFilesFromSourceToDestination(projRootDir, checkoutPath) diff --git a/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/ci-runner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/ci-runner/vendor/modules.txt b/ci-runner/vendor/modules.txt index eaaba4513..82d144d29 100644 --- a/ci-runner/vendor/modules.txt +++ b/ci-runner/vendor/modules.txt @@ -118,7 +118,7 @@ github.com/cespare/xxhash/v2 # github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc ## explicit github.com/davecgh/go-spew/spew -# github.com/devtron-labs/common-lib v0.19.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.19.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/constants @@ -841,4 +841,4 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/common-lib/git-manager/GitCliManager.go b/common-lib/git-manager/GitCliManager.go index 38b27f4d7..40fd3cfdc 100644 --- a/common-lib/git-manager/GitCliManager.go +++ b/common-lib/git-manager/GitCliManager.go @@ -290,7 +290,7 @@ func (impl *GitCliManagerImpl) Clone(gitContext GitContext, prj CiProjectDetails logrus.Error("could not clone repo ", "msgMsg: ", msgMsg, " err: ", cErr) return "", msgMsg, cErr } - projectName := util.GetProjectName(prj.GitRepository) + projectName := util.GetGitRepoNameFromGitRepoUrl(prj.GitRepository) projRootDir := filepath.Join(checkoutPath, projectName) _, msgMsg, cErr = impl.moveFilesFromSourceToDestination(projRootDir, checkoutPath) diff --git a/common-lib/git-manager/util/Util.go b/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/common-lib/git-manager/util/Util.go +++ b/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/git-sensor/go.mod b/git-sensor/go.mod index ac5a443be..f407761ea 100644 --- a/git-sensor/go.mod +++ b/git-sensor/go.mod @@ -4,7 +4,7 @@ go 1.21 toolchain go1.22.4 -replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca require ( github.com/caarlos0/env v3.5.0+incompatible @@ -88,3 +88,5 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect mellium.im/sasl v0.3.1 // indirect ) + +replace github.com/devtron-labs/git-sensor => github.com/devtron-labs/devtron-services/git-sensor v0.0.0-20241103151131-e0ee0068cae4 diff --git a/git-sensor/go.sum b/git-sensor/go.sum index 8f673474b..2a6a5ceb8 100644 --- a/git-sensor/go.sum +++ b/git-sensor/go.sum @@ -29,8 +29,8 @@ github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/devtron-labs/protos v0.0.3-0.20240809072909-83171af34169 h1:9OMZv0/fOWKK9s9BLTofFL/BO79TdyvC1Sc1HsC4esQ= github.com/devtron-labs/protos v0.0.3-0.20240809072909-83171af34169/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWTcc7GAneOY= diff --git a/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go b/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go index 38b27f4d7..40fd3cfdc 100644 --- a/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go +++ b/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go @@ -290,7 +290,7 @@ func (impl *GitCliManagerImpl) Clone(gitContext GitContext, prj CiProjectDetails logrus.Error("could not clone repo ", "msgMsg: ", msgMsg, " err: ", cErr) return "", msgMsg, cErr } - projectName := util.GetProjectName(prj.GitRepository) + projectName := util.GetGitRepoNameFromGitRepoUrl(prj.GitRepository) projRootDir := filepath.Join(checkoutPath, projectName) _, msgMsg, cErr = impl.moveFilesFromSourceToDestination(projRootDir, checkoutPath) diff --git a/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/git-sensor/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/git-sensor/vendor/modules.txt b/git-sensor/vendor/modules.txt index 59f7fe540..587132d58 100644 --- a/git-sensor/vendor/modules.txt +++ b/git-sensor/vendor/modules.txt @@ -62,7 +62,7 @@ github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew -# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/constants github.com/devtron-labs/common-lib/git-manager @@ -487,4 +487,4 @@ gopkg.in/yaml.v3 # mellium.im/sasl v0.3.1 ## explicit; go 1.18 mellium.im/sasl -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/image-scanner/go.mod b/image-scanner/go.mod index 73167cfdf..025093580 100644 --- a/image-scanner/go.mod +++ b/image-scanner/go.mod @@ -74,4 +74,4 @@ require ( mellium.im/sasl v0.3.1 // indirect ) -replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/image-scanner/go.sum b/image-scanner/go.sum index f4a732f94..c38096761 100644 --- a/image-scanner/go.sum +++ b/image-scanner/go.sum @@ -280,8 +280,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= diff --git a/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go b/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go index 38b27f4d7..40fd3cfdc 100644 --- a/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go +++ b/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/GitCliManager.go @@ -290,7 +290,7 @@ func (impl *GitCliManagerImpl) Clone(gitContext GitContext, prj CiProjectDetails logrus.Error("could not clone repo ", "msgMsg: ", msgMsg, " err: ", cErr) return "", msgMsg, cErr } - projectName := util.GetProjectName(prj.GitRepository) + projectName := util.GetGitRepoNameFromGitRepoUrl(prj.GitRepository) projRootDir := filepath.Join(checkoutPath, projectName) _, msgMsg, cErr = impl.moveFilesFromSourceToDestination(projRootDir, checkoutPath) diff --git a/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/image-scanner/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/image-scanner/vendor/modules.txt b/image-scanner/vendor/modules.txt index 897602363..d5c5ebdcf 100644 --- a/image-scanner/vendor/modules.txt +++ b/image-scanner/vendor/modules.txt @@ -72,7 +72,7 @@ github.com/cespare/xxhash/v2 github.com/coreos/clair/api/v3/clairpb github.com/coreos/clair/database github.com/coreos/clair/ext/versionfmt -# github.com/devtron-labs/common-lib v0.19.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.19.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/constants github.com/devtron-labs/common-lib/git-manager @@ -438,4 +438,4 @@ google.golang.org/protobuf/types/known/wrapperspb # mellium.im/sasl v0.3.1 ## explicit; go 1.18 mellium.im/sasl -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/kubelink/go.mod b/kubelink/go.mod index edacdcc04..4459ee955 100644 --- a/kubelink/go.mod +++ b/kubelink/go.mod @@ -177,7 +177,7 @@ require ( ) replace ( - github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da + github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v1.18.0 // https://github.com/kubernetes/kubernetes/issues/79384#issuecomment-505627280 k8s.io/api => k8s.io/api v0.29.0 diff --git a/kubelink/go.sum b/kubelink/go.sum index 42e8bb993..282962155 100644 --- a/kubelink/go.sum +++ b/kubelink/go.sum @@ -79,8 +79,8 @@ github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/distribution/distribution/v3 v3.0.0-beta.1 h1:X+ELTxPuZ1Xe5MsD3kp2wfGUhc8I+MPfRis8dZ818Ic= diff --git a/kubelink/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/kubelink/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/kubelink/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/kubelink/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/kubelink/vendor/modules.txt b/kubelink/vendor/modules.txt index 41da296a9..9a39b443e 100644 --- a/kubelink/vendor/modules.txt +++ b/kubelink/vendor/modules.txt @@ -127,7 +127,7 @@ github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew -# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/async github.com/devtron-labs/common-lib/constants @@ -1353,7 +1353,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca # go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v1.18.0 # k8s.io/api => k8s.io/api v0.29.0 # k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.29.0 diff --git a/kubewatch/go.mod b/kubewatch/go.mod index 73363771d..1212e3c57 100644 --- a/kubewatch/go.mod +++ b/kubewatch/go.mod @@ -245,4 +245,4 @@ replace ( k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.29.7 ) -replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/kubewatch/go.sum b/kubewatch/go.sum index 896170d8c..23633273a 100644 --- a/kubewatch/go.sum +++ b/kubewatch/go.sum @@ -719,8 +719,8 @@ github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= diff --git a/kubewatch/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/kubewatch/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/kubewatch/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/kubewatch/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/kubewatch/vendor/modules.txt b/kubewatch/vendor/modules.txt index 88294dabe..413d65e91 100644 --- a/kubewatch/vendor/modules.txt +++ b/kubewatch/vendor/modules.txt @@ -211,7 +211,7 @@ github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew -# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/constants github.com/devtron-labs/common-lib/git-manager/util @@ -1753,4 +1753,4 @@ upper.io/db.v3/postgresql # k8s.io/mount-utils => k8s.io/mount-utils v0.29.7 # k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.29.7 # k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.29.7 -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/lens/go.mod b/lens/go.mod index 4d463eda1..a1a548227 100644 --- a/lens/go.mod +++ b/lens/go.mod @@ -59,4 +59,4 @@ require ( github.com/onsi/gomega v1.18.1 // indirect ) -replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca diff --git a/lens/go.sum b/lens/go.sum index 711793231..59091c176 100644 --- a/lens/go.sum +++ b/lens/go.sum @@ -22,8 +22,8 @@ github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWH github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da h1:wbqNhTahQp+c/htUfGxLtuzA0dddOcvdPtlSViKBJ70= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca h1:WXh3S0n1Bu26lWEB05CvH9Lc3NzUlqa9gbWeVCVGkhE= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca/go.mod h1:NJSMdv+zTUK3p7rML12RZSeAUKHeLaoY3sR/oK0xhwo= github.com/devtron-labs/protos v0.0.3-0.20240130061723-7b2e12ab0abb h1:CkfQQgZc950/hTPqtQSiHV2RmZgkBLGCzwR02FZYjAU= github.com/devtron-labs/protos v0.0.3-0.20240130061723-7b2e12ab0abb/go.mod h1:pjLjgoa1GzbkOkvbMyP4SAKsaiK7eG6GoQCNauG03JA= github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWTcc7GAneOY= diff --git a/lens/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go b/lens/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go index c438c19a8..0c3855d33 100644 --- a/lens/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go +++ b/lens/vendor/github.com/devtron-labs/common-lib/git-manager/util/Util.go @@ -139,13 +139,9 @@ func ParseUrl(rawURL string) (parsedURL *url.URL, err error) { return parsedURL, err } -// GetProjectName this function has been designed for returning project name of git-lab and git-hub providers only -// do not remove this function -func GetProjectName(url string) string { - //if url = https://github.com/devtron-labs/git-sensor.git then it will return git-sensor - projName := strings.Split(url, ".")[1] - projectName := projName[strings.LastIndex(projName, "/")+1:] - return projectName +func GetGitRepoNameFromGitRepoUrl(gitRepoUrl string) string { + gitRepoUrl = gitRepoUrl[strings.LastIndex(gitRepoUrl, "/")+1:] + return strings.TrimSuffix(gitRepoUrl, ".git") } const DEVTRON = "DEVTRON" diff --git a/lens/vendor/modules.txt b/lens/vendor/modules.txt index 203052305..0b7d298f2 100644 --- a/lens/vendor/modules.txt +++ b/lens/vendor/modules.txt @@ -7,7 +7,7 @@ github.com/caarlos0/env # github.com/cespare/xxhash/v2 v2.2.0 ## explicit; go 1.11 github.com/cespare/xxhash/v2 -# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca ## explicit; go 1.21 github.com/devtron-labs/common-lib/constants github.com/devtron-labs/common-lib/git-manager/util @@ -282,4 +282,4 @@ google.golang.org/protobuf/types/known/timestamppb # mellium.im/sasl v0.3.1 ## explicit; go 1.18 mellium.im/sasl -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241121092824-79be1ba0e3da +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241127070215-76c4a4abfeca