diff --git a/.gitignore b/.gitignore
index f461e5296b..a0b6b2fff2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/cmd/external-app/devtron-ea
devtron
/vendor/github.com/argoproj/argo-cd/assets
+/process/stage-0
diff --git a/CHANGELOG/release-notes-v0.7.0.md b/CHANGELOG/release-notes-v0.7.0.md
new file mode 100644
index 0000000000..7181cc9e86
--- /dev/null
+++ b/CHANGELOG/release-notes-v0.7.0.md
@@ -0,0 +1,88 @@
+## v0.7.0
+
+## Bugs
+- fix: extra labels propagation made env driven (#5274)
+- fix: App clone config map fix (#5268)
+- fix: latest version in default cluster and on UI (#5259)
+- fix: update CVE's severity and store multiple same CVE's in multiple packages (#5168)
+- fix: fixing force push for gitops (#5152)
+- fix: extra labels propagation based on k8s label regex matching (#5216)
+- fix: invalid runner status (#5189)
+- fix: revert changes from main (#5206)
+- fix: apps and jobs permission (#5110)
+- fix: added Copyright (#5172)
+- fix:removed unused env var (#5174)
+- fix: Handling all cases for 5xx (#5100)
+- fix: trivy scan step command fix (#5162)
+- fix: added extra args in trivy cmds (#5146)
+- fix: proxyRouter empty data err panic handling (#5147)
+- fix: handling side-effects for displaying external helm apps with same name across diff namespaces and clusters (#4951)
+- fix: fatal log removed (#5043)
+- fix: added a check for restricting managers to assign superadmin through permission groups (#5025)
+- fix: SHOW_DOCKER_BUILD_ARGS variable not working as expected (#5117)
+- fix: dependabot version upgrade (#5089)
+- fix: containers are missing from app-details page in argocd app (#4973)
+- fix:resolved PR review comments also remove check for virtual cluster (#5095)
+- fix:handled namespace case if deleted by kubectl (#5081)
+- fix: oci chart were getting deployed through gitops (#5088)
+- fix: argocd config update fix (#5074)
+- fix: handle 5xx in fetch resource tree api and cd-trigger (#5050)
+- fix: gitops update updated (#5055)
+- fix: App create api validations (#5019)
+- fix: git material saved in transaction (#5040)
+- fix: panic while pulling images (#5036)
+- fix: terminal stuck in connecting state (#4989)
+- fix: handle for wrong format of k8s version in semvercompare func in cronjob template charts (#5016)
+- fix: Dockerfile ubuntu version (#5022)
+- fix: application status changes to HIBERNATING, when hibernation fails due to some reason (#5005)
+- fix: deleted api token can be reused if created again with same name (#4978)
+- fix: Kubelink Requests getting Failed for gRPC method GetAppDetails (#5012)
+- fix: terminate sync if in progress (#4946)
+- fix: grpc error handling for TemplateChart req (#4980)
+- fix: removed redundant import (#5004)
+- fix: image promotion sql script (#4996)
+- fix: image-approval-migartion fix (#4994)
+- fix: ci-cd count per day in telemetry data (#4931)
+## Enhancements
+- feat: notifier behind nats (#5185)
+- feat: cd pipeline deployment history refactoring (#5200)
+- feat: wire nil test in pre ci pipeline (#4858)
+- feat: added recovery counter metrics (#5124)
+- feat: auto remediation (#5137)
+- feat: support for ca cert in trivy (#5064)
+- feat: validation for pipeline Type (#4670)
+- feat: propagate labels such as envName and projectName (#5063)
+- feat: Plugin to trigger Devtron Job (#5053)
+- feat: CD Trigger Plugin (#4810)
+- feat: Introduction to feasibility in Deployment (#4862)
+## Documentation
+- doc: Created Resource Watcher Doc (#5193)
+- doc: Modified Portforward Section to Kubectl Section (#5236)
+- doc: Added enhancements to security doc (#5203)
+- docs: update readme to include multi arch flag (#4998)
+- docs: config.md updatation for new flag (#5061)
+- doc: Fixes in Documentation for May Month (#5150)
+- doc: Created Resource Watcher Doc (#5193)
+- doc: Modified Portforward Section to Kubectl Section (#5236)
+- doc: Added enhancements to security doc (#5203)
+- docs: update readme to include multi arch flag (#4998)
+- docs: config.md updatation for new flag (#5061)
+- doc: Added kubectl port-fwd section in RB (#5139)
+- doc: Added Bitbucket Data Center in GitOps doc (#5075)
+- doc: Image promotion policy (#4762)
+- doc: Revamped Resource Browser Doc (#5035)
+- doc: Added Bulk Restart in Application Groups doc (#5080)
+- doc: Added new doc in the index (#5029)
+- doc: Changes made in the doc according to the newer version (#5024)
+- doc: Added Linked CI with Child Info + Runtime Build Parameters (#4991)
+## Others
+- chore: updated vendor (#5166)
+- chore: gitops validation in api (#5082)
+- chore: release v2 migration (#5126)
+- chore: migration update for remote connection config (#5113)
+- chore: added sql for release and release channels (#4898)
+- chore: resource scan migration (#4977)
+- chore: image promotion migration (#4992)
+- misc: uniform GitHub action (#5069)
+
+
diff --git a/Wire.go b/Wire.go
index 867419b50c..a4d9c07562 100644
--- a/Wire.go
+++ b/Wire.go
@@ -750,6 +750,7 @@ func InitializeApp() (*App, error) {
app.NewAppCrudOperationServiceImpl,
wire.Bind(new(app.AppCrudOperationService), new(*app.AppCrudOperationServiceImpl)),
+ app.GetCrudOperationServiceConfig,
pipelineConfig.NewAppLabelRepositoryImpl,
wire.Bind(new(pipelineConfig.AppLabelRepository), new(*pipelineConfig.AppLabelRepositoryImpl)),
diff --git a/api/auth/user/UserAuthHandler.go b/api/auth/user/UserAuthHandler.go
index 131f3eba44..4187adf7be 100644
--- a/api/auth/user/UserAuthHandler.go
+++ b/api/auth/user/UserAuthHandler.go
@@ -237,7 +237,7 @@ func (handler UserAuthHandlerImpl) AddDefaultPolicyAndRoles(w http.ResponseWrite
}
func (handler UserAuthHandlerImpl) AuthVerification(w http.ResponseWriter, r *http.Request) {
- verified, err := handler.userAuthService.AuthVerification(r)
+ verified, _, err := handler.userAuthService.AuthVerification(r)
if err != nil {
handler.logger.Errorw("service err, AuthVerification", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -253,7 +253,7 @@ func (handler UserAuthHandlerImpl) AuthVerificationV2(w http.ResponseWriter, r *
isSuperAdmin = true
}
response := make(map[string]interface{})
- verified, err := handler.userAuthService.AuthVerification(r)
+ verified, emailId, err := handler.userAuthService.AuthVerification(r)
if err != nil {
handler.logger.Errorw("service err, AuthVerification", "err", err)
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -261,5 +261,6 @@ func (handler UserAuthHandlerImpl) AuthVerificationV2(w http.ResponseWriter, r *
}
response["isSuperAdmin"] = isSuperAdmin
response["isVerified"] = verified
+ response["emailId"] = emailId
common.WriteJsonResp(w, nil, response, http.StatusOK)
}
diff --git a/charts/devtron/Chart.yaml b/charts/devtron/Chart.yaml
index 434e865379..f90f672e74 100644
--- a/charts/devtron/Chart.yaml
+++ b/charts/devtron/Chart.yaml
@@ -1,6 +1,6 @@
apiVersion: v2
name: devtron-operator
-appVersion: 0.6.29
+appVersion: 0.7.0
description: Chart to configure and install Devtron. Devtron is a Kubernetes Orchestration system.
keywords:
- Devtron
@@ -11,7 +11,7 @@ keywords:
- argocd
- Hyperion
engine: gotpl
-version: 0.22.71
+version: 0.22.72
sources:
- https://github.com/devtron-labs/charts
dependencies:
diff --git a/charts/devtron/devtron-bom.yaml b/charts/devtron/devtron-bom.yaml
index 913ad4f3db..da4461d2f3 100644
--- a/charts/devtron/devtron-bom.yaml
+++ b/charts/devtron/devtron-bom.yaml
@@ -8,12 +8,13 @@ global:
runAsUser: 1000
runAsNonRoot: true
containerRegistry: "quay.io/devtron"
-
+
installer:
- release: "v0.6.29"
+ release: "v0.7.0"
registry: ""
image: "inception"
tag: "473deaa4-185-21582"
+
components:
dashboard:
config:
@@ -30,31 +31,30 @@ components:
SERVICE_WORKER_TIMEOUT: "1"
API_BATCH_SIZE: "30"
registry: ""
- image: "dashboard:1c86e84e-325-22108"
+ image: "dashboard:87aaf7ac-690-23135"
imagePullPolicy: IfNotPresent
-
+
devtron:
registry: ""
- image: "hyperion:e7f34f5a-280-22107"
- cicdImage: "devtron:e7f34f5a-434-22106"
+ image: "hyperion:3aa7e420-280-23147"
+ cicdImage: "devtron:3aa7e420-434-23146"
imagePullPolicy: IfNotPresent
customOverrides: {}
-
+
ciRunner:
registry: ""
- image: "ci-runner:f5614d79-541-22176"
-
-
+ image: "ci-runner:6e721248-138-23081"
+
argocdDexServer:
registry: ""
image: "dex:v2.30.2"
imagePullPolicy: IfNotPresent
initContainer:
authenticator: "authenticator:e414faff-393-13273"
-
+
kubelink:
registry: ""
- image: "kubelink:2610ac5a-564-22109"
+ image: "kubelink:a810dbae-564-23055"
imagePullPolicy: IfNotPresent
configs:
ENABLE_HELM_RELEASE_CACHE: "true"
@@ -69,10 +69,10 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-
+
kubewatch:
registry: ""
- image: "kubewatch:50d4d32d-419-22116"
+ image: "kubewatch:f8ac0fe6-419-23054"
imagePullPolicy: IfNotPresent
configs:
devtroncd_NAMESPACE: "devtron-ci"
@@ -80,7 +80,7 @@ components:
ACD_NAMESPACE: "devtroncd"
ACD_INFORMER: "true"
NATS_STREAM_MAX_AGE: "10800"
-
+
postgres:
registry: ""
image: "postgres:11.9.0-debian-10-r26"
@@ -90,6 +90,7 @@ components:
metrics:
image: postgres_exporter:v0.4.7
armImage: postgres_exporter:v0.10.1
+
gitsensor:
registry: ""
image: "git-sensor:8545feb5-200-22005"
@@ -107,10 +108,10 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-# Values for lens
+ # Values for lens
lens:
registry: ""
- image: "lens:70577aaa-333-21179"
+ image: "lens:3d3e8f08-333-23057"
imagePullPolicy: IfNotPresent
configs:
GIT_SENSOR_PROTOCOL: GRPC
@@ -123,7 +124,7 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-# Change below values for nats
+ # Change below values for nats
nats:
registry: ""
image: nats:2.9.3-alpine
@@ -139,6 +140,7 @@ components:
enabled: false
persistence:
storage: 5Gi
+
migrator:
registry: ""
image: "migrator:v4.16.2"
@@ -151,13 +153,11 @@ components:
DB_NAME: "casbin"
gitsensor:
DB_NAME: "git_sensor"
- lens:
+ lens:
DB_NAME: "lens"
-
chartSync:
registry: ""
- image: chart-sync:d0dcc590-373-21074
-
+ image: chart-sync:b67ab589-150-23082
# values for argocd integration
argo-cd:
global:
@@ -175,9 +175,10 @@ workflowController:
executorImage: "argoexec:v3.4.3"
IMDSv1Image: "workflow-controller:v3.0.7"
IMDSv1ExecutorImage: "argoexec:v3.0.7"
+
security:
imageScanner:
- image: "image-scanner:c0416bc2-334-22111"
+ image: "image-scanner:3ab2ba46-141-23064"
clair:
image:
repository: clair
@@ -185,11 +186,11 @@ security:
# Values for notifier integration
notifier:
image: "notifier:924a17f6-372-22110"
+
minio:
image: "minio:RELEASE.2021-02-14T04-01-33Z"
mbImage: "minio-mc:RELEASE.2021-02-14T04-28-06Z"
gatewayImage: "minio:RELEASE.2020-12-03T05-49-24Z"
-
# Values for grafana integration
monitoring:
grafana:
diff --git a/charts/devtron/templates/_helpers.tpl b/charts/devtron/templates/_helpers.tpl
index 71b3cec5ee..09fc0d92c0 100644
--- a/charts/devtron/templates/_helpers.tpl
+++ b/charts/devtron/templates/_helpers.tpl
@@ -19,7 +19,6 @@ it randomly.
{{- end -}}
{{- end }}
-
{{/*
Return full image
{{ include "common.image" ( dict "component" .Values.path.to.the.component "global" .Values.global .extraImage .extraImageTag .extraImageDigest ) }}
@@ -50,4 +49,4 @@ Return full image
{{- printf "%s" $imageName -}}
{{- end }}
{{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
diff --git a/charts/devtron/templates/argocd-secret.yaml b/charts/devtron/templates/argocd-secret.yaml
index 70890bac98..b8d7775b3f 100644
--- a/charts/devtron/templates/argocd-secret.yaml
+++ b/charts/devtron/templates/argocd-secret.yaml
@@ -56,3 +56,178 @@ data:
- name: kedacore
type: helm
url: https://kedacore.github.io/charts
+ resource.customizations: >
+ kubernetes-client.io/ExternalSecret:
+ health.lua: |
+ hs = {}
+ if obj.status ~= nil then
+ if obj.status.status ~= nil then
+ hs.status = "Degraded"
+ hs.message = obj.status.status
+ else
+ hs.status = "Healthy"
+ end
+ else
+ hs.status = "Healthy"
+ end
+ return hs
+ argoproj.io/Rollout:
+ health.lua: |
+ function checkReplicasStatus(obj)
+ hs = {}
+ replicasCount = getNumberValueOrDefault(obj.spec.replicas)
+ replicasStatus = getNumberValueOrDefault(obj.status.replicas)
+ updatedReplicas = getNumberValueOrDefault(obj.status.updatedReplicas)
+ availableReplicas = getNumberValueOrDefault(obj.status.availableReplicas)
+
+ if updatedReplicas < replicasCount then
+ hs.status = "Progressing"
+ hs.message = "Waiting for roll out to finish: More replicas need to be updated"
+ return hs
+ end
+ -- Since the scale down delay can be very high, BlueGreen does not wait for all the old replicas to scale
+ -- down before marking itself healthy. As a result, only evaluate this condition if the strategy is canary.
+ if obj.spec.strategy.canary ~= nil and replicasStatus > updatedReplicas then
+ hs.status = "Progressing"
+ hs.message = "Waiting for roll out to finish: old replicas are pending termination"
+ return hs
+ end
+ if availableReplicas < updatedReplicas then
+ hs.status = "Progressing"
+ hs.message = "Waiting for roll out to finish: updated replicas are still becoming available"
+ return hs
+ end
+ return nil
+ end
+
+ function getNumberValueOrDefault(field)
+ if field ~= nil then
+ return field
+ end
+ return 0
+ end
+
+ function checkPaused(obj)
+ hs = {}
+ local paused = false
+ if obj.status.verifyingPreview ~= nil then
+ paused = obj.status.verifyingPreview
+ elseif obj.spec.paused ~= nil then
+ paused = obj.spec.paused
+ end
+
+ if paused then
+ hs.status = "Suspended"
+ hs.message = "Rollout is paused"
+ return hs
+ end
+ return nil
+ end
+
+ hs = {}
+ if obj.status ~= nil then
+ if obj.status.conditions ~= nil then
+ for _, condition in ipairs(obj.status.conditions) do
+ if condition.type == "InvalidSpec" then
+ hs.status = "Degraded"
+ hs.message = condition.message
+ return hs
+ end
+ if condition.type == "Progressing" and condition.reason == "RolloutAborted" then
+ hs.status = "Degraded"
+ hs.message = condition.message
+ return hs
+ end
+ if condition.type == "Progressing" and condition.reason == "ProgressDeadlineExceeded" then
+ hs.status = "Degraded"
+ hs.message = condition.message
+ return hs
+ end
+ end
+ end
+ if obj.status.currentPodHash ~= nil then
+ if obj.spec.strategy.blueGreen ~= nil then
+ isPaused = checkPaused(obj)
+ if isPaused ~= nil then
+ return isPaused
+ end
+ replicasHS = checkReplicasStatus(obj)
+ if replicasHS ~= nil then
+ return replicasHS
+ end
+ if obj.status.blueGreen ~= nil and obj.status.blueGreen.activeSelector ~= nil and obj.status.blueGreen.activeSelector == obj.status.currentPodHash then
+ hs.status = "Healthy"
+ hs.message = "The active Service is serving traffic to the current pod spec"
+ return hs
+ end
+ hs.status = "Progressing"
+ hs.message = "The current pod spec is not receiving traffic from the active service"
+ return hs
+ end
+ if obj.spec.strategy.recreate ~= nil then
+ isPaused = checkPaused(obj)
+ if isPaused ~= nil then
+ return isPaused
+ end
+ replicasHS = checkReplicasStatus(obj)
+ if replicasHS ~= nil then
+ return replicasHS
+ end
+ if obj.status.recreate ~= nil and obj.status.recreate.currentRS ~= nil and obj.status.recreate.currentRS == obj.status.currentPodHash then
+ hs.status = "Healthy"
+ hs.message = "Rollout is successful"
+ return hs
+ end
+ hs.status = "Progressing"
+ hs.message = "Rollout is in progress"
+ return hs
+ end
+ if obj.spec.strategy.canary ~= nil then
+ currentRSIsStable = obj.status.canary.stableRS == obj.status.currentPodHash
+ if obj.spec.strategy.canary.steps ~= nil and table.getn(obj.spec.strategy.canary.steps) > 0 then
+ stepCount = table.getn(obj.spec.strategy.canary.steps)
+ if obj.status.currentStepIndex ~= nil then
+ currentStepIndex = obj.status.currentStepIndex
+ isPaused = checkPaused(obj)
+ if isPaused ~= nil then
+ return isPaused
+ end
+
+ if paused then
+ hs.status = "Suspended"
+ hs.message = "Rollout is paused"
+ return hs
+ end
+ if currentRSIsStable and stepCount == currentStepIndex then
+ replicasHS = checkReplicasStatus(obj)
+ if replicasHS ~= nil then
+ return replicasHS
+ end
+ hs.status = "Healthy"
+ hs.message = "The rollout has completed all steps"
+ return hs
+ end
+ end
+ hs.status = "Progressing"
+ hs.message = "Waiting for rollout to finish steps"
+ return hs
+ end
+
+ -- The detecting the health of the Canary deployment when there are no steps
+ replicasHS = checkReplicasStatus(obj)
+ if replicasHS ~= nil then
+ return replicasHS
+ end
+ if currentRSIsStable then
+ hs.status = "Healthy"
+ hs.message = "The rollout has completed canary deployment"
+ return hs
+ end
+ hs.status = "Progressing"
+ hs.message = "Waiting for rollout to finish canary deployment"
+ end
+ end
+ end
+ hs.status = "Progressing"
+ hs.message = "Waiting for rollout to finish: status has not been reconciled."
+ return hs
\ No newline at end of file
diff --git a/charts/devtron/templates/configmap-secret.yaml b/charts/devtron/templates/configmap-secret.yaml
index addaf20f61..b856f736dc 100644
--- a/charts/devtron/templates/configmap-secret.yaml
+++ b/charts/devtron/templates/configmap-secret.yaml
@@ -1,6 +1,13 @@
{{- $grafanaPwd := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-grafana-cred-secret" "Key" "admin-password") }}
{{- $minioAccessKey := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-minio" "Key" "accesskey") }}
{{- $minioSecretKey := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-minio" "Key" "secretkey") }}
+{{- $EXTERNAL_CI_API_SECRET := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "EXTERNAL_CI_API_SECRET") }}
+{{- $ORCH_TOKEN := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "ORCH_TOKEN") }}
+{{- $DEX_SECRET := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "DEX_SECRET") }}
+{{- $DEX_JWTKEY := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "DEX_JWTKEY") }}
+{{- $DEX_CSTOREKEY := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "DEX_CSTOREKEY") }}
+{{- $postgresPwd := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "postgresql-postgresql" "Key" "postgresql-password") }}
+{{- $WEBHOOK_TOKEN := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "devtron-secret" "Key" "WEBHOOK_TOKEN") }}
{{- if $.Values.installer.modules }}
{{- if has "cicd" $.Values.installer.modules }}
apiVersion: v1
@@ -192,11 +199,10 @@ data:
{{- end }}
{{- end }}
---
-{{- $Secret := include "getOrGeneratePass" (dict "Namespace" "devtroncd" "Kind" "Secret" "Name" "postgresql-postgresql" "Key" "postgresql-password") }}
apiVersion: v1
kind: Secret
data:
- postgresql-password: {{ $Secret }}
+ postgresql-password: {{ $postgresPwd }}
POSTGRES_USER: cG9zdGdyZXM=
POSTGRES_DB: b3JjaGVzdHJhdG9y
metadata:
@@ -214,7 +220,7 @@ type: Opaque
apiVersion: v1
kind: Secret
data:
- DB_PASSWORD: {{ $Secret }}
+ DB_PASSWORD: {{ $postgresPwd }}
metadata:
name: postgresql-migrator
labels:
@@ -238,7 +244,17 @@ metadata:
"helm.sh/hook-weight": "-3"
"helm.sh/resource-policy": keep
data:
- PG_PASSWORD: {{ $Secret }}
+ PG_PASSWORD: {{ $postgresPwd }}
+{{- if $.Values.installer.modules }}
+{{- if has "cicd" $.Values.installer.modules }}
+ EXTERNAL_CI_API_SECRET: {{ $EXTERNAL_CI_API_SECRET }}
+ WEBHOOK_TOKEN: {{ $WEBHOOK_TOKEN }}
+ ORCH_TOKEN: {{ $ORCH_TOKEN }}
+ DEX_SECRET: {{ $DEX_SECRET }}
+ DEX_JWTKEY: {{ $DEX_JWTKEY }}
+ DEX_CSTOREKEY: {{ $DEX_CSTOREKEY }}
+{{- end }}
+{{- end }}
type: Opaque
---
apiVersion: v1
diff --git a/charts/devtron/templates/devtron.yaml b/charts/devtron/templates/devtron.yaml
index c697716d1a..948d5e739c 100644
--- a/charts/devtron/templates/devtron.yaml
+++ b/charts/devtron/templates/devtron.yaml
@@ -21,6 +21,70 @@ data:
APP_SYNC_IMAGE: {{ include "common.image" (dict "component" $.Values.components.chartSync "global" $.Values.global ) }}
{{- if $.Values.installer.modules }}
{{- if has "cicd" $.Values.installer.modules }}
+ CD_HOST: "argocd-server.devtroncd"
+ CD_PORT: "80"
+ CD_NAMESPACE: "devtroncd"
+ EVENT_URL: "http://notifier-service.devtroncd:80/notify"
+ GIT_SENSOR_PROTOCOL: GRPC
+ GIT_SENSOR_URL: "git-sensor-service.devtroncd:90"
+ GIT_SENSOR_TIMEOUT: "300"
+ LENS_URL: "http://lens-service.devtroncd:80"
+ LENS_TIMEOUT: "300"
+ NATS_SERVER_HOST: "nats://devtron-nats.devtroncd:4222"
+ APP: "orchestrator"
+ PG_LOG_QUERY: "true"
+ LOG_LEVEL: "0"
+ GIT_WORKING_DIRECTORY: "/tmp/gitops/"
+ ACD_URL: "argocd-server.devtroncd"
+ ACD_USER: "admin"
+ ACD_TIMEOUT: "300"
+ ACD_SKIP_VERIFY: "true"
+ MODE: "PROD"
+ CD_LIMIT_CI_CPU: "0.5"
+ CD_LIMIT_CI_MEM: "3G"
+ CD_REQ_CI_CPU: "0.5"
+ CD_REQ_CI_MEM: "1G"
+ CD_NODE_TAINTS_KEY: "dedicated"
+ CD_NODE_LABEL_SELECTOR: "kubernetes.io/os=linux"
+ CD_WORKFLOW_SERVICE_ACCOUNT: "cd-runner"
+ DEFAULT_BUILD_LOGS_KEY_PREFIX: "devtron"
+ DEFAULT_CD_ARTIFACT_KEY_LOCATION: "devtron/cd-artifacts"
+ CD_NODE_TAINTS_VALUE: "ci"
+ CD_ARTIFACT_LOCATION_FORMAT: "%d/%d.zip"
+ DEFAULT_CD_NAMESPACE: "devtron-cd"
+ DEFAULT_CI_IMAGE: {{ include "common.image" (dict "component" $.Values.components.ciRunner "global" $.Values.global ) }}
+ DEFAULT_CD_TIMEOUT: "3600"
+ WF_CONTROLLER_INSTANCE_ID: "devtron-runner"
+ CI_LOGS_KEY_PREFIX: "ci-artifacts"
+ DEFAULT_NAMESPACE: "devtron-ci"
+ DEFAULT_TIMEOUT: "3600"
+ LIMIT_CI_CPU: "0.5"
+ LIMIT_CI_MEM: "3G"
+ REQ_CI_CPU: "0.5"
+ REQ_CI_MEM: "1G"
+ CI_NODE_TAINTS_KEY: ""
+ CI_NODE_TAINTS_VALUE: ""
+ CI_NODE_LABEL_SELECTOR: ""
+ CACHE_LIMIT: "5000000000"
+ DEFAULT_ARTIFACT_KEY_LOCATION: "devtron/ci-artifacts"
+ WORKFLOW_SERVICE_ACCOUNT: "ci-runner"
+ EXTERNAL_CI_PAYLOAD: "{\"ciProjectDetails\":[{\"gitRepository\":\"https://github.com/vikram1601/getting-started-nodejs.git\",\"checkoutPath\":\"./abc\",\"commitHash\":\"239077135f8cdeeccb7857e2851348f558cb53d3\",\"commitTime\":\"2022-10-30T20:00:00\",\"branch\":\"master\",\"message\":\"Update README.md\",\"author\":\"User Name \"}],\"dockerImage\":\"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2\"}"
+ CI_ARTIFACT_LOCATION_FORMAT: "%d/%d.zip"
+ IMAGE_SCANNER_ENDPOINT: "http://image-scanner-service.devtroncd:80"
+ ECR_REPO_NAME_PREFIX: "devtron/"
+ ACD_USERNAME: "admin"
+ DEX_RURL: "http://argocd-dex-server.devtroncd:8080/callback"
+ DEX_URL: "http://argocd-dex-server.devtroncd:5556/dex"
+ CExpirationTime: "600"
+ JwtExpirationTime: "120"
+ ACD_CM: "argocd-cm"
+ ACD_NAMESPACE: "devtroncd"
+ MINIO_ENDPOINT: http://devtron-minio:9000
+ GITOPS_REPO_PREFIX: "devtron"
+ ENFORCER_CACHE: "true"
+ ENFORCER_CACHE_EXPIRATION_IN_SEC: "345600"
+ ENFORCER_MAX_BATCH_SIZE: "1"
+ DEVTRON_SECRET_NAME: "devtron-secret"
USE_ARTIFACT_LISTING_API_V2: "true"
RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS: "true"
ENABLE_ASYNC_INSTALL_DEVTRON_CHART: "true"
@@ -29,7 +93,18 @@ data:
IMAGE_SCAN_MAX_RETRIES: "3"
IMAGE_SCAN_RETRY_DELAY: "5"
CONSUMER_CONFIG_JSON: '{"DEVTRON-CHART-INSTALL-DURABLE":{"natsMsgProcessingBatchSize":1}}'
- USE_GIT_CLI : "true"
+ SKIP_GITOPS_VALIDATION: "false"
+ SKIP_CREATING_ECR_REPO: "false"
+ SCOPED_VARIABLE_ENABLED: "true"
+ SCOPED_VARIABLE_HANDLE_PRIMITIVES: "true"
+ MAX_CI_WORKFLOW_RETRIES: "0"
+ MAX_CD_WORKFLOW_RUNNER_RETRIES: "0"
+ ENABLE_BUILD_CONTEXT: "true"
+ CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE: "1"
+ FEATURE_RESTART_WORKLOAD_BATCH_SIZE: "1"
+ FEATURE_RESTART_WORKLOAD_WORKER_POOL_SIZE: "5"
+ USE_GIT_CLI: "false"
+ PROPAGATE_EXTRA_LABELS: "false"
{{- if $.Values.configs }}
{{- if or ($.Values.minio.enabled) ($.Values.configs.BLOB_STORAGE_PROVIDER) }}
BLOB_STORAGE_ENABLED: "true"
@@ -61,6 +136,10 @@ data:
{{- if $.Values.monitoring.grafana }}
{{- if $.Values.monitoring.grafana.enabled }}
GRAFANA_URL: "http://%s:%s@devtron-grafana.devtroncd/grafana"
+ GRAFANA_HOST: "devtron-grafana.devtroncd"
+ GRAFANA_PORT: "80"
+ GRAFANA_NAMESPACE: "devtroncd"
+ GRAFANA_ORG_ID: "2"
{{- end }}
{{- end }}
{{- end }}
@@ -82,6 +161,23 @@ data:
{{- end }}
DEFAULT_CI_IMAGE: {{ include "common.image" (dict "component" $.Values.components.ciRunner "global" $.Values.global ) }}
---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: devtron-cluster-components
+ labels:
+ release: devtron
+data:
+ rollout.yaml: >-
+ rollout:
+ resources:
+ limits:
+ cpu: 250m
+ memory: 200Mi
+ requests:
+ cpu: 50m
+ memory: 100Mi
+---
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -107,6 +203,10 @@ spec:
terminationGracePeriodSeconds: 30
restartPolicy: Always
serviceAccountName: devtron
+ volumes:
+ - configMap:
+ name: devtron-cluster-components
+ name: devtron-cluster-components-vol
{{- if and $.Values.global $.Values.global.podSecurityContext }}
securityContext:
{{- toYaml $.Values.global.podSecurityContext | nindent 8 }}
@@ -155,6 +255,9 @@ spec:
name: "devtron-custom-cm"
- secretRef:
name: "devtron-custom-secret"
+ volumeMounts:
+ - mountPath: /cluster/component
+ name: devtron-cluster-components-vol
{{- if .resources }}
resources:
{{- toYaml .resources | nindent 12 }}
diff --git a/charts/devtron/templates/gitsensor.yaml b/charts/devtron/templates/gitsensor.yaml
index c0e2219366..8b547ac220 100644
--- a/charts/devtron/templates/gitsensor.yaml
+++ b/charts/devtron/templates/gitsensor.yaml
@@ -8,6 +8,7 @@ metadata:
labels:
app: git-sensor
release: devtron
+type: Opaque
{{- if .secrets }}
data:
{{- range $k, $v := .secrets }}
diff --git a/charts/devtron/templates/lens.yaml b/charts/devtron/templates/lens.yaml
index 8b34f0534f..1641f88ab9 100644
--- a/charts/devtron/templates/lens.yaml
+++ b/charts/devtron/templates/lens.yaml
@@ -8,6 +8,7 @@ metadata:
labels:
app: lens
release: devtron
+type: Opaque
{{- if .secrets }}
data:
{{- range $k, $v := .secrets }}
diff --git a/charts/devtron/templates/workflow.yaml b/charts/devtron/templates/workflow.yaml
index 35b9ddffe2..659fc6430f 100644
--- a/charts/devtron/templates/workflow.yaml
+++ b/charts/devtron/templates/workflow.yaml
@@ -20,6 +20,16 @@ metadata:
---
apiVersion: v1
kind: Namespace
+metadata:
+ name: devtron-demo
+ labels:
+ name: devtron
+ annotations:
+ "helm.sh/hook": pre-install
+ "helm.sh/resource-policy": keep
+---
+apiVersion: v1
+kind: Namespace
metadata:
name: devtron-cd
labels:
@@ -919,6 +929,22 @@ metadata:
name: argo
namespace: argo
---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: cd-runner
+ namespace: devtron-cd
+ labels:
+ release: devtron
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: ci-runner
+ namespace: devtron-ci
+ labels:
+ release: devtron
+---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
@@ -1123,6 +1149,58 @@ rules:
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: workflow-cluster-role
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - pods
+ verbs:
+ - get
+ - watch
+ - patch
+- apiGroups:
+ - ""
+ resources:
+ - pods/log
+ verbs:
+ - get
+ - watch
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - create
+- apiGroups:
+ - ""
+ resources:
+ - secrets
+ verbs:
+ - create
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: workflow-cluster-role
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: workflow-cluster-role
+subjects:
+- kind: ServiceAccount
+ name: ci-runner
+ namespace: devtron-ci
+- kind: ServiceAccount
+ name: cd-runner
+ namespace: devtron-cd
+- kind: ServiceAccount
+ name: devtron
+ namespace: devtroncd
+---
+apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: argo-binding
diff --git a/charts/devtron/values.yaml b/charts/devtron/values.yaml
index d40bfbcd2b..9716846d94 100644
--- a/charts/devtron/values.yaml
+++ b/charts/devtron/values.yaml
@@ -8,42 +8,37 @@ global:
runAsUser: 1000
runAsNonRoot: true
containerRegistry: "quay.io/devtron"
-
+
installer:
repo: "devtron-labs/devtron"
- release: "v0.6.29"
+ release: "v0.7.0"
registry: ""
image: inception
tag: 473deaa4-185-21582
source: "github" # Available options are github and gitee
-# mode: "dashboard" # Available options are dashboard, full and hyperion (deprecated) NOT USING THIS
modules: [] # Available options are cicd
openshift: false # Set this to true if you are installing on openshift
production_overrides: "" # Set true if you want to use this Devtron stack in Production (This will require more resources)
-
# Change the below values for full mode only
#Use secrets in plaintext, they'll be encoded to base64 automatically.
secrets: {}
-
# REQUIRED IF BLOB_STORAGE_PROVIDER=AZURE Token with read write access to AZURE_BLOB_CONTAINER_CI_LOG and AZURE_BLOB_CONTAINER_CI_CACHE
# AZURE_ACCOUNT_KEY: "xxxxxxxxxx"
configs:
- BLOB_STORAGE_PROVIDER: "" #AZURE|S3|MINIO|GCP
- ENABLE_LEGACY_API: "false" # Set to true if you are installing Devtron on a kubernetes version < k8s 1.19
-# Amazon AWS S3 bucket and region for storing Build-cache for faster build process. Mandatory if BLOB_STORAGE_PROVIDER is AWS.
+ BLOB_STORAGE_PROVIDER: "" #AZURE|S3|MINIO|GCP
+ # Amazon AWS S3 bucket and region for storing Build-cache for faster build process. Mandatory if BLOB_STORAGE_PROVIDER is AWS.
#DEFAULT_CACHE_BUCKET: "change-me" #Do not include s3://
#DEFAULT_CACHE_BUCKET_REGION: "us-east-1"
-# Amazon AWS S3 bucket and region for storing Build-logs. Mandatory if BLOB_STORAGE_PROVIDER is AWS.
+ # Amazon AWS S3 bucket and region for storing Build-logs. Mandatory if BLOB_STORAGE_PROVIDER is AWS.
#DEFAULT_BUILD_LOGS_BUCKET: "change-me" #Do not include s3://
#DEFAULT_CD_LOGS_BUCKET_REGION: "us-east-1"
-# Amazon AWS Secret Region if you will be using AWS Secret manager for storing secrets.
+ # Amazon AWS Secret Region if you will be using AWS Secret manager for storing secrets.
#EXTERNAL_SECRET_AMAZON_REGION: ""
-# Azure Blob storage Info for storing Build Logs and Build cache for faster build process.
+ # Azure Blob storage Info for storing Build Logs and Build cache for faster build process.
#AZURE_ACCOUNT_NAME: "test-account"
#AZURE_BLOB_CONTAINER_CI_LOG: "ci-log-container"
#AZURE_BLOB_CONTAINER_CI_CACHE: "ci-cache-container"
-
# Change the below values for hyperion only mode (Refer https://docs.devtron.ai/#hyperion )
components:
dashboard:
@@ -66,13 +61,13 @@ components:
SERVICE_WORKER_TIMEOUT: "1"
API_BATCH_SIZE: "30"
registry: ""
- image: "dashboard:1c86e84e-325-22108"
+ image: "dashboard:87aaf7ac-690-23135"
imagePullPolicy: IfNotPresent
-
+
devtron:
registry: ""
- image: "hyperion:e7f34f5a-280-22107"
- cicdImage: "devtron:e7f34f5a-434-22106"
+ image: "hyperion:3aa7e420-280-23147"
+ cicdImage: "devtron:3aa7e420-434-23146"
imagePullPolicy: IfNotPresent
customOverrides: {}
serviceMonitor:
@@ -89,28 +84,28 @@ components:
className: nginx
labels: {}
annotations: {}
- # kubernetes.io/tls-acme: "true"
+ # kubernetes.io/tls-acme: "true"
pathType: ImplementationSpecific
host: devtron.example.com
tls: []
# - secretName: devtron-tls
# hosts:
# - devtron.example.com
+
ciRunner:
registry: ""
- image: "ci-runner:f5614d79-541-22176"
-
-
+ image: "ci-runner:6e721248-138-23081"
+
argocdDexServer:
registry: ""
image: "dex:v2.30.2"
imagePullPolicy: IfNotPresent
initContainer:
authenticator: "authenticator:e414faff-393-13273"
-
+
kubelink:
registry: ""
- image: "kubelink:2610ac5a-564-22109"
+ image: "kubelink:a810dbae-564-23055"
imagePullPolicy: IfNotPresent
configs:
ENABLE_HELM_RELEASE_CACHE: "true"
@@ -125,10 +120,10 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-
+
kubewatch:
registry: ""
- image: "kubewatch:50d4d32d-419-22116"
+ image: "kubewatch:f8ac0fe6-419-23054"
imagePullPolicy: IfNotPresent
configs:
devtroncd_NAMESPACE: "devtron-ci"
@@ -136,7 +131,7 @@ components:
ACD_NAMESPACE: "devtroncd"
ACD_INFORMER: "true"
NATS_STREAM_MAX_AGE: "10800"
-
+
postgres:
registry: ""
image: "postgres:11.9.0-debian-10-r26"
@@ -148,7 +143,7 @@ components:
armImage: postgres_exporter:v0.10.1
persistence:
volumeSize: "20Gi"
-
+
gitsensor:
registry: ""
image: "git-sensor:8545feb5-200-22005"
@@ -166,10 +161,10 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-# Values for lens
+ # Values for lens
lens:
registry: ""
- image: "lens:70577aaa-333-21179"
+ image: "lens:3d3e8f08-333-23057"
imagePullPolicy: IfNotPresent
secrets: {}
resources: {}
@@ -184,7 +179,7 @@ components:
dbconfig:
secretName: postgresql-postgresql
keyName: postgresql-password
-# Change below values for nats
+ # Change below values for nats
nats:
registry: ""
image: nats:2.9.3-alpine
@@ -200,6 +195,7 @@ components:
enabled: false
persistence:
storage: 5Gi
+
migrator:
registry: ""
image: "migrator:v4.16.2"
@@ -212,13 +208,12 @@ components:
DB_NAME: "casbin"
gitsensor:
DB_NAME: "git_sensor"
- lens:
+ lens:
DB_NAME: "lens"
-
+
chartSync:
registry: ""
- image: chart-sync:d0dcc590-373-21074
-
+ image: chart-sync:b67ab589-150-23082
# values for argocd integration
argo-cd:
enabled: false
@@ -250,37 +245,37 @@ argo-cd:
# -- define the application controller `--repo-server-timeout-seconds`
repoServerTimeoutSeconds: "200"
extraArgs:
- - --kubectl-parallelism-limit
- - "35"
+ - --kubectl-parallelism-limit
+ - "35"
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- - all
+ - all
readOnlyRootFilesystem: true
runAsNonRoot: true
env:
- - name: ARGOCD_RECONCILIATION_TIMEOUT
- valueFrom:
- configMapKeyRef:
- key: timeout.reconciliation
- name: argocd-cm
- optional: true
+ - name: ARGOCD_RECONCILIATION_TIMEOUT
+ valueFrom:
+ configMapKeyRef:
+ key: timeout.reconciliation
+ name: argocd-cm
+ optional: true
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/name: argocd-application-controller
- topologyKey: kubernetes.io/hostname
- weight: 100
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/part-of: argocd
- topologyKey: kubernetes.io/hostname
- weight: 5
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/name: argocd-application-controller
+ topologyKey: kubernetes.io/hostname
+ weight: 100
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/part-of: argocd
+ topologyKey: kubernetes.io/hostname
+ weight: 5
# argocd-dex-server
dex:
enabled: false
@@ -289,18 +284,18 @@ argo-cd:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/name: argocd-redis
- topologyKey: kubernetes.io/hostname
- weight: 100
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/part-of: argocd
- topologyKey: kubernetes.io/hostname
- weight: 5
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/name: argocd-redis
+ topologyKey: kubernetes.io/hostname
+ weight: 100
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/part-of: argocd
+ topologyKey: kubernetes.io/hostname
+ weight: 5
image:
repository: public.ecr.aws/docker/library/redis
tag: 7.0.5-alpine
@@ -310,23 +305,23 @@ argo-cd:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/name: argocd-server
- topologyKey: kubernetes.io/hostname
- weight: 100
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/part-of: argocd
- topologyKey: kubernetes.io/hostname
- weight: 5
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/name: argocd-server
+ topologyKey: kubernetes.io/hostname
+ weight: 100
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/part-of: argocd
+ topologyKey: kubernetes.io/hostname
+ weight: 5
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- - all
+ - all
readOnlyRootFilesystem: true
runAsNonRoot: true
# argocd-rbac-cm
@@ -337,37 +332,37 @@ argo-cd:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/name: argocd-repo-server
- topologyKey: kubernetes.io/hostname
- weight: 100
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app.kubernetes.io/part-of: argocd
- topologyKey: kubernetes.io/hostname
- weight: 5
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/name: argocd-repo-server
+ topologyKey: kubernetes.io/hostname
+ weight: 100
+ - podAffinityTerm:
+ labelSelector:
+ matchLabels:
+ app.kubernetes.io/part-of: argocd
+ topologyKey: kubernetes.io/hostname
+ weight: 5
extraArgs:
- - --repo-cache-expiration
- - 24h
- - --parallelismlimit
- - "50"
+ - --repo-cache-expiration
+ - 24h
+ - --parallelismlimit
+ - "50"
env:
- - name: ARGOCD_RECONCILIATION_TIMEOUT
- valueFrom:
- configMapKeyRef:
- key: timeout.reconciliation
- name: argocd-cm
- optional: true
- - name: ARGOCD_EXEC_TIMEOUT
- value: 180s
+ - name: ARGOCD_RECONCILIATION_TIMEOUT
+ valueFrom:
+ configMapKeyRef:
+ key: timeout.reconciliation
+ name: argocd-cm
+ optional: true
+ - name: ARGOCD_EXEC_TIMEOUT
+ value: 180s
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- - all
+ - all
readOnlyRootFilesystem: true
runAsNonRoot: true
applicationSet:
@@ -378,7 +373,7 @@ argo-cd:
security:
enabled: false
imageScanner:
- image: "image-scanner:c0416bc2-334-22111"
+ image: "image-scanner:3ab2ba46-141-23064"
# Values for trivy
trivy:
enabled: false
@@ -425,8 +420,6 @@ workflowController:
executorImage: "argoexec:v3.4.3"
IMDSv1Image: "workflow-controller:v3.0.7"
IMDSv1ExecutorImage: "argoexec:v3.0.7"
-
-
# Values for grafana integration
monitoring:
grafana:
@@ -445,4 +438,4 @@ monitoring:
imagePullPolicy: IfNotPresent
resources: {}
persistence:
- storage: "2Gi"
\ No newline at end of file
+ storage: "2Gi"
diff --git a/cmd/external-app/wire.go b/cmd/external-app/wire.go
index ad788461bd..15a9287f4d 100644
--- a/cmd/external-app/wire.go
+++ b/cmd/external-app/wire.go
@@ -1,3 +1,6 @@
+//go:build wireinject
+// +build wireinject
+
/*
* Copyright (c) 2024. Devtron Inc.
*
@@ -14,9 +17,6 @@
* limitations under the License.
*/
-//go:build wireinject
-// +build wireinject
-
package main
import (
@@ -147,6 +147,7 @@ func InitializeApp() (*App, error) {
wire.Bind(new(app.AppCrudOperationService), new(*app.AppCrudOperationServiceImpl)),
pipelineConfig.NewAppLabelRepositoryImpl,
wire.Bind(new(pipelineConfig.AppLabelRepository), new(*pipelineConfig.AppLabelRepositoryImpl)),
+ app.GetCrudOperationServiceConfig,
// acd session client bind with authenticator login
wire.Bind(new(session.ServiceClient), new(*middleware.LoginService)),
connector.NewPumpImpl,
diff --git a/cmd/external-app/wire_gen.go b/cmd/external-app/wire_gen.go
index 4af92e771b..86c19f1a2c 100644
--- a/cmd/external-app/wire_gen.go
+++ b/cmd/external-app/wire_gen.go
@@ -1,6 +1,6 @@
// Code generated by Wire. DO NOT EDIT.
-//go:generate go run -mod=mod github.com/google/wire/cmd/wire
+//go:generate go run github.com/google/wire/cmd/wire
//go:build !wireinject
// +build !wireinject
@@ -392,7 +392,11 @@ func InitializeApp() (*App, error) {
attributesRouterImpl := router.NewAttributesRouterImpl(attributesRestHandlerImpl)
appLabelRepositoryImpl := pipelineConfig.NewAppLabelRepositoryImpl(db)
materialRepositoryImpl := pipelineConfig.NewMaterialRepositoryImpl(db)
- appCrudOperationServiceImpl := app2.NewAppCrudOperationServiceImpl(appLabelRepositoryImpl, sugaredLogger, appRepositoryImpl, userRepositoryImpl, installedAppRepositoryImpl, genericNoteServiceImpl, materialRepositoryImpl, installedAppDBServiceImpl)
+ crudOperationServiceConfig, err := app2.GetCrudOperationServiceConfig()
+ if err != nil {
+ return nil, err
+ }
+ appCrudOperationServiceImpl := app2.NewAppCrudOperationServiceImpl(appLabelRepositoryImpl, sugaredLogger, appRepositoryImpl, userRepositoryImpl, installedAppRepositoryImpl, genericNoteServiceImpl, materialRepositoryImpl, installedAppDBServiceImpl, crudOperationServiceConfig)
appInfoRestHandlerImpl := appInfo.NewAppInfoRestHandlerImpl(sugaredLogger, appCrudOperationServiceImpl, userServiceImpl, validate, enforcerUtilImpl, enforcerImpl, helmAppServiceImpl, enforcerUtilHelmImpl, genericNoteServiceImpl)
appInfoRouterImpl := appInfo2.NewAppInfoRouterImpl(sugaredLogger, appInfoRestHandlerImpl)
appFilteringRestHandlerImpl := appList.NewAppFilteringRestHandlerImpl(sugaredLogger, teamServiceImpl, enforcerImpl, userServiceImpl, clusterServiceImpl, environmentServiceImpl)
diff --git a/env_gen.md b/env_gen.md
index 43e17cf998..67cb63d365 100644
--- a/env_gen.md
+++ b/env_gen.md
@@ -195,6 +195,7 @@
| PIPELINE_DEGRADED_TIME | 10 | |
| PLUGIN_NAME | Pull images from container repository | |
| PRE_CI_CACHE_PATH | /devtroncd-cache | |
+ | PROPAGATE_EXTRA_LABELS | false | |
| PROXY_SERVICE_CONFIG | {} | |
| REQ_CI_CPU | 0.5 | |
| REQ_CI_MEM | 3G | |
diff --git a/go.mod b/go.mod
index 046e773ad9..d5ebca3a85 100644
--- a/go.mod
+++ b/go.mod
@@ -17,8 +17,8 @@ require (
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/davecgh/go-spew v1.1.1
github.com/deckarep/golang-set v1.8.0
- github.com/devtron-labs/authenticator v0.4.35-0.20240405091826-a91813c53470
- github.com/devtron-labs/common-lib v0.0.19-0.20240607054959-82c79c23b046
+ github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1
+ github.com/devtron-labs/common-lib v0.0.19-0.20240604130458-d06869faacb4
github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534
github.com/evanphx/json-patch v5.6.0+incompatible
github.com/gammazero/workerpool v1.1.3
diff --git a/go.sum b/go.sum
index 6936909566..1b02e2eb14 100644
--- a/go.sum
+++ b/go.sum
@@ -205,10 +205,10 @@ github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsP
github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo=
github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADGYw5LqMnHqSkyIELsHCGF6PkrmM31V8rF7o=
github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
-github.com/devtron-labs/authenticator v0.4.35-0.20240405091826-a91813c53470 h1:AUTYcDnL6w6Ux+264VldYaOUQAP6pDZ5Tq8wCKJyiEg=
-github.com/devtron-labs/authenticator v0.4.35-0.20240405091826-a91813c53470/go.mod h1:JQxTCMmQisrpjzETJr0tzVadV+wW23rHEZAY7JVyK3s=
-github.com/devtron-labs/common-lib v0.0.19-0.20240607054959-82c79c23b046 h1:hOyqkgILg+eDttLV6X7OAAo9PKEHzInUmBTVy/EY/iI=
-github.com/devtron-labs/common-lib v0.0.19-0.20240607054959-82c79c23b046/go.mod h1:deAcJ5IjUjM6ozZQLJEgPWDUA0mKa632LBsKx8uM9TE=
+github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 h1:qdkpTAo2Kr0ZicZIVXfNwsGSshpc9OB9j9RzmKYdIwY=
+github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1/go.mod h1:IkKPPEfgLCMR29he5yv2OCC6iM2R7K5/0AA3k8b9XNc=
+github.com/devtron-labs/common-lib v0.0.19-0.20240604130458-d06869faacb4 h1:veMXhbWYQdCdBpOkFw3Ev7ansFQXXeMg8unHJrLnABo=
+github.com/devtron-labs/common-lib v0.0.19-0.20240604130458-d06869faacb4/go.mod h1:deAcJ5IjUjM6ozZQLJEgPWDUA0mKa632LBsKx8uM9TE=
github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 h1:TElPRU69QedW7DIQiiQxtjwSQ6cK0fCTAMGvSLhP0ac=
github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534/go.mod h1:ypUknVph8Ph4dxSlrFoouf7wLedQxHku2LQwgRrdgS4=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
diff --git a/internal/sql/repository/UserAttributesRepository.go b/internal/sql/repository/UserAttributesRepository.go
index be7a4c03d6..e077ae0281 100644
--- a/internal/sql/repository/UserAttributesRepository.go
+++ b/internal/sql/repository/UserAttributesRepository.go
@@ -88,7 +88,7 @@ func (repo UserAttributesRepositoryImpl) UpdateDataValByKey(attrDto *UserAttribu
if err != nil {
return err
}
- query := "update user_attributes SET user_data = user_data::jsonb - ? || ? where email_id = ?"
+ query := "update user_attributes SET user_data = user_data::jsonb - ? || ? where email_id ilike ?"
_, err = repo.dbConnection.
Query(userAttr, query, attrDto.Key, string(updatedValJson), attrDto.EmailId)
@@ -97,7 +97,8 @@ func (repo UserAttributesRepositoryImpl) UpdateDataValByKey(attrDto *UserAttribu
func (repo UserAttributesRepositoryImpl) GetDataValueByKey(attrDto *UserAttributesDao) (string, error) {
model := &UserAttributes{}
- err := repo.dbConnection.Model(model).Where("email_id = ?", attrDto.EmailId).
+ err := repo.dbConnection.Model(model).Where("email_id ilike ?", attrDto.EmailId).
+ Limit(1).
Select()
if err != nil {
return "", err
@@ -118,7 +119,8 @@ func (repo UserAttributesRepositoryImpl) GetDataValueByKey(attrDto *UserAttribut
func (repo UserAttributesRepositoryImpl) GetUserDataByEmailId(emailId string) (string, error) {
model := &UserAttributes{}
- err := repo.dbConnection.Model(model).Where("email_id = ?", emailId).
+ err := repo.dbConnection.Model(model).Where("email_id ilike ?", emailId).
+ Limit(1).
Select()
if err != nil {
return "", err
diff --git a/manifests/install/devtron-installer.yaml b/manifests/install/devtron-installer.yaml
index eeb3250ff5..101860fe73 100644
--- a/manifests/install/devtron-installer.yaml
+++ b/manifests/install/devtron-installer.yaml
@@ -4,4 +4,4 @@ metadata:
name: installer-devtron
namespace: devtroncd
spec:
- url: https://raw.githubusercontent.com/devtron-labs/devtron/v0.6.29/manifests/installation-script
+ url: https://raw.githubusercontent.com/devtron-labs/devtron/v0.7.0/manifests/installation-script
diff --git a/manifests/installation-script b/manifests/installation-script
index 9dec6a19a3..7f58fe744a 100644
--- a/manifests/installation-script
+++ b/manifests/installation-script
@@ -1,153 +1,4 @@
-LTAG="v0.6.29";
+LTAG="v0.7.0";
REPO_RAW_URL="https://raw.githubusercontent.com/devtron-labs/devtron/";
-operatorSecret = kubectl get secret -n devtroncd devtron-operator-secret;
-operatorConfigMap = kubectl get cm -n devtroncd devtron-operator-cm;
-postgresqlPassword = jsonSelect(operatorSecret, "data.POSTGRESQL_PASSWORD");
-webHookToken = jsonSelect(operatorSecret, "data.WEBHOOK_TOKEN");
-postgresSecret = kubectl get secret -n devtroncd postgresql-postgresql;
-helmInstallation = jsonSelect(operatorConfigMap, "data.INSTALLATION_THROUGH_HELM");
-
-baseURLScheme = jsonSelect(operatorConfigMap, "data.BASE_URL_SCHEME");
-baseURL = jsonSelect(operatorConfigMap, "data.BASE_URL");
-dexConfig = jsonSelect(operatorConfigMap, "data.DEX_CONFIG");
-prometheusUrl = jsonSelect(operatorConfigMap, "data.PROMETHEUS_URL");
-
-passwordGen = `#!/bin/bash
-openssl rand -base64 20 | base64 | tr -d ':\n' | tr -d '=' | base64 | tr -d ':\n'`;
-
-shebang = `#!/bin/bash
-`;
-sleep50 = shebang + `
-sleep 50`;
-
-base64EncoderPrefix = `#!/bin/bash
-`;
-base64EncoderSuffix = ` | base64 | tr -d ':\n'`;
-
-base64DecoderPrefix = `#!/bin/bash
-`;
-base64DecoderSuffix = ` | base64 -d | tr -d ':\n'`;
-
-existingPostgresSecret = jsonSelect(postgresSecret, "data.postgresql-password");
-
-if existingPostgresSecret {
- postgresqlPassword = existingPostgresSecret;
-}
-
-log("postgres pwd");
-log(existingPostgresSecret);
-log(existingPostgresSecretPlain);
-
-if !postgresqlPassword {
- postgresqlPassword = shellScript passwordGen;
-}
-if !baseURL {
- log("baseURL is mandatory");
-}
-
-if !defaultBuildLogsBucket {
- defaultBuildLogsBucket = "devtron-ci-log" ;
-}
-
-if !defaultCacheBucket {
- defaultCacheBucket = "devtron-ci-cache" ;
-}
-
-######Generating raw urls
-argocdResource_raw = REPO_RAW_URL + LTAG + "/manifests/yamls/argocd-resource.json";
-devtronHousekeeping_raw = REPO_RAW_URL + LTAG + "/manifests/yamls/devtron-housekeeping.yaml";
-devtron_raw = REPO_RAW_URL + LTAG + "/manifests/yamls/devtron.yaml";
-serviceAccount_raw = REPO_RAW_URL + LTAG + "/manifests/yamls/serviceaccount.yaml";
-namespace_raw = REPO_RAW_URL + LTAG + "/manifests/yamls/namespace.yaml";
-
-######Downloading the manifests
-argocdResource = download(argocdResource_raw);
-devtronHousekeeping = download(devtronHousekeeping_raw);
-devtron = download(devtron_raw);
-serviceAccount = download(serviceAccount_raw);
-namespace = download(namespace_raw);
-
-######Downloading the manifests
-
-devtronHousekeepingOverride = kubectl get cm -n devtroncd devtron-housekeeping-override-cm;
-devtronOverride = kubectl get cm -n devtroncd devtron-override-cm;
-serviceAccountOverride = kubectl get cm -n devtroncd devtron-service-account-override-cm;
-namespaceOverride = kubectl get cm -n devtroncd namespace-override-cm;
-
-devtronOverride = jsonSelect(devtronOverride, "data.override");
-serviceAccountOverride = jsonSelect(serviceAccountOverride, "data.override");
-namespaceOverride = jsonSelect(namespaceOverride, "data.override");
-
-namespaces = kubectl apply namespace;
-log("created namespaces");
-sa = kubectl apply serviceAccount;
-log("created service account");
-
-pa = kubectl patch -n devtroncd cm/argocd-cm --type "application/json-patch+json" -p argocdResource;
-log("executed argocd setup command");
-
-
-migDelete = kubectl delete -n devtroncd job devtron-housekeeping;
-if !migDelete {
- log("migration job deletion failed");
-}
-
-# devtron
-hasDevtron = kubectl get deployment "devtron" -n devtroncd;
-orchToken = shellScript passwordGen;
-webHookToken = shellScript passwordGen;
-dexSecret = shellScript passwordGen;
-dexJwtKey = shellScript passwordGen;
-dexCStoreKey = shellScript passwordGen;
-externalCIAPISecret = shellScript passwordGen;
-
-kubeYamlEdit(devtron, "data.PG_PASSWORD", postgresqlPassword, `/Secret//devtron-secret`);
-
-if hasDevtron {
- devtronSecret = kubectl get secret -n devtroncd devtron-secret;
- texternalCIAPISecret = jsonSelect(devtronSecret, "data.EXTERNAL_CI_API_SECRET");
- twebHookToken = jsonSelect(devtronSecret, "data.WEBHOOK_TOKEN");
- torchToken = jsonSelect(devtronSecret, "data.ORCH_TOKEN");
- tdexSecret = jsonSelect(devtronSecret, "data.DEX_SECRET");
- tdexJwtKey = jsonSelect(devtronSecret, "data.DEX_JWTKEY");
- tdexCStoreKey = jsonSelect(devtronSecret, "data.DEX_CSTOREKEY");
-}
-
-if texternalCIAPISecret {
- externalCIAPISecret = texternalCIAPISecret;
-}
-if twebHookToken {
- webHookToken = twebHookToken;
-}
-if torchToken {
- orchToken = torchToken;
-}
-if tdexSecret {
- dexSecret = tdexSecret;
-}
-if tdexJwtKey {
- dexJwtKey = tdexJwtKey;
-}
-if tdexCStoreKey {
- dexCStoreKey = tdexCStoreKey;
-}
-
-
-kubeYamlEdit(devtron, "data.EXTERNAL_CI_API_SECRET", externalCIAPISecret, `/Secret//devtron-secret`);
-kubeYamlEdit(devtron, "data.WEBHOOK_TOKEN", webHookToken, `/Secret//devtron-secret`);
-kubeYamlEdit(devtron, "data.ORCH_TOKEN", orchToken, `/Secret//devtron-secret`);
-kubeYamlEdit(devtron, "data.DEX_SECRET", dexSecret, `/Secret//devtron-secret`);
-kubeYamlEdit(devtron, "data.DEX_JWTKEY", dexJwtKey, `/Secret//devtron-secret`);
-kubeYamlEdit(devtron, "data.DEX_CSTOREKEY", dexCStoreKey, `/Secret//devtron-secret`);
-
-if helmInstallation {
- kubeYamlDelete(devtron, filter=`/Service//devtron-service`);
-}
-
-devtron = kubectl apply -n devtroncd devtron -u devtronOverride;
-log("executed devtron setup");
-
-## Applying Housekeeping Job
-appHousekeeping = kubectl apply -n devtroncd devtronHousekeeping -u devtronHousekeepingOverride;
-log("executed devtron-housekeeping setup");
+log("executed devtron setup installation");
diff --git a/manifests/release.txt b/manifests/release.txt
index 37e928edeb..0dc10a4ee0 100644
--- a/manifests/release.txt
+++ b/manifests/release.txt
@@ -1 +1 @@
-stable -1 v0.6.29
+stable -1 v0.7.0
diff --git a/manifests/version.txt b/manifests/version.txt
index 49d70ca7ec..8b20e48523 100644
--- a/manifests/version.txt
+++ b/manifests/version.txt
@@ -1 +1 @@
-v0.6.29
+v0.7.0
diff --git a/manifests/yamls/dashboard.yaml b/manifests/yamls/dashboard.yaml
index c8ed7bf692..f8a467879f 100644
--- a/manifests/yamls/dashboard.yaml
+++ b/manifests/yamls/dashboard.yaml
@@ -235,7 +235,7 @@ spec:
- name: envoy-config-volume
mountPath: /etc/envoy-config/
- name: dashboard
- image: "quay.io/devtron/dashboard:1c86e84e-325-22108"
+ image: "quay.io/devtron/dashboard:5ad103e8-690-23058"
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
diff --git a/manifests/yamls/devtron.yaml b/manifests/yamls/devtron.yaml
index 886419955c..591ff0e985 100644
--- a/manifests/yamls/devtron.yaml
+++ b/manifests/yamls/devtron.yaml
@@ -53,7 +53,7 @@ data:
CD_NODE_TAINTS_VALUE: "ci"
CD_ARTIFACT_LOCATION_FORMAT: "%d/%d.zip"
DEFAULT_CD_NAMESPACE: "devtron-cd"
- DEFAULT_CI_IMAGE: "quay.io/devtron/ci-runner:3de666b1-138-22112"
+ DEFAULT_CI_IMAGE: "quay.io/devtron/ci-runner:6e721248-138-23081"
DEFAULT_CD_TIMEOUT: "3600"
WF_CONTROLLER_INSTANCE_ID: "devtron-runner"
CI_LOGS_KEY_PREFIX: "ci-artifacts"
@@ -89,7 +89,7 @@ data:
ENFORCER_CACHE: "true"
ENFORCER_CACHE_EXPIRATION_IN_SEC: "345600"
ENFORCER_MAX_BATCH_SIZE: "1"
- APP_SYNC_IMAGE: "quay.io/devtron/chart-sync:d0dcc590-373-21074"
+ APP_SYNC_IMAGE: "quay.io/devtron/chart-sync:b67ab589-150-23082"
DEVTRON_SECRET_NAME: "devtron-secret"
GIT_SENSOR_PROTOCOL: GRPC
GIT_SENSOR_URL: git-sensor-service.devtroncd:90
@@ -169,7 +169,7 @@ spec:
runAsUser: 1000
containers:
- name: devtron
- image: "quay.io/devtron/devtron:e7f34f5a-434-22106"
+ image: "quay.io/devtron/devtron:b331bc91-434-23136"
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
diff --git a/manifests/yamls/image-scanner.yaml b/manifests/yamls/image-scanner.yaml
index a88293cebf..d5ed455678 100644
--- a/manifests/yamls/image-scanner.yaml
+++ b/manifests/yamls/image-scanner.yaml
@@ -73,7 +73,7 @@ spec:
runAsUser: 1000
containers:
- name: image-scanner
- image: "quay.io/devtron/image-scanner:c0416bc2-334-22111"
+ image: "quay.io/devtron/image-scanner:3ab2ba46-141-23064"
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
diff --git a/manifests/yamls/kubelink.yaml b/manifests/yamls/kubelink.yaml
index edf05991ae..268e8732df 100644
--- a/manifests/yamls/kubelink.yaml
+++ b/manifests/yamls/kubelink.yaml
@@ -25,7 +25,7 @@ spec:
runAsUser: 1000
containers:
- name: kubelink
- image: "quay.io/devtron/kubelink:2610ac5a-564-22109"
+ image: "quay.io/devtron/kubelink:a810dbae-564-23055"
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
diff --git a/manifests/yamls/kubewatch.yaml b/manifests/yamls/kubewatch.yaml
index 8dfdd28262..cd51ffc536 100644
--- a/manifests/yamls/kubewatch.yaml
+++ b/manifests/yamls/kubewatch.yaml
@@ -164,7 +164,7 @@ spec:
runAsUser: 1000
containers:
- name: kubewatch
- image: "quay.io/devtron/kubewatch:50d4d32d-419-22116"
+ image: "quay.io/devtron/kubewatch:f8ac0fe6-419-23054"
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
diff --git a/manifests/yamls/lens.yaml b/manifests/yamls/lens.yaml
index 4b4adf4115..b28a09fdf9 100644
--- a/manifests/yamls/lens.yaml
+++ b/manifests/yamls/lens.yaml
@@ -71,7 +71,7 @@ spec:
runAsUser: 1000
containers:
- name: lens
- image: "quay.io/devtron/lens:70577aaa-333-21179"
+ image: "quay.io/devtron/lens:3d3e8f08-333-23057"
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
diff --git a/manifests/yamls/migrator.yaml b/manifests/yamls/migrator.yaml
index 13d9d5efb4..614c6e632b 100644
--- a/manifests/yamls/migrator.yaml
+++ b/manifests/yamls/migrator.yaml
@@ -47,7 +47,7 @@ spec:
- name: MIGRATE_TO_VERSION
value: "0"
- name: GIT_HASH
- value: e7f34f5aec161b8ee94e9b30d64e7475f072ccb6
+ value: 1e666e4747c25babd0d027f26844692fdeba5e61
envFrom:
- secretRef:
name: postgresql-migrator
@@ -96,7 +96,7 @@ spec:
- name: MIGRATE_TO_VERSION
value: "0"
- name: GIT_HASH
- value: e7f34f5aec161b8ee94e9b30d64e7475f072ccb6
+ value: 1e666e4747c25babd0d027f26844692fdeba5e61
- name: GIT_BRANCH
value: main
envFrom:
diff --git a/manifests/yamls/notifier.yaml b/manifests/yamls/notifier.yaml
index e423d6e375..3324036646 100644
--- a/manifests/yamls/notifier.yaml
+++ b/manifests/yamls/notifier.yaml
@@ -66,7 +66,7 @@ spec:
restartPolicy: Always
containers:
- name: notifier
- image: quay.io/devtron/notifier:924a17f6-372-22110
+ image: quay.io/devtron/notifier:546aaf51-372-23056"
imagePullPolicy: IfNotPresent
ports:
- name: app
diff --git a/pkg/app/AppCrudOperationService.go b/pkg/app/AppCrudOperationService.go
index 4cbd6dde22..89eccffaba 100644
--- a/pkg/app/AppCrudOperationService.go
+++ b/pkg/app/AppCrudOperationService.go
@@ -19,6 +19,7 @@ package app
import (
"encoding/json"
"fmt"
+ "github.com/caarlos0/env"
client "github.com/devtron-labs/devtron/api/helm-app/service"
"github.com/devtron-labs/devtron/internal/util"
"github.com/devtron-labs/devtron/pkg/appStore/installedApp/service/EAMode"
@@ -46,6 +47,10 @@ const (
ZERO_ENVIRONMENT_ID = 0
)
+type CrudOperationServiceConfig struct {
+ PropagateExtraLabels bool `env:"PROPAGATE_EXTRA_LABELS" envDefault:"false"`
+}
+
type AppCrudOperationService interface {
Create(request *bean.AppLabelDto, tx *pg.Tx) (*bean.AppLabelDto, error)
FindById(id int) (*bean.AppLabelDto, error)
@@ -60,15 +65,26 @@ type AppCrudOperationService interface {
GetAppListByTeamIds(teamIds []int, appType string) ([]*TeamAppBean, error)
}
+func GetCrudOperationServiceConfig() (*CrudOperationServiceConfig, error) {
+ cfg := &CrudOperationServiceConfig{}
+ err := env.Parse(cfg)
+ if err != nil {
+ fmt.Println("failed to parse server CrudOperationServiceConfig,: " + err.Error())
+ return nil, err
+ }
+ return cfg, nil
+}
+
type AppCrudOperationServiceImpl struct {
- logger *zap.SugaredLogger
- appLabelRepository pipelineConfig.AppLabelRepository
- appRepository appRepository.AppRepository
- userRepository repository.UserRepository
- installedAppRepository repository2.InstalledAppRepository
- genericNoteService genericNotes.GenericNoteService
- gitMaterialRepository pipelineConfig.MaterialRepository
- installedAppDbService EAMode.InstalledAppDBService
+ logger *zap.SugaredLogger
+ appLabelRepository pipelineConfig.AppLabelRepository
+ appRepository appRepository.AppRepository
+ userRepository repository.UserRepository
+ installedAppRepository repository2.InstalledAppRepository
+ genericNoteService genericNotes.GenericNoteService
+ gitMaterialRepository pipelineConfig.MaterialRepository
+ installedAppDbService EAMode.InstalledAppDBService
+ crudOperationServiceConfig *CrudOperationServiceConfig
}
func NewAppCrudOperationServiceImpl(appLabelRepository pipelineConfig.AppLabelRepository,
@@ -76,8 +92,9 @@ func NewAppCrudOperationServiceImpl(appLabelRepository pipelineConfig.AppLabelRe
installedAppRepository repository2.InstalledAppRepository,
genericNoteService genericNotes.GenericNoteService,
gitMaterialRepository pipelineConfig.MaterialRepository,
- installedAppDbService EAMode.InstalledAppDBService) *AppCrudOperationServiceImpl {
- return &AppCrudOperationServiceImpl{
+ installedAppDbService EAMode.InstalledAppDBService,
+ crudOperationServiceConfig *CrudOperationServiceConfig) *AppCrudOperationServiceImpl {
+ impl := &AppCrudOperationServiceImpl{
appLabelRepository: appLabelRepository,
logger: logger,
appRepository: appRepository,
@@ -87,6 +104,12 @@ func NewAppCrudOperationServiceImpl(appLabelRepository pipelineConfig.AppLabelRe
gitMaterialRepository: gitMaterialRepository,
installedAppDbService: installedAppDbService,
}
+ crudOperationServiceConfig, err := GetCrudOperationServiceConfig()
+ if err != nil {
+ return nil
+ }
+ impl.crudOperationServiceConfig = crudOperationServiceConfig
+ return impl
}
type AppBean struct {
@@ -641,14 +664,18 @@ func (impl AppCrudOperationServiceImpl) GetAppLabelsForDeployment(appId int, app
impl.logger.Errorw("error in getting app labels from db using appId", "appId", appId, "err", err)
return nil, err
}
- extraAppLabelsToPropagate, err := impl.getExtraAppLabelsToPropagate(appId, appName, envName)
- if err != nil {
- impl.logger.Errorw("error in getting extra app labels to propagate", "appName", appName, "envName", envName, "err", err)
- return nil, err
+ mergedAppLabels := appLabelsMapFromDb
+
+ if impl.crudOperationServiceConfig.PropagateExtraLabels {
+ extraAppLabelsToPropagate, err := impl.getExtraAppLabelsToPropagate(appId, appName, envName)
+ if err != nil {
+ impl.logger.Errorw("error in getting extra app labels to propagate", "appName", appName, "envName", envName, "err", err)
+ return nil, err
+ }
+ //when app labels are provided by the user and share the same label key names as those in the extraAppLabelsToPropagate map,
+ //priority will be given to the user-provided label keys.
+ mergedAppLabels = MergeChildMapToParentMap(appLabelsMapFromDb, extraAppLabelsToPropagate)
}
- //when app labels are provided by the user and share the same label key names as those in the extraAppLabelsToPropagate map,
- //priority will be given to the user-provided label keys.
- mergedAppLabels := MergeChildMapToParentMap(appLabelsMapFromDb, extraAppLabelsToPropagate)
appLabelJson.Labels = mergedAppLabels
appLabelByte, err := json.Marshal(appLabelJson)
diff --git a/pkg/appClone/AppCloneService.go b/pkg/appClone/AppCloneService.go
index 4f72e8bf33..84db1d2563 100644
--- a/pkg/appClone/AppCloneService.go
+++ b/pkg/appClone/AppCloneService.go
@@ -554,6 +554,8 @@ func (impl *AppCloneServiceImpl) configDataClone(cfData []*bean3.ConfigData) []*
DefaultMountPath: refdata.DefaultMountPath,
Global: refdata.Global,
ExternalSecretType: refdata.ExternalSecretType,
+ FilePermission: refdata.FilePermission,
+ SubPath: refdata.SubPath,
}
copiedData = append(copiedData, data)
}
diff --git a/pkg/auth/user/UserAuthService.go b/pkg/auth/user/UserAuthService.go
index a33a0af7b9..aa5b424c0a 100644
--- a/pkg/auth/user/UserAuthService.go
+++ b/pkg/auth/user/UserAuthService.go
@@ -22,6 +22,7 @@ import (
"encoding/json"
"errors"
"fmt"
+ util2 "github.com/devtron-labs/devtron/pkg/auth/user/util"
"log"
"math/rand"
"net/http"
@@ -53,13 +54,13 @@ type UserAuthService interface {
HandleRefresh(w http.ResponseWriter, r *http.Request)
CreateRole(roleData *bean.RoleData) (bool, error)
- AuthVerification(r *http.Request) (bool, error)
+ AuthVerification(r *http.Request) (bool, string, error)
DeleteRoles(entityType string, entityName string, tx *pg.Tx, envIdentifier string, workflowName string) error
}
type UserAuthServiceImpl struct {
userAuthRepository repository.UserAuthRepository
- //sessionClient is being used for argocd username-password login proxy
+ // sessionClient is being used for argocd username-password login proxy
sessionClient session2.ServiceClient
logger *zap.SugaredLogger
userRepository repository.UserRepository
@@ -71,7 +72,7 @@ type UserAuthServiceImpl struct {
var (
cStore *sessions.CookieStore
dexOauthConfig *oauth2.Config
- //googleOauthConfig *oauth2.Config
+ // googleOauthConfig *oauth2.Config
oauthStateString = randToken()
idTokenVerifier *oidc.IDTokenVerifier
jwtKey = randKey()
@@ -202,6 +203,7 @@ func (impl UserAuthServiceImpl) HandleRefresh(w http.ResponseWriter, r *http.Req
writeResponse(http.StatusBadRequest, "StatusBadRequest", w, errors.New("StatusBadRequest"))
return
}
+ claims.Email = util2.ConvertEmailToLowerCase(claims.Email)
bearerToken := claims.Token
user, err := authorize(context.Background(), bearerToken)
if err != nil {
@@ -257,11 +259,12 @@ func (impl UserAuthServiceImpl) HandleRefresh(w http.ResponseWriter, r *http.Req
}
func (impl UserAuthServiceImpl) HandleLoginWithClientIp(ctx context.Context, username, password, clientIp string) (string, error) {
+ impl.logger.Info("login with client ip")
token, err := impl.HandleLogin(username, password)
if err == nil {
id, _, err := impl.userService.GetUserByToken(ctx, token)
if err != nil {
- impl.logger.Infow("error occured while getting user by token", "err", err)
+ impl.logger.Errorw("error occurred while getting user by token", "err", err)
} else {
impl.userService.SaveLoginAudit("", clientIp, id)
}
@@ -308,6 +311,7 @@ func (impl UserAuthServiceImpl) HandleDexCallback(w http.ResponseWriter, r *http
// Rollback tx on error.
defer tx.Rollback()
+ Claims.Email = util2.ConvertEmailToLowerCase(Claims.Email)
dbUser, err := impl.userRepository.FetchUserDetailByEmail(Claims.Email)
if err != nil {
impl.logger.Errorw("Exception while fetching user from db", "err", err)
@@ -315,7 +319,7 @@ func (impl UserAuthServiceImpl) HandleDexCallback(w http.ResponseWriter, r *http
if dbUser.Id > 0 {
// Do nothing, User already exist in our db. (unique check by email id)
} else {
- //create new user in our db on d basis of info got from google api or hex. assign a basic role
+ // create new user in our db on d basis of info got from google api or hex. assign a basic role
model := &repository.UserModel{
EmailId: Claims.Email,
AccessToken: rawIDToken,
@@ -449,7 +453,7 @@ func (impl UserAuthServiceImpl) CreateRole(roleData *bean.RoleData) (bool, error
return true, nil
}
-func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, error) {
+func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, string, error) {
token := r.Header.Get("token")
if token == "" {
impl.logger.Infow("no token provided")
@@ -458,7 +462,7 @@ func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, error)
Code: constants.UserNoTokenProvided,
InternalMessage: "no token provided",
}
- return false, err
+ return false, "", err
}
_, err := impl.sessionManager.VerifyToken(token)
@@ -470,12 +474,12 @@ func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, error)
InternalMessage: "failed to verify token",
UserMessage: "token verification failed while getting logged in user",
}
- return false, err
+ return false, "", err
}
emailId, version, err := impl.userService.GetEmailAndVersionFromToken(token)
if err != nil {
impl.logger.Errorw("AuthVerification failed ", "error", err)
- return false, err
+ return false, "", err
}
exists := impl.userService.UserExists(emailId)
if !exists {
@@ -485,7 +489,7 @@ func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, error)
InternalMessage: "user does not exist",
UserMessage: "active user does not exist",
}
- return false, err
+ return false, "", err
}
// checking length of version, to ensure backward compatibility as earlier we did not
// have version for api-tokens
@@ -494,12 +498,12 @@ func (impl UserAuthServiceImpl) AuthVerification(r *http.Request) (bool, error)
err := impl.userService.CheckIfTokenIsValid(emailId, version)
if err != nil {
impl.logger.Errorw("token is not valid", "error", err, "token", token)
- return false, err
+ return false, "", err
}
}
//TODO - extends for other purpose
- return true, nil
+ return true, emailId, nil
}
func (impl UserAuthServiceImpl) DeleteRoles(entityType string, entityName string, tx *pg.Tx, envIdentifier string, workflowName string) (err error) {
diff --git a/pkg/auth/user/UserService.go b/pkg/auth/user/UserService.go
index f3834fe498..3e17f76e44 100644
--- a/pkg/auth/user/UserService.go
+++ b/pkg/auth/user/UserService.go
@@ -22,6 +22,7 @@ import (
"github.com/devtron-labs/devtron/pkg/auth/user/adapter"
userHelper "github.com/devtron-labs/devtron/pkg/auth/user/helper"
"github.com/devtron-labs/devtron/pkg/auth/user/repository/helper"
+ util3 "github.com/devtron-labs/devtron/pkg/auth/user/util"
"net/http"
"strconv"
"strings"
@@ -1364,7 +1365,7 @@ func (impl *UserServiceImpl) GetEmailAndVersionFromToken(token string) (string,
email = "admin"
}
- return email, tokenVersion, nil
+ return util3.ConvertEmailToLowerCase(email), tokenVersion, nil
}
func (impl *UserServiceImpl) GetByIds(ids []int32) ([]bean.UserInfo, error) {
diff --git a/pkg/auth/user/repository/UserRepository.go b/pkg/auth/user/repository/UserRepository.go
index 1c36a38efb..61cf1308bd 100644
--- a/pkg/auth/user/repository/UserRepository.go
+++ b/pkg/auth/user/repository/UserRepository.go
@@ -20,8 +20,11 @@
package repository
import (
+ "fmt"
"github.com/devtron-labs/devtron/api/bean"
userBean "github.com/devtron-labs/devtron/pkg/auth/user/bean"
+ "github.com/devtron-labs/devtron/pkg/auth/user/repository/helper"
+ "github.com/devtron-labs/devtron/pkg/auth/user/util"
"github.com/devtron-labs/devtron/pkg/sql"
"github.com/go-pg/pg"
"go.uber.org/zap"
@@ -59,13 +62,14 @@ func NewUserRepositoryImpl(dbConnection *pg.DB, logger *zap.SugaredLogger) *User
}
type UserModel struct {
- TableName struct{} `sql:"users" pg:",discard_unknown_columns"`
- Id int32 `sql:"id,pk"`
- EmailId string `sql:"email_id,notnull"`
- AccessToken string `sql:"access_token"`
- Active bool `sql:"active,notnull"`
- UserType string `sql:"user_type"`
- UserAudit *UserAudit `sql:"-"`
+ TableName struct{} `sql:"users" pg:",discard_unknown_columns"`
+ Id int32 `sql:"id,pk"`
+ EmailId string `sql:"email_id,notnull"`
+ RequestEmailId string `sql:"request_email_id"`
+ AccessToken string `sql:"access_token"`
+ Active bool `sql:"active,notnull"`
+ UserType string `sql:"user_type"`
+ UserAudit *UserAudit `sql:"-"`
sql.AuditLog
}
@@ -79,6 +83,8 @@ type UserRoleModel struct {
}
func (impl UserRepositoryImpl) CreateUser(userModel *UserModel, tx *pg.Tx) (*UserModel, error) {
+ userModel.RequestEmailId = userModel.EmailId
+ userModel.EmailId = util.ConvertEmailToLowerCase(userModel.EmailId)
err := tx.Insert(userModel)
if err != nil {
impl.Logger.Error(err)
@@ -88,6 +94,7 @@ func (impl UserRepositoryImpl) CreateUser(userModel *UserModel, tx *pg.Tx) (*Use
return userModel, nil
}
func (impl UserRepositoryImpl) UpdateUser(userModel *UserModel, tx *pg.Tx) (*UserModel, error) {
+ userModel.EmailId = util.ConvertEmailToLowerCase(userModel.EmailId)
err := tx.Update(userModel)
if err != nil {
impl.Logger.Error(err)
@@ -117,6 +124,7 @@ func (impl UserRepositoryImpl) UpdateToInactiveByIds(ids []int32, tx *pg.Tx, log
func (impl UserRepositoryImpl) GetById(id int32) (*UserModel, error) {
var model UserModel
err := impl.dbConnection.Model(&model).Where("id = ?", id).Where("active = ?", true).Select()
+ model.EmailId = util.ConvertEmailToLowerCase(model.EmailId)
return &model, err
}
@@ -134,13 +142,14 @@ func (impl UserRepositoryImpl) GetEmailByIds(ids []int32) ([]string, error) {
for _, model := range models {
userEmails = append(userEmails, model.EmailId)
}
- return userEmails, err
+ return util.ConvertEmailsToLowerCase(userEmails), err
}
func (impl UserRepositoryImpl) GetByIdIncludeDeleted(id int32) (*UserModel, error) {
var model UserModel
err := impl.dbConnection.Model(&model).Where("id = ?", id).Select()
+ model.EmailId = util.ConvertEmailToLowerCase(model.EmailId)
return &model, err
}
@@ -150,6 +159,9 @@ func (impl UserRepositoryImpl) GetAllExcludingApiTokenUser() ([]UserModel, error
Where("active = ?", true).
Where("user_type is NULL or user_type != ?", bean.USER_TYPE_API_TOKEN).
Order("updated_on desc").Select()
+ for i, user := range userModel {
+ userModel[i].EmailId = util.ConvertEmailToLowerCase(user.EmailId)
+ }
return userModel, err
}
@@ -160,20 +172,23 @@ func (impl UserRepositoryImpl) GetAllExecutingQuery(query string) ([]UserModel,
impl.Logger.Error("error in GetAllExecutingQuery", "err", err, "query", query)
return nil, err
}
+ for i, user := range userModel {
+ userModel[i].EmailId = util.ConvertEmailToLowerCase(user.EmailId)
+ }
return userModel, err
}
func (impl UserRepositoryImpl) FetchActiveUserByEmail(email string) (bean.UserInfo, error) {
var users bean.UserInfo
- query := "SELECT u.id, u.email_id, u.access_token, u.user_type FROM users u " +
- "WHERE u.active = true and u.email_id ILIKE ? order by u.updated_on desc"
+ query := fmt.Sprintf("SELECT u.id, u.email_id, u.access_token, u.user_type FROM users u"+
+ " WHERE u.active = true and %s order by u.updated_on desc", helper.GetEmailSearchQuery("u", email))
_, err := impl.dbConnection.Query(&users, query, email)
if err != nil {
- impl.Logger.Error("Exception caught:", err)
+ impl.Logger.Errorw("Exception caught:", "err", err)
return users, err
}
-
+ users.EmailId = util.ConvertEmailToLowerCase(email)
return users, nil
}
@@ -182,11 +197,11 @@ func (impl UserRepositoryImpl) FetchUserDetailByEmail(email string) (bean.UserIn
var users []bean.UserRole
var userFinal bean.UserInfo
- query := "SELECT u.id, u.email_id, u.user_type, r.role FROM users u" +
- " INNER JOIN user_roles ur ON ur.user_id=u.id" +
- " INNER JOIN roles r ON r.id=ur.role_id" +
- " WHERE u.email_id= ? and u.active = true" +
- " ORDER BY u.updated_on desc;"
+ query := fmt.Sprintf("SELECT u.id, u.email_id, u.user_type, r.role FROM users u"+
+ " INNER JOIN user_roles ur ON ur.user_id=u.id"+
+ " INNER JOIN roles r ON r.id=ur.role_id"+
+ " WHERE %s and u.active = true"+
+ " ORDER BY u.updated_on desc;", helper.GetEmailSearchQuery("u", email))
_, err := impl.dbConnection.Query(&users, query, email)
if err != nil {
return userFinal, err
@@ -196,7 +211,7 @@ func (impl UserRepositoryImpl) FetchUserDetailByEmail(email string) (bean.UserIn
for _, item := range users {
userFinal.Exist = true
userFinal.Id = item.Id
- userFinal.EmailId = item.EmailId
+ userFinal.EmailId = util.ConvertEmailToLowerCase(item.EmailId)
role = append(role, item.Role)
}
userFinal.Roles = role
@@ -205,6 +220,9 @@ func (impl UserRepositoryImpl) FetchUserDetailByEmail(email string) (bean.UserIn
func (impl UserRepositoryImpl) GetByIds(ids []int32) ([]UserModel, error) {
var model []UserModel
err := impl.dbConnection.Model(&model).Where("id in (?)", pg.In(ids)).Where("active = ?", true).Select()
+ for i, m := range model {
+ model[i].EmailId = util.ConvertEmailToLowerCase(m.EmailId)
+ }
return model, err
}
@@ -215,15 +233,19 @@ func (impl *UserRepositoryImpl) GetConnection() (dbConnection *pg.DB) {
func (impl UserRepositoryImpl) FetchUserMatchesByEmailIdExcludingApiTokenUser(email string) ([]UserModel, error) {
var model []UserModel
err := impl.dbConnection.Model(&model).
- Where("email_id like (?)", "%"+email+"%").
+ Where("email_id ilike (?)", "%"+email+"%").
Where("user_type is NULL or user_type != ?", bean.USER_TYPE_API_TOKEN).
Where("active = ?", true).Select()
+ for i, m := range model {
+ model[i].EmailId = util.ConvertEmailToLowerCase(m.EmailId)
+ }
return model, err
}
func (impl UserRepositoryImpl) FetchActiveOrDeletedUserByEmail(email string) (*UserModel, error) {
var model UserModel
err := impl.dbConnection.Model(&model).Where("email_id ILIKE (?)", email).Limit(1).Select()
+ model.EmailId = util.ConvertEmailToLowerCase(email)
return &model, err
}
diff --git a/pkg/auth/user/repository/helper/UserRepositoryQueryBuilder.go b/pkg/auth/user/repository/helper/UserRepositoryQueryBuilder.go
index a6a3d747a4..78107debaa 100644
--- a/pkg/auth/user/repository/helper/UserRepositoryQueryBuilder.go
+++ b/pkg/auth/user/repository/helper/UserRepositoryQueryBuilder.go
@@ -91,3 +91,10 @@ func GetQueryForGroupListingWithFilters(req *bean.ListingRequest) string {
return query
}
+
+func GetEmailSearchQuery(usersTableAlias string, emailId string) string {
+ expression := fmt.Sprintf(
+ "( (%s.user_type is NULL and %s.email_id ILIKE '%s' ) or (%s.user_type='apiToken' and %s.email_id='%s') )",
+ usersTableAlias, usersTableAlias, emailId, usersTableAlias, usersTableAlias, emailId)
+ return expression
+}
diff --git a/pkg/auth/user/util/emailUtil.go b/pkg/auth/user/util/emailUtil.go
new file mode 100644
index 0000000000..14e94683c8
--- /dev/null
+++ b/pkg/auth/user/util/emailUtil.go
@@ -0,0 +1,18 @@
+package util
+
+import "strings"
+
+func ConvertEmailToLowerCase(email string) string {
+ if CheckIfAdminOrApiToken(email) {
+ return email
+ }
+ return strings.ToLower(email)
+}
+
+func ConvertEmailsToLowerCase(emails []string) []string {
+ lowerCaseEmails := make([]string, 0, len(emails))
+ for _, email := range emails {
+ lowerCaseEmails = append(lowerCaseEmails, ConvertEmailToLowerCase(email))
+ }
+ return lowerCaseEmails
+}
diff --git a/pkg/auth/user/util/util.go b/pkg/auth/user/util/util.go
index f1fabb6908..cdd7b4d2c9 100644
--- a/pkg/auth/user/util/util.go
+++ b/pkg/auth/user/util/util.go
@@ -18,9 +18,24 @@ package util
import "strings"
+const (
+ ApiTokenPrefix = "API-TOKEN:"
+)
+
func CheckValidationForRoleGroupCreation(name string) bool {
if strings.Contains(name, ",") {
return false
}
return true
}
+
+func CheckIfAdminOrApiToken(email string) bool {
+ if email == "admin" || CheckIfApiToken(email) {
+ return true
+ }
+ return false
+}
+
+func CheckIfApiToken(email string) bool {
+ return strings.HasPrefix(email, ApiTokenPrefix)
+}
diff --git a/releasenotes.md b/releasenotes.md
index 6c6ccd2e44..0d33664254 100644
--- a/releasenotes.md
+++ b/releasenotes.md
@@ -1,52 +1,104 @@
-## v0.6.29
+
+> **= = = = = IMPORTANT = = = = =**
+RUN THE FOLLOWING COMMANDS AS A PRE-REQUISITE BEFORE UPGRADE:
+```
+export RELEASE_NAME=devtron
+kubectl -n devtron-ci label sa --all "app.kubernetes.io/managed-by=Helm" --overwrite
+kubectl -n devtron-ci annotate sa --all "meta.helm.sh/release-name=$RELEASE_NAME" "meta.helm.sh/release-namespace=devtroncd" --overwrite
+kubectl -n devtron-cd label sa --all "app.kubernetes.io/managed-by=Helm" --overwrite
+kubectl -n devtron-cd annotate sa --all "meta.helm.sh/release-name=$RELEASE_NAME" "meta.helm.sh/release-namespace=devtroncd" --overwrite
+```
+> Ignore the message above if you are not using devtron with cicd mode
+> Contact Devtron team on [DISCORD](https://discord.devtron.ai) if you have any concerns.
+
+
+## v0.7.0
## Bugs
-- fix: removed unused dependency (#4916)
-- fix: release not found alert (#4928)
-- fix: link external helm app to chart store (#4919)
-- fix: Corrected the error of fetching app name and pipeline name from CI_CD_EVENT (#4911)
-- fix:job name support added in input variables (#4863)
-- fix:duplicate workflow name fixed (#4841)
-- fix: deprecate latest in app store app version (#4896)
-- fix: rbac fix in case of project in upper case (#4840)
-- fix: use join cookie logic to extract token (#4892)
-- fix: chart sync job optimisation (#4631)
-- fix: depandabot version upgrade (#4792)
-- fix: injected app-serveice dependency into DeployedApplicationEventProcessor service (#4875)
-- fix: update argo app repo url in patch (#4876)
-- fix: removed code for gitops repo migration in devtron apps (#4838)
-- fix: return nil,err on git material fetch error (#4857)
-- fix: ns not found in case ips is being injected in cluster (in global config) (#4844)
-- fix: helm deployments stucked in queued for devtron apps (#4842)
-- fix: panic on re-trigger ci if pod deleted on BuildTriggerObject (#4826)
-- fix: hide ldap creds in in get req (#4788)
-- fix: 5xx 4.0 iter (#4620)
-- fix: rolefilters correction with all applications and particular application selected. (#4820)
-- fix: extra check added for mono-repo migraiton (#4764)
-- fix: trim space from git repo Url on create and update material (#4787)
+- fix: extra labels propagation made env driven (#5274)
+- fix: App clone config map fix (#5268)
+- fix: latest version in default cluster and on UI (#5259)
+- fix: update CVE's severity and store multiple same CVE's in multiple packages (#5168)
+- fix: fixing force push for gitops (#5152)
+- fix: extra labels propagation based on k8s label regex matching (#5216)
+- fix: invalid runner status (#5189)
+- fix: revert changes from main (#5206)
+- fix: apps and jobs permission (#5110)
+- fix: added Copyright (#5172)
+- fix:removed unused env var (#5174)
+- fix: Handling all cases for 5xx (#5100)
+- fix: trivy scan step command fix (#5162)
+- fix: added extra args in trivy cmds (#5146)
+- fix: proxyRouter empty data err panic handling (#5147)
+- fix: handling side-effects for displaying external helm apps with same name across diff namespaces and clusters (#4951)
+- fix: fatal log removed (#5043)
+- fix: added a check for restricting managers to assign superadmin through permission groups (#5025)
+- fix: SHOW_DOCKER_BUILD_ARGS variable not working as expected (#5117)
+- fix: dependabot version upgrade (#5089)
+- fix: containers are missing from app-details page in argocd app (#4973)
+- fix:resolved PR review comments also remove check for virtual cluster (#5095)
+- fix:handled namespace case if deleted by kubectl (#5081)
+- fix: oci chart were getting deployed through gitops (#5088)
+- fix: argocd config update fix (#5074)
+- fix: handle 5xx in fetch resource tree api and cd-trigger (#5050)
+- fix: gitops update updated (#5055)
+- fix: App create api validations (#5019)
+- fix: git material saved in transaction (#5040)
+- fix: panic while pulling images (#5036)
+- fix: terminal stuck in connecting state (#4989)
+- fix: handle for wrong format of k8s version in semvercompare func in cronjob template charts (#5016)
+- fix: Dockerfile ubuntu version (#5022)
+- fix: application status changes to HIBERNATING, when hibernation fails due to some reason (#5005)
+- fix: deleted api token can be reused if created again with same name (#4978)
+- fix: Kubelink Requests getting Failed for gRPC method GetAppDetails (#5012)
+- fix: terminate sync if in progress (#4946)
+- fix: grpc error handling for TemplateChart req (#4980)
+- fix: removed redundant import (#5004)
+- fix: image promotion sql script (#4996)
+- fix: image-approval-migartion fix (#4994)
+- fix: ci-cd count per day in telemetry data (#4931)
## Enhancements
-- perf: memory optimizations and prom metrics on terminal session exposed (#4909)
-- feat: Added the Devtron CI Trigger Plugin (#4908)
-- feat:MailMaster Plugin v1.0 (#4825)
-- feat: Add support for git hash in the app and app group overview section _revised (#4836)
-- feat:Github Pull Request Closer (#4833)
-- feat: Added Apply job in k8s plugin (#4828)
-- feat: Branch Divergence Checker Plugin (#4806)
-- feat: added request method in audit logger (#4817)
-- feat: active inactive user phase 3 (#4649)
+- feat: notifier behind nats (#5185)
+- feat: cd pipeline deployment history refactoring (#5200)
+- feat: wire nil test in pre ci pipeline (#4858)
+- feat: added recovery counter metrics (#5124)
+- feat: auto remediation (#5137)
+- feat: support for ca cert in trivy (#5064)
+- feat: validation for pipeline Type (#4670)
+- feat: propagate labels such as envName and projectName (#5063)
+- feat: Plugin to trigger Devtron Job (#5053)
+- feat: CD Trigger Plugin (#4810)
+- feat: Introduction to feasibility in Deployment (#4862)
## Documentation
-- doc: Added EnvVariablesFromFieldPath in Deployment Template (#4852)
+- doc: Created Resource Watcher Doc (#5193)
+- doc: Modified Portforward Section to Kubectl Section (#5236)
+- doc: Added enhancements to security doc (#5203)
+- docs: update readme to include multi arch flag (#4998)
+- docs: config.md updatation for new flag (#5061)
+- doc: Fixes in Documentation for May Month (#5150)
+- doc: Created Resource Watcher Doc (#5193)
+- doc: Modified Portforward Section to Kubectl Section (#5236)
+- doc: Added enhancements to security doc (#5203)
+- docs: update readme to include multi arch flag (#4998)
+- docs: config.md updatation for new flag (#5061)
+- doc: Added kubectl port-fwd section in RB (#5139)
+- doc: Added Bitbucket Data Center in GitOps doc (#5075)
+- doc: Image promotion policy (#4762)
+- doc: Revamped Resource Browser Doc (#5035)
+- doc: Added Bulk Restart in Application Groups doc (#5080)
+- doc: Added new doc in the index (#5029)
+- doc: Changes made in the doc according to the newer version (#5024)
+- doc: Added Linked CI with Child Info + Runtime Build Parameters (#4991)
## Others
-- chore: migration support for notification db changes (#4906)
-- chore: App Store refactoring v4 (#4647)
-- chore: Resource mapping refactoring (#4813)
-- misc: Refactoring Pagerduty Issue Calculator script (#4856)
-- misc: Update github_pagerduty_score_calculation.yml (#4853)
-- misc: Update pager-duty.yaml (#4850)
-- misc: Pagerduty issue template change (#4796)
-- chore: Image scanning refactoring (#4802)
-- chore: refactoring v4 (#4775)
+- chore: updated vendor (#5166)
+- chore: gitops validation in api (#5082)
+- chore: release v2 migration (#5126)
+- chore: migration update for remote connection config (#5113)
+- chore: added sql for release and release channels (#4898)
+- chore: resource scan migration (#4977)
+- chore: image promotion migration (#4992)
+- misc: uniform GitHub action (#5069)
diff --git a/scripts/sql/252_email_lower_case_handling.down.sql b/scripts/sql/252_email_lower_case_handling.down.sql
new file mode 100644
index 0000000000..67ab3f871a
--- /dev/null
+++ b/scripts/sql/252_email_lower_case_handling.down.sql
@@ -0,0 +1 @@
+ALTER TABLE "users" DROP COLUMN "request_email_id";
diff --git a/scripts/sql/252_email_lower_case_handling.up.sql b/scripts/sql/252_email_lower_case_handling.up.sql
new file mode 100644
index 0000000000..ec1b141807
--- /dev/null
+++ b/scripts/sql/252_email_lower_case_handling.up.sql
@@ -0,0 +1,2 @@
+ALTER TABLE "users"
+ ADD COLUMN request_email_id VARCHAR(256);
\ No newline at end of file
diff --git a/test.txt b/test.txt
new file mode 100644
index 0000000000..8b0331137b
--- /dev/null
+++ b/test.txt
@@ -0,0 +1,328 @@
+go: downloading github.com/gorilla/mux v1.8.0
+go: downloading go.uber.org/zap v1.21.0
+go: downloading gopkg.in/go-playground/validator.v9 v9.30.0
+go: downloading github.com/google/wire v0.6.0
+go: downloading github.com/go-pg/pg v6.15.1+incompatible
+go: downloading github.com/gorilla/schema v1.1.0
+go: downloading github.com/argoproj/argo-cd/v2 v2.8.17
+go: downloading github.com/caarlos0/env/v6 v6.7.2
+go: downloading github.com/caarlos0/env v3.5.0+incompatible
+go: downloading github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1
+go: downloading github.com/juju/errors v0.0.0-20200330140219-3fe23663418f
+go: downloading go.opentelemetry.io/otel v1.20.0
+go: downloading github.com/gogo/protobuf v1.3.2
+go: downloading github.com/grpc-ecosystem/grpc-gateway v1.16.0
+go: downloading google.golang.org/grpc v1.59.0
+go: downloading github.com/pkg/errors v0.9.1
+go: downloading github.com/golang/protobuf v1.5.4
+go: downloading go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0
+go: downloading github.com/stretchr/testify v1.8.4
+go: downloading github.com/google/uuid v1.3.1
+go: downloading k8s.io/apimachinery v0.26.4
+go: downloading golang.org/x/oauth2 v0.11.0
+go: downloading google.golang.org/protobuf v1.33.0
+go: downloading k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
+go: downloading github.com/argoproj/argo-workflows/v3 v3.4.3
+go: downloading github.com/evanphx/json-patch v5.6.0+incompatible
+go: downloading github.com/tidwall/gjson v1.14.3
+go: downloading github.com/hashicorp/go-multierror v1.1.1
+go: downloading github.com/tidwall/sjson v1.2.4
+go: downloading sigs.k8s.io/yaml v1.3.0
+go: downloading github.com/casbin/casbin v1.9.1
+go: downloading github.com/casbin/xorm-adapter v1.0.1-0.20190716004226-a317737a1007
+go: downloading github.com/coreos/go-oidc v2.2.1+incompatible
+go: downloading github.com/patrickmn/go-cache v2.1.0+incompatible
+go: downloading github.com/golang-jwt/jwt/v4 v4.5.0
+go: downloading github.com/golang/mock v1.6.0
+go: downloading github.com/gorilla/sessions v1.2.1
+go: downloading github.com/lib/pq v1.10.4
+go: downloading go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.44.0
+go: downloading k8s.io/api v0.26.4
+go: downloading k8s.io/client-go v0.26.4
+go: downloading github.com/robfig/cron/v3 v3.0.1
+go: downloading github.com/prometheus/client_golang v1.16.0
+go: downloading github.com/aws/aws-sdk-go v1.44.290
+go: downloading github.com/google/go-cmp v0.6.0
+go: downloading github.com/otiai10/copy v1.0.2
+go: downloading golang.org/x/exp v0.0.0-20240222234643-814bf88cf225
+go: downloading k8s.io/helm v2.12.3+incompatible
+go: downloading github.com/argoproj/gitops-engine v0.7.1-0.20231013183858-f15cf615b814
+go: downloading github.com/aws/aws-sdk-go-v2/service/ecr v1.20.0
+go: downloading github.com/davecgh/go-spew v1.1.1
+go: downloading github.com/invopop/jsonschema v0.7.0
+go: downloading github.com/xeipuuv/gojsonschema v1.2.0
+go: downloading golang.org/x/crypto v0.21.0
+go: downloading gopkg.in/yaml.v2 v2.4.0
+go: downloading github.com/Pallinder/go-randomdata v1.2.0
+go: downloading github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
+go: downloading github.com/satori/go.uuid v1.2.0
+go: downloading github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534
+go: downloading github.com/posthog/posthog-go v0.0.0-20210610161230-cd4408afb35a
+go: downloading go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0
+go: downloading k8s.io/kubernetes v1.26.11
+go: downloading k8s.io/metrics v0.24.2
+go: downloading github.com/matryer/is v1.4.0
+go: downloading github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098
+go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
+go: downloading github.com/go-playground/universal-translator v0.18.0
+go: downloading github.com/leodido/go-urn v1.2.0
+go: downloading github.com/go-playground/locales v0.14.0
+go: downloading gopkg.in/go-playground/assert.v1 v1.2.1
+go: downloading mellium.im/sasl v0.3.1
+go: downloading github.com/onsi/ginkgo v1.16.5
+go: downloading github.com/onsi/gomega v1.27.10
+go: downloading go.uber.org/atomic v1.10.0
+go: downloading go.uber.org/multierr v1.11.0
+go: downloading go.uber.org/goleak v1.3.0
+go: downloading github.com/Masterminds/semver v1.5.0
+go: downloading k8s.io/kubectl v0.26.4
+go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d
+go: downloading google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d
+go: downloading google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d
+go: downloading gopkg.in/igm/sockjs-go.v3 v3.0.0
+go: downloading go.opentelemetry.io/otel/metric v1.20.0
+go: downloading go.opentelemetry.io/otel/trace v1.20.0
+go: downloading github.com/go-logr/logr v1.3.0
+go: downloading github.com/go-logr/stdr v1.2.2
+go: downloading github.com/pmezard/go-difflib v1.0.0
+go: downloading github.com/stretchr/objx v0.5.0
+go: downloading k8s.io/kube-aggregator v0.26.4
+go: downloading github.com/gammazero/workerpool v1.1.3
+go: downloading github.com/google/gofuzz v1.2.0
+go: downloading github.com/nats-io/nats.go v1.28.0
+go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0
+go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0
+go: downloading go.opentelemetry.io/otel/sdk v1.20.0
+go: downloading github.com/deckarep/golang-set v1.8.0
+go: downloading golang.org/x/net v0.23.0
+go: downloading github.com/google/go-github v17.0.0+incompatible
+go: downloading github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5
+go: downloading github.com/xanzy/go-gitlab v0.86.0
+go: downloading github.com/yannh/kubeconform v0.5.0
+go: downloading github.com/ktrysmt/go-bitbucket v0.9.60
+go: downloading github.com/go-git/go-billy/v5 v5.5.0
+go: downloading github.com/go-git/go-git/v5 v5.11.0
+go: downloading github.com/tidwall/match v1.1.1
+go: downloading github.com/tidwall/pretty v1.2.0
+go: downloading github.com/hashicorp/errwrap v1.0.0
+go: downloading github.com/go-xorm/xorm v0.7.9
+go: downloading github.com/go-sql-driver/mysql v1.6.0
+go: downloading gopkg.in/yaml.v3 v3.0.1
+go: downloading github.com/sirupsen/logrus v1.9.3
+go: downloading github.com/pquerna/cachecontrol v0.1.0
+go: downloading gopkg.in/square/go-jose.v2 v2.6.0
+go: downloading github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible
+go: downloading github.com/gorilla/securecookie v1.1.1
+go: downloading github.com/hashicorp/hcl2 v0.0.0-20191002203319-fb75b3253c80
+go: downloading github.com/zclconf/go-cty v1.13.2
+go: downloading github.com/felixge/httpsnoop v1.0.4
+go: downloading github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
+go: downloading github.com/jinzhu/inflection v1.0.0
+go: downloading github.com/go-resty/resty/v2 v2.7.0
+go: downloading cloud.google.com/go/storage v1.30.1
+go: downloading github.com/Azure/azure-storage-blob-go v0.12.0
+go: downloading github.com/Azure/go-autorest/autorest/adal v0.9.23
+go: downloading github.com/Azure/go-autorest/autorest v0.11.29
+go: downloading google.golang.org/api v0.126.0
+go: downloading github.com/Azure/go-autorest v14.2.0+incompatible
+go: downloading github.com/beorn7/perks v1.0.1
+go: downloading github.com/cespare/xxhash/v2 v2.2.0
+go: downloading github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16
+go: downloading cloud.google.com/go v0.110.7
+go: downloading github.com/prometheus/common v0.42.0
+go: downloading github.com/prometheus/procfs v0.11.1
+go: downloading golang.org/x/sys v0.18.0
+go: downloading k8s.io/klog/v2 v2.100.1
+go: downloading k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f
+go: downloading k8s.io/apiextensions-apiserver v0.26.4
+go: downloading github.com/argoproj/pkg v0.13.7-0.20230627120311-a4dd357b057e
+go: downloading github.com/otiai10/mint v1.3.0
+go: downloading github.com/BurntSushi/toml v0.3.1
+go: downloading github.com/cyphar/filepath-securejoin v0.2.4
+go: downloading github.com/gobwas/glob v0.2.3
+go: downloading github.com/spf13/pflag v1.0.5
+go: downloading sigs.k8s.io/structured-merge-diff/v4 v4.2.3
+go: downloading github.com/aws/smithy-go v1.14.2
+go: downloading github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0
+go: downloading github.com/spf13/cobra v1.7.0
+go: downloading golang.org/x/sync v0.6.0
+go: downloading k8s.io/cli-runtime v0.26.4
+go: downloading github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+go: downloading gopkg.in/inf.v0 v0.9.1
+go: downloading golang.org/x/text v0.14.0
+go: downloading github.com/imdario/mergo v0.3.16
+go: downloading golang.org/x/term v0.18.0
+go: downloading github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
+go: downloading github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c
+go: downloading github.com/google/gnostic v0.6.9
+go: downloading github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e
+go: downloading github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208
+go: downloading github.com/kr/pretty v0.3.1
+go: downloading github.com/benbjohnson/clock v1.1.0
+go: downloading github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4
+go: downloading github.com/gorilla/websocket v1.5.0
+go: downloading github.com/igm/sockjs-go v3.0.0+incompatible
+go: downloading google.golang.org/appengine v1.6.7
+go: downloading sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+go: downloading github.com/gammazero/deque v0.2.0
+go: downloading go.opentelemetry.io/proto/otlp v1.0.0
+go: downloading github.com/json-iterator/go v1.1.12
+go: downloading github.com/klauspost/compress v1.16.7
+go: downloading github.com/nats-io/nkeys v0.4.6
+go: downloading github.com/nats-io/nats-server/v2 v2.9.23
+go: downloading github.com/nats-io/nuid v1.0.1
+go: downloading github.com/google/go-querystring v1.1.0
+go: downloading github.com/mitchellh/mapstructure v1.5.0
+go: downloading github.com/hashicorp/go-cleanhttp v0.5.2
+go: downloading github.com/hashicorp/go-retryablehttp v0.7.4
+go: downloading golang.org/x/time v0.3.0
+go: downloading xorm.io/builder v0.3.6
+go: downloading xorm.io/core v0.7.2
+go: downloading github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4
+go: downloading github.com/mattn/go-sqlite3 v1.10.0
+go: downloading github.com/ziutek/mymysql v1.5.4
+go: downloading dario.cat/mergo v1.0.0
+go: downloading github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371
+go: downloading github.com/sergi/go-diff v1.1.0
+go: downloading github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399
+go: downloading github.com/emirpasic/gods v1.18.1
+go: downloading github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+go: downloading github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a
+go: downloading k8s.io/component-base v0.26.4
+go: downloading github.com/apparentlymart/go-textseg/v13 v13.0.0
+go: downloading github.com/apparentlymart/go-textseg v1.0.0
+go: downloading github.com/agext/levenshtein v1.2.1
+go: downloading github.com/mitchellh/go-wordwrap v1.0.0
+go: downloading github.com/go-test/deep v1.0.3
+go: downloading github.com/kylelemons/godebug v1.1.0
+go: downloading github.com/Azure/go-autorest/logger v0.2.1
+go: downloading github.com/Azure/go-autorest/tracing v0.6.0
+go: downloading github.com/Azure/go-autorest/autorest/mocks v0.4.2
+go: downloading github.com/Azure/go-autorest/autorest/date v0.3.0
+go: downloading github.com/Azure/azure-pipeline-go v0.2.3
+go: downloading github.com/matttproud/golang_protobuf_extensions v1.0.4
+go: downloading cloud.google.com/go/compute/metadata v0.2.3
+go: downloading cloud.google.com/go/compute v1.23.0
+go: downloading cloud.google.com/go/iam v1.1.1
+go: downloading github.com/googleapis/gax-go/v2 v2.11.0
+go: downloading golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2
+go: downloading github.com/bmatcuk/doublestar/v4 v4.6.0
+go: downloading github.com/bradleyfalzon/ghinstallation/v2 v2.5.0
+go: downloading github.com/Masterminds/semver/v3 v3.2.1
+go: downloading oras.land/oras-go/v2 v2.2.0
+go: downloading github.com/alicebob/miniredis/v2 v2.30.3
+go: downloading github.com/redis/go-redis/v9 v9.0.5
+go: downloading github.com/inconshreveable/mousetrap v1.1.0
+go: downloading github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
+go: downloading github.com/jonboulle/clockwork v0.2.2
+go: downloading sigs.k8s.io/kustomize/api v0.12.1
+go: downloading sigs.k8s.io/kustomize/kyaml v0.13.9
+go: downloading k8s.io/component-helpers v0.26.4
+go: downloading github.com/onsi/ginkgo/v2 v2.7.0
+go: downloading github.com/emicklei/go-restful/v3 v3.9.0
+go: downloading github.com/go-openapi/jsonreference v0.20.2
+go: downloading github.com/go-openapi/swag v0.22.3
+go: downloading github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+go: downloading github.com/nxadm/tail v1.4.8
+go: downloading github.com/kr/text v0.2.0
+go: downloading github.com/rogpeppe/go-internal v1.11.0
+go: downloading github.com/jmespath/go-jmespath v0.4.0
+go: downloading github.com/moby/spdystream v0.2.0
+go: downloading github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
+go: downloading github.com/envoyproxy/protoc-gen-validate v1.0.2
+go: downloading github.com/antonmedv/expr v1.12.5
+go: downloading github.com/valyala/fasttemplate v1.2.2
+go: downloading github.com/cenkalti/backoff/v4 v4.2.1
+go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f
+go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+go: downloading github.com/modern-go/reflect2 v1.0.2
+go: downloading github.com/hashicorp/go-hclog v0.9.2
+go: downloading github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a
+go: downloading github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376
+go: downloading github.com/pjbgf/sha1cd v0.3.0
+go: downloading github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
+go: downloading github.com/minio/highwayhash v1.0.2
+go: downloading github.com/nats-io/jwt/v2 v2.2.1-0.20220330180145-442af02fd36a
+go: downloading github.com/chai2010/gettext-go v1.0.2
+go: downloading github.com/MakeNowJust/heredoc v1.0.0
+go: downloading github.com/russross/blackfriday/v2 v2.1.0
+go: downloading github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae
+go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+go: downloading github.com/mattn/go-ieproxy v0.0.1
+go: downloading go.opencensus.io v0.24.0
+go: downloading github.com/kevinburke/ssh_config v1.2.0
+go: downloading github.com/skeema/knownhosts v1.2.1
+go: downloading github.com/xanzy/ssh-agent v0.3.3
+go: downloading github.com/gliderlabs/ssh v0.3.5
+go: downloading github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
+go: downloading github.com/go-redis/cache/v9 v9.0.0
+go: downloading github.com/bombsimon/logrusr/v2 v2.0.1
+go: downloading github.com/google/go-github/v53 v53.0.0
+go: downloading github.com/peterbourgon/diskv v2.0.1+incompatible
+go: downloading github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
+go: downloading github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a
+go: downloading github.com/yuin/gopher-lua v1.1.0
+go: downloading github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d
+go: downloading github.com/fatih/camelcase v1.0.0
+go: downloading github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
+go: downloading github.com/bsm/ginkgo/v2 v2.7.0
+go: downloading github.com/bsm/gomega v1.26.0
+go: downloading github.com/opencontainers/go-digest v1.0.0
+go: downloading github.com/opencontainers/image-spec v1.1.0-rc.3
+go: downloading github.com/go-openapi/jsonpointer v0.19.6
+go: downloading github.com/mailru/easyjson v0.7.7
+go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
+go: downloading upper.io/db.v3 v3.8.0+incompatible
+go: downloading github.com/klauspost/pgzip v1.2.5
+go: downloading github.com/colinmarc/hdfs v1.1.4-0.20180805212432-9746310a4d31
+go: downloading gopkg.in/jcmturner/gokrb5.v5 v5.3.0
+go: downloading github.com/jmespath/go-jmespath/internal/testify v1.5.1
+go: downloading github.com/Masterminds/sprig/v3 v3.2.3
+go: downloading github.com/valyala/bytebufferpool v1.0.0
+go: downloading github.com/jpillora/backoff v1.0.0
+go: downloading github.com/cloudflare/circl v1.3.7
+go: downloading gopkg.in/warnings.v0 v0.1.2
+go: downloading github.com/fvbommel/sortorder v1.0.1
+go: downloading github.com/creack/pty v1.1.11
+go: downloading gotest.tools/v3 v3.0.3
+go: downloading github.com/google/s2a-go v0.1.4
+go: downloading github.com/googleapis/enterprise-certificate-proxy v0.2.3
+go: downloading github.com/google/martian/v3 v3.3.2
+go: downloading github.com/google/martian v2.1.0+incompatible
+go: downloading github.com/Microsoft/go-winio v0.6.1
+go: downloading github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
+go: downloading k8s.io/apiserver v0.26.11
+go: downloading github.com/vmihailenco/go-tinylfu v0.2.2
+go: downloading github.com/vmihailenco/msgpack/v5 v5.3.5
+go: downloading github.com/google/btree v1.1.2
+go: downloading github.com/fsnotify/fsnotify v1.6.0
+go: downloading github.com/josharian/intern v1.0.0
+go: downloading github.com/doublerebel/bellows v0.0.0-20160303004610-f177d92a03d3
+go: downloading github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852
+go: downloading github.com/Masterminds/goutils v1.1.1
+go: downloading github.com/huandu/xstrings v1.3.3
+go: downloading github.com/mitchellh/copystructure v1.2.0
+go: downloading github.com/shopspring/decimal v1.2.0
+go: downloading github.com/spf13/cast v1.5.0
+go: downloading github.com/go-errors/errors v1.4.2
+go: downloading github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+go: downloading github.com/golang/glog v1.1.2
+go: downloading github.com/docker/distribution v2.8.2+incompatible
+go: downloading golang.org/x/tools v0.18.0
+go: downloading github.com/vmihailenco/tagparser/v2 v2.0.0
+go: downloading github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+go: downloading github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
+go: downloading github.com/xlab/treeprint v1.1.0
+go: downloading gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
+go: downloading github.com/mitchellh/reflectwalk v1.0.2
+go: downloading github.com/frankban/quicktest v1.14.3
+go: downloading go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd
+go: downloading golang.org/x/mod v0.15.0
+go: downloading github.com/blang/semver/v4 v4.0.0
+go: downloading github.com/jcmturner/gofork v1.0.0
+go: downloading gopkg.in/jcmturner/dnsutils.v1 v1.0.1
+go: downloading github.com/hashicorp/go-uuid v1.0.2
+go: downloading gopkg.in/jcmturner/goidentity.v2 v2.0.0
+go: downloading gopkg.in/jcmturner/rpc.v0 v0.0.2
+go: downloading gopkg.in/jcmturner/aescts.v1 v1.0.1
diff --git a/test1.txt b/test1.txt
new file mode 100644
index 0000000000..06983c0554
--- /dev/null
+++ b/test1.txt
@@ -0,0 +1,2256 @@
+# cloud.google.com/go v0.110.7
+## explicit; go 1.19
+cloud.google.com/go/internal
+cloud.google.com/go/internal/optional
+cloud.google.com/go/internal/trace
+cloud.google.com/go/internal/version
+# cloud.google.com/go/compute v1.23.0
+## explicit; go 1.19
+cloud.google.com/go/compute/internal
+# cloud.google.com/go/compute/metadata v0.2.3
+## explicit; go 1.19
+cloud.google.com/go/compute/metadata
+# cloud.google.com/go/iam v1.1.1
+## explicit; go 1.19
+cloud.google.com/go/iam
+cloud.google.com/go/iam/apiv1/iampb
+# cloud.google.com/go/storage v1.30.1
+## explicit; go 1.19
+cloud.google.com/go/storage
+cloud.google.com/go/storage/internal
+cloud.google.com/go/storage/internal/apiv2
+cloud.google.com/go/storage/internal/apiv2/stubs
+# dario.cat/mergo v1.0.0
+## explicit; go 1.13
+dario.cat/mergo
+# github.com/Azure/azure-pipeline-go v0.2.3
+## explicit; go 1.14
+github.com/Azure/azure-pipeline-go/pipeline
+# github.com/Azure/azure-storage-blob-go v0.12.0
+## explicit; go 1.15
+github.com/Azure/azure-storage-blob-go/azblob
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+## explicit; go 1.16
+github.com/Azure/go-ansiterm
+github.com/Azure/go-ansiterm/winterm
+# github.com/Azure/go-autorest v14.2.0+incompatible
+## explicit
+github.com/Azure/go-autorest
+# github.com/Azure/go-autorest/autorest v0.11.29
+## explicit; go 1.15
+github.com/Azure/go-autorest/autorest
+github.com/Azure/go-autorest/autorest/azure
+# github.com/Azure/go-autorest/autorest/adal v0.9.23
+## explicit; go 1.15
+github.com/Azure/go-autorest/autorest/adal
+# github.com/Azure/go-autorest/autorest/date v0.3.0
+## explicit; go 1.12
+github.com/Azure/go-autorest/autorest/date
+# github.com/Azure/go-autorest/logger v0.2.1
+## explicit; go 1.12
+github.com/Azure/go-autorest/logger
+# github.com/Azure/go-autorest/tracing v0.6.0
+## explicit; go 1.12
+github.com/Azure/go-autorest/tracing
+# github.com/BurntSushi/toml v0.3.1
+## explicit
+github.com/BurntSushi/toml
+# github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible
+## explicit
+github.com/Knetic/govaluate
+# github.com/MakeNowJust/heredoc v1.0.0
+## explicit; go 1.12
+github.com/MakeNowJust/heredoc
+# github.com/Masterminds/goutils v1.1.1
+## explicit
+github.com/Masterminds/goutils
+# github.com/Masterminds/semver v1.5.0
+## explicit
+github.com/Masterminds/semver
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit; go 1.18
+github.com/Masterminds/semver/v3
+# github.com/Masterminds/sprig/v3 v3.2.3
+## explicit; go 1.13
+github.com/Masterminds/sprig/v3
+# github.com/Microsoft/go-winio v0.6.1
+## explicit; go 1.17
+github.com/Microsoft/go-winio
+github.com/Microsoft/go-winio/internal/fs
+github.com/Microsoft/go-winio/internal/socket
+github.com/Microsoft/go-winio/internal/stringbuffer
+github.com/Microsoft/go-winio/pkg/guid
+# github.com/Pallinder/go-randomdata v1.2.0
+## explicit
+github.com/Pallinder/go-randomdata
+# github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371
+## explicit; go 1.13
+github.com/ProtonMail/go-crypto/bitcurves
+github.com/ProtonMail/go-crypto/brainpool
+github.com/ProtonMail/go-crypto/eax
+github.com/ProtonMail/go-crypto/internal/byteutil
+github.com/ProtonMail/go-crypto/ocb
+github.com/ProtonMail/go-crypto/openpgp
+github.com/ProtonMail/go-crypto/openpgp/aes/keywrap
+github.com/ProtonMail/go-crypto/openpgp/armor
+github.com/ProtonMail/go-crypto/openpgp/ecdh
+github.com/ProtonMail/go-crypto/openpgp/ecdsa
+github.com/ProtonMail/go-crypto/openpgp/eddsa
+github.com/ProtonMail/go-crypto/openpgp/elgamal
+github.com/ProtonMail/go-crypto/openpgp/errors
+github.com/ProtonMail/go-crypto/openpgp/internal/algorithm
+github.com/ProtonMail/go-crypto/openpgp/internal/ecc
+github.com/ProtonMail/go-crypto/openpgp/internal/encoding
+github.com/ProtonMail/go-crypto/openpgp/packet
+github.com/ProtonMail/go-crypto/openpgp/s2k
+# github.com/agext/levenshtein v1.2.1
+## explicit
+github.com/agext/levenshtein
+# github.com/antonmedv/expr v1.12.5
+## explicit; go 1.13
+github.com/antonmedv/expr
+github.com/antonmedv/expr/ast
+github.com/antonmedv/expr/builtin
+github.com/antonmedv/expr/checker
+github.com/antonmedv/expr/compiler
+github.com/antonmedv/expr/conf
+github.com/antonmedv/expr/file
+github.com/antonmedv/expr/optimizer
+github.com/antonmedv/expr/parser
+github.com/antonmedv/expr/parser/lexer
+github.com/antonmedv/expr/vm
+github.com/antonmedv/expr/vm/runtime
+# github.com/apparentlymart/go-textseg v1.0.0
+## explicit
+github.com/apparentlymart/go-textseg/textseg
+# github.com/apparentlymart/go-textseg/v13 v13.0.0
+## explicit; go 1.16
+github.com/apparentlymart/go-textseg/v13/textseg
+# github.com/argoproj/argo-cd/v2 v2.8.17
+## explicit; go 1.19
+github.com/argoproj/argo-cd/v2/common
+github.com/argoproj/argo-cd/v2/pkg/apiclient/account
+github.com/argoproj/argo-cd/v2/pkg/apiclient/application
+github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster
+github.com/argoproj/argo-cd/v2/pkg/apiclient/repository
+github.com/argoproj/argo-cd/v2/pkg/apiclient/session
+github.com/argoproj/argo-cd/v2/pkg/apiclient/version
+github.com/argoproj/argo-cd/v2/pkg/apis/application
+github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1
+github.com/argoproj/argo-cd/v2/reposerver/apiclient
+github.com/argoproj/argo-cd/v2/server/settings/oidc
+github.com/argoproj/argo-cd/v2/util
+github.com/argoproj/argo-cd/v2/util/cache
+github.com/argoproj/argo-cd/v2/util/cert
+github.com/argoproj/argo-cd/v2/util/collections
+github.com/argoproj/argo-cd/v2/util/config
+github.com/argoproj/argo-cd/v2/util/crypto
+github.com/argoproj/argo-cd/v2/util/env
+github.com/argoproj/argo-cd/v2/util/exec
+github.com/argoproj/argo-cd/v2/util/git
+github.com/argoproj/argo-cd/v2/util/glob
+github.com/argoproj/argo-cd/v2/util/grpc
+github.com/argoproj/argo-cd/v2/util/helm
+github.com/argoproj/argo-cd/v2/util/io
+github.com/argoproj/argo-cd/v2/util/io/files
+github.com/argoproj/argo-cd/v2/util/io/path
+github.com/argoproj/argo-cd/v2/util/kube
+github.com/argoproj/argo-cd/v2/util/log
+github.com/argoproj/argo-cd/v2/util/password
+github.com/argoproj/argo-cd/v2/util/proxy
+github.com/argoproj/argo-cd/v2/util/security
+github.com/argoproj/argo-cd/v2/util/settings
+github.com/argoproj/argo-cd/v2/util/tls
+# github.com/argoproj/argo-workflows/v3 v3.4.3
+## explicit; go 1.18
+github.com/argoproj/argo-workflows/v3
+github.com/argoproj/argo-workflows/v3/config
+github.com/argoproj/argo-workflows/v3/errors
+github.com/argoproj/argo-workflows/v3/persist/sqldb
+github.com/argoproj/argo-workflows/v3/pkg/apis/workflow
+github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1
+github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned
+github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned/scheme
+github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned/typed/workflow/v1alpha1
+github.com/argoproj/argo-workflows/v3/util
+github.com/argoproj/argo-workflows/v3/util/cmd
+github.com/argoproj/argo-workflows/v3/util/env
+github.com/argoproj/argo-workflows/v3/util/errors
+github.com/argoproj/argo-workflows/v3/util/expand
+github.com/argoproj/argo-workflows/v3/util/expr/env
+github.com/argoproj/argo-workflows/v3/util/file
+github.com/argoproj/argo-workflows/v3/util/instanceid
+github.com/argoproj/argo-workflows/v3/util/intstr
+github.com/argoproj/argo-workflows/v3/util/json
+github.com/argoproj/argo-workflows/v3/util/k8s
+github.com/argoproj/argo-workflows/v3/util/labels
+github.com/argoproj/argo-workflows/v3/util/retry
+github.com/argoproj/argo-workflows/v3/util/slice
+github.com/argoproj/argo-workflows/v3/util/sorting
+github.com/argoproj/argo-workflows/v3/util/template
+github.com/argoproj/argo-workflows/v3/util/tls
+github.com/argoproj/argo-workflows/v3/util/unstructured
+github.com/argoproj/argo-workflows/v3/util/wait
+github.com/argoproj/argo-workflows/v3/workflow/artifacts/common
+github.com/argoproj/argo-workflows/v3/workflow/artifacts/hdfs
+github.com/argoproj/argo-workflows/v3/workflow/artifacts/resource
+github.com/argoproj/argo-workflows/v3/workflow/common
+github.com/argoproj/argo-workflows/v3/workflow/hydrator
+github.com/argoproj/argo-workflows/v3/workflow/metrics
+github.com/argoproj/argo-workflows/v3/workflow/packer
+github.com/argoproj/argo-workflows/v3/workflow/templateresolution
+github.com/argoproj/argo-workflows/v3/workflow/util
+github.com/argoproj/argo-workflows/v3/workflow/validate
+# github.com/argoproj/gitops-engine v0.7.1-0.20231013183858-f15cf615b814
+## explicit; go 1.19
+github.com/argoproj/gitops-engine/internal/kubernetes_vendor/pkg/api/v1/endpoints
+github.com/argoproj/gitops-engine/internal/kubernetes_vendor/pkg/util/hash
+github.com/argoproj/gitops-engine/pkg/diff
+github.com/argoproj/gitops-engine/pkg/diff/internal/fieldmanager
+github.com/argoproj/gitops-engine/pkg/health
+github.com/argoproj/gitops-engine/pkg/sync/common
+github.com/argoproj/gitops-engine/pkg/sync/resource
+github.com/argoproj/gitops-engine/pkg/utils/io
+github.com/argoproj/gitops-engine/pkg/utils/json
+github.com/argoproj/gitops-engine/pkg/utils/kube
+github.com/argoproj/gitops-engine/pkg/utils/kube/scheme
+github.com/argoproj/gitops-engine/pkg/utils/text
+github.com/argoproj/gitops-engine/pkg/utils/tracing
+# github.com/argoproj/pkg v0.13.7-0.20230627120311-a4dd357b057e
+## explicit; go 1.14
+github.com/argoproj/pkg/exec
+github.com/argoproj/pkg/expr
+github.com/argoproj/pkg/file
+github.com/argoproj/pkg/grpc/http
+github.com/argoproj/pkg/json
+github.com/argoproj/pkg/rand
+github.com/argoproj/pkg/sync
+github.com/argoproj/pkg/time
+# github.com/aws/aws-sdk-go v1.44.290
+## explicit; go 1.11
+github.com/aws/aws-sdk-go/aws
+github.com/aws/aws-sdk-go/aws/arn
+github.com/aws/aws-sdk-go/aws/awserr
+github.com/aws/aws-sdk-go/aws/awsutil
+github.com/aws/aws-sdk-go/aws/client
+github.com/aws/aws-sdk-go/aws/client/metadata
+github.com/aws/aws-sdk-go/aws/corehandlers
+github.com/aws/aws-sdk-go/aws/credentials
+github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
+github.com/aws/aws-sdk-go/aws/credentials/processcreds
+github.com/aws/aws-sdk-go/aws/credentials/ssocreds
+github.com/aws/aws-sdk-go/aws/credentials/stscreds
+github.com/aws/aws-sdk-go/aws/csm
+github.com/aws/aws-sdk-go/aws/defaults
+github.com/aws/aws-sdk-go/aws/ec2metadata
+github.com/aws/aws-sdk-go/aws/endpoints
+github.com/aws/aws-sdk-go/aws/request
+github.com/aws/aws-sdk-go/aws/session
+github.com/aws/aws-sdk-go/aws/signer/v4
+github.com/aws/aws-sdk-go/internal/context
+github.com/aws/aws-sdk-go/internal/ini
+github.com/aws/aws-sdk-go/internal/s3shared
+github.com/aws/aws-sdk-go/internal/s3shared/arn
+github.com/aws/aws-sdk-go/internal/s3shared/s3err
+github.com/aws/aws-sdk-go/internal/sdkio
+github.com/aws/aws-sdk-go/internal/sdkmath
+github.com/aws/aws-sdk-go/internal/sdkrand
+github.com/aws/aws-sdk-go/internal/sdkuri
+github.com/aws/aws-sdk-go/internal/shareddefaults
+github.com/aws/aws-sdk-go/internal/strings
+github.com/aws/aws-sdk-go/internal/sync/singleflight
+github.com/aws/aws-sdk-go/private/checksum
+github.com/aws/aws-sdk-go/private/protocol
+github.com/aws/aws-sdk-go/private/protocol/eventstream
+github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi
+github.com/aws/aws-sdk-go/private/protocol/json/jsonutil
+github.com/aws/aws-sdk-go/private/protocol/jsonrpc
+github.com/aws/aws-sdk-go/private/protocol/query
+github.com/aws/aws-sdk-go/private/protocol/query/queryutil
+github.com/aws/aws-sdk-go/private/protocol/rest
+github.com/aws/aws-sdk-go/private/protocol/restjson
+github.com/aws/aws-sdk-go/private/protocol/restxml
+github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
+github.com/aws/aws-sdk-go/service/autoscaling
+github.com/aws/aws-sdk-go/service/ecr
+github.com/aws/aws-sdk-go/service/s3
+github.com/aws/aws-sdk-go/service/s3/s3iface
+github.com/aws/aws-sdk-go/service/s3/s3manager
+github.com/aws/aws-sdk-go/service/sso
+github.com/aws/aws-sdk-go/service/sso/ssoiface
+github.com/aws/aws-sdk-go/service/sts
+github.com/aws/aws-sdk-go/service/sts/stsiface
+# github.com/aws/aws-sdk-go-v2/service/ecr v1.20.0
+## explicit; go 1.15
+github.com/aws/aws-sdk-go-v2/service/ecr/types
+# github.com/aws/smithy-go v1.14.2
+## explicit; go 1.15
+github.com/aws/smithy-go
+github.com/aws/smithy-go/document
+# github.com/beorn7/perks v1.0.1
+## explicit; go 1.11
+github.com/beorn7/perks/quantile
+# github.com/blang/semver/v4 v4.0.0
+## explicit; go 1.14
+github.com/blang/semver/v4
+# github.com/bmatcuk/doublestar/v4 v4.6.0
+## explicit; go 1.16
+github.com/bmatcuk/doublestar/v4
+# github.com/bombsimon/logrusr/v2 v2.0.1
+## explicit; go 1.13
+github.com/bombsimon/logrusr/v2
+# github.com/bradleyfalzon/ghinstallation/v2 v2.5.0
+## explicit; go 1.13
+github.com/bradleyfalzon/ghinstallation/v2
+# github.com/caarlos0/env v3.5.0+incompatible
+## explicit
+github.com/caarlos0/env
+# github.com/caarlos0/env/v6 v6.7.2
+## explicit; go 1.17
+github.com/caarlos0/env/v6
+# github.com/casbin/casbin v1.9.1
+## explicit
+github.com/casbin/casbin
+github.com/casbin/casbin/config
+github.com/casbin/casbin/effect
+github.com/casbin/casbin/errors
+github.com/casbin/casbin/log
+github.com/casbin/casbin/model
+github.com/casbin/casbin/persist
+github.com/casbin/casbin/persist/file-adapter
+github.com/casbin/casbin/rbac
+github.com/casbin/casbin/rbac/default-role-manager
+github.com/casbin/casbin/util
+# github.com/casbin/xorm-adapter v1.0.1-0.20190716004226-a317737a1007
+## explicit
+github.com/casbin/xorm-adapter
+# github.com/cenkalti/backoff/v4 v4.2.1
+## explicit; go 1.18
+github.com/cenkalti/backoff/v4
+# github.com/cespare/xxhash/v2 v2.2.0
+## explicit; go 1.11
+github.com/cespare/xxhash/v2
+# github.com/chai2010/gettext-go v1.0.2
+## explicit; go 1.14
+github.com/chai2010/gettext-go
+github.com/chai2010/gettext-go/mo
+github.com/chai2010/gettext-go/plural
+github.com/chai2010/gettext-go/po
+# github.com/cloudflare/circl v1.3.7
+## explicit; go 1.19
+github.com/cloudflare/circl/dh/x25519
+github.com/cloudflare/circl/dh/x448
+github.com/cloudflare/circl/ecc/goldilocks
+github.com/cloudflare/circl/internal/conv
+github.com/cloudflare/circl/internal/sha3
+github.com/cloudflare/circl/math
+github.com/cloudflare/circl/math/fp25519
+github.com/cloudflare/circl/math/fp448
+github.com/cloudflare/circl/math/mlsbset
+github.com/cloudflare/circl/sign
+github.com/cloudflare/circl/sign/ed25519
+github.com/cloudflare/circl/sign/ed448
+# github.com/colinmarc/hdfs v1.1.4-0.20180805212432-9746310a4d31
+## explicit
+github.com/colinmarc/hdfs
+github.com/colinmarc/hdfs/protocol/hadoop_common
+github.com/colinmarc/hdfs/protocol/hadoop_hdfs
+github.com/colinmarc/hdfs/rpc
+# github.com/coreos/go-oidc v2.2.1+incompatible
+## explicit
+github.com/coreos/go-oidc
+# github.com/cyphar/filepath-securejoin v0.2.4
+## explicit; go 1.13
+github.com/cyphar/filepath-securejoin
+# github.com/davecgh/go-spew v1.1.1
+## explicit
+github.com/davecgh/go-spew/spew
+# github.com/deckarep/golang-set v1.8.0
+## explicit; go 1.17
+github.com/deckarep/golang-set
+# github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1
+## explicit; go 1.18
+github.com/devtron-labs/authenticator/apiToken
+github.com/devtron-labs/authenticator/client
+github.com/devtron-labs/authenticator/jwt
+github.com/devtron-labs/authenticator/middleware
+github.com/devtron-labs/authenticator/oidc
+github.com/devtron-labs/authenticator/password
+# github.com/devtron-labs/common-lib v0.0.19-0.20240604130458-d06869faacb4
+## explicit; go 1.20
+github.com/devtron-labs/common-lib/blob-storage
+github.com/devtron-labs/common-lib/cloud-provider-identifier
+github.com/devtron-labs/common-lib/cloud-provider-identifier/bean
+github.com/devtron-labs/common-lib/cloud-provider-identifier/providers
+github.com/devtron-labs/common-lib/constants
+github.com/devtron-labs/common-lib/middlewares
+github.com/devtron-labs/common-lib/pubsub-lib
+github.com/devtron-labs/common-lib/pubsub-lib/metrics
+github.com/devtron-labs/common-lib/pubsub-lib/model
+github.com/devtron-labs/common-lib/utils
+github.com/devtron-labs/common-lib/utils/bean
+github.com/devtron-labs/common-lib/utils/http
+github.com/devtron-labs/common-lib/utils/k8s
+github.com/devtron-labs/common-lib/utils/k8s/commonBean
+github.com/devtron-labs/common-lib/utils/k8s/health
+github.com/devtron-labs/common-lib/utils/k8sObjectsUtil
+github.com/devtron-labs/common-lib/utils/remoteConnection/bean
+github.com/devtron-labs/common-lib/utils/yaml
+# github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534
+## explicit; go 1.17
+github.com/devtron-labs/protos/gitSensor
+# github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
+## explicit
+github.com/dgryski/go-rendezvous
+# github.com/docker/distribution v2.8.2+incompatible
+## explicit
+github.com/docker/distribution/digestset
+github.com/docker/distribution/reference
+# github.com/doublerebel/bellows v0.0.0-20160303004610-f177d92a03d3
+## explicit
+github.com/doublerebel/bellows
+# github.com/emicklei/go-restful/v3 v3.9.0
+## explicit; go 1.13
+github.com/emicklei/go-restful/v3
+github.com/emicklei/go-restful/v3/log
+# github.com/emirpasic/gods v1.18.1
+## explicit; go 1.2
+github.com/emirpasic/gods/containers
+github.com/emirpasic/gods/lists
+github.com/emirpasic/gods/lists/arraylist
+github.com/emirpasic/gods/trees
+github.com/emirpasic/gods/trees/binaryheap
+github.com/emirpasic/gods/utils
+# github.com/evanphx/json-patch v5.6.0+incompatible
+## explicit
+github.com/evanphx/json-patch
+# github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d
+## explicit
+github.com/exponent-io/jsonpath
+# github.com/fatih/camelcase v1.0.0
+## explicit
+github.com/fatih/camelcase
+# github.com/felixge/httpsnoop v1.0.4
+## explicit; go 1.13
+github.com/felixge/httpsnoop
+# github.com/fvbommel/sortorder v1.0.1
+## explicit; go 1.13
+github.com/fvbommel/sortorder
+# github.com/gammazero/deque v0.2.0
+## explicit; go 1.18
+github.com/gammazero/deque
+# github.com/gammazero/workerpool v1.1.3
+## explicit; go 1.18
+github.com/gammazero/workerpool
+# github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
+## explicit
+github.com/ghodss/yaml
+# github.com/go-errors/errors v1.4.2
+## explicit; go 1.14
+github.com/go-errors/errors
+# github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376
+## explicit; go 1.13
+github.com/go-git/gcfg
+github.com/go-git/gcfg/scanner
+github.com/go-git/gcfg/token
+github.com/go-git/gcfg/types
+# github.com/go-git/go-billy/v5 v5.5.0
+## explicit; go 1.19
+github.com/go-git/go-billy/v5
+github.com/go-git/go-billy/v5/helper/chroot
+github.com/go-git/go-billy/v5/helper/polyfill
+github.com/go-git/go-billy/v5/memfs
+github.com/go-git/go-billy/v5/osfs
+github.com/go-git/go-billy/v5/util
+# github.com/go-git/go-git/v5 v5.11.0
+## explicit; go 1.19
+github.com/go-git/go-git/v5
+github.com/go-git/go-git/v5/config
+github.com/go-git/go-git/v5/internal/path_util
+github.com/go-git/go-git/v5/internal/revision
+github.com/go-git/go-git/v5/internal/url
+github.com/go-git/go-git/v5/plumbing
+github.com/go-git/go-git/v5/plumbing/cache
+github.com/go-git/go-git/v5/plumbing/color
+github.com/go-git/go-git/v5/plumbing/filemode
+github.com/go-git/go-git/v5/plumbing/format/config
+github.com/go-git/go-git/v5/plumbing/format/diff
+github.com/go-git/go-git/v5/plumbing/format/gitignore
+github.com/go-git/go-git/v5/plumbing/format/idxfile
+github.com/go-git/go-git/v5/plumbing/format/index
+github.com/go-git/go-git/v5/plumbing/format/objfile
+github.com/go-git/go-git/v5/plumbing/format/packfile
+github.com/go-git/go-git/v5/plumbing/format/pktline
+github.com/go-git/go-git/v5/plumbing/hash
+github.com/go-git/go-git/v5/plumbing/object
+github.com/go-git/go-git/v5/plumbing/protocol/packp
+github.com/go-git/go-git/v5/plumbing/protocol/packp/capability
+github.com/go-git/go-git/v5/plumbing/protocol/packp/sideband
+github.com/go-git/go-git/v5/plumbing/revlist
+github.com/go-git/go-git/v5/plumbing/storer
+github.com/go-git/go-git/v5/plumbing/transport
+github.com/go-git/go-git/v5/plumbing/transport/client
+github.com/go-git/go-git/v5/plumbing/transport/file
+github.com/go-git/go-git/v5/plumbing/transport/git
+github.com/go-git/go-git/v5/plumbing/transport/http
+github.com/go-git/go-git/v5/plumbing/transport/internal/common
+github.com/go-git/go-git/v5/plumbing/transport/server
+github.com/go-git/go-git/v5/plumbing/transport/ssh
+github.com/go-git/go-git/v5/storage
+github.com/go-git/go-git/v5/storage/filesystem
+github.com/go-git/go-git/v5/storage/filesystem/dotgit
+github.com/go-git/go-git/v5/storage/memory
+github.com/go-git/go-git/v5/utils/binary
+github.com/go-git/go-git/v5/utils/diff
+github.com/go-git/go-git/v5/utils/ioutil
+github.com/go-git/go-git/v5/utils/merkletrie
+github.com/go-git/go-git/v5/utils/merkletrie/filesystem
+github.com/go-git/go-git/v5/utils/merkletrie/index
+github.com/go-git/go-git/v5/utils/merkletrie/internal/frame
+github.com/go-git/go-git/v5/utils/merkletrie/noder
+github.com/go-git/go-git/v5/utils/sync
+github.com/go-git/go-git/v5/utils/trace
+# github.com/go-logr/logr v1.3.0
+## explicit; go 1.18
+github.com/go-logr/logr
+github.com/go-logr/logr/funcr
+# github.com/go-logr/stdr v1.2.2
+## explicit; go 1.16
+github.com/go-logr/stdr
+# github.com/go-openapi/jsonpointer v0.19.6
+## explicit; go 1.13
+github.com/go-openapi/jsonpointer
+# github.com/go-openapi/jsonreference v0.20.2
+## explicit; go 1.13
+github.com/go-openapi/jsonreference
+github.com/go-openapi/jsonreference/internal
+# github.com/go-openapi/swag v0.22.3
+## explicit; go 1.18
+github.com/go-openapi/swag
+# github.com/go-pg/pg v6.15.1+incompatible
+## explicit
+github.com/go-pg/pg
+github.com/go-pg/pg/internal
+github.com/go-pg/pg/internal/parser
+github.com/go-pg/pg/internal/pool
+github.com/go-pg/pg/orm
+github.com/go-pg/pg/types
+# github.com/go-playground/locales v0.14.0
+## explicit; go 1.13
+github.com/go-playground/locales
+github.com/go-playground/locales/currency
+# github.com/go-playground/universal-translator v0.18.0
+## explicit; go 1.13
+github.com/go-playground/universal-translator
+# github.com/go-redis/cache/v9 v9.0.0
+## explicit; go 1.13
+github.com/go-redis/cache/v9
+# github.com/go-resty/resty/v2 v2.7.0
+## explicit; go 1.11
+github.com/go-resty/resty/v2
+# github.com/go-sql-driver/mysql v1.6.0
+## explicit; go 1.10
+github.com/go-sql-driver/mysql
+# github.com/go-xorm/xorm v0.7.9
+## explicit; go 1.11
+github.com/go-xorm/xorm
+# github.com/gobwas/glob v0.2.3
+## explicit
+github.com/gobwas/glob
+github.com/gobwas/glob/compiler
+github.com/gobwas/glob/match
+github.com/gobwas/glob/syntax
+github.com/gobwas/glob/syntax/ast
+github.com/gobwas/glob/syntax/lexer
+github.com/gobwas/glob/util/runes
+github.com/gobwas/glob/util/strings
+# github.com/gogo/protobuf v1.3.2
+## explicit; go 1.15
+github.com/gogo/protobuf/jsonpb
+github.com/gogo/protobuf/proto
+github.com/gogo/protobuf/sortkeys
+github.com/gogo/protobuf/types
+# github.com/golang-jwt/jwt/v4 v4.5.0
+## explicit; go 1.16
+github.com/golang-jwt/jwt/v4
+# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+## explicit
+github.com/golang/groupcache/lru
+# github.com/golang/mock v1.6.0
+## explicit; go 1.11
+github.com/golang/mock/gomock
+# github.com/golang/protobuf v1.5.4
+## explicit; go 1.17
+github.com/golang/protobuf/descriptor
+github.com/golang/protobuf/jsonpb
+github.com/golang/protobuf/proto
+github.com/golang/protobuf/protoc-gen-go/descriptor
+github.com/golang/protobuf/ptypes
+github.com/golang/protobuf/ptypes/any
+github.com/golang/protobuf/ptypes/duration
+github.com/golang/protobuf/ptypes/empty
+github.com/golang/protobuf/ptypes/timestamp
+github.com/golang/protobuf/ptypes/wrappers
+# github.com/google/btree v1.1.2
+## explicit; go 1.18
+github.com/google/btree
+# github.com/google/gnostic v0.6.9
+## explicit; go 1.12
+github.com/google/gnostic/compiler
+github.com/google/gnostic/extensions
+github.com/google/gnostic/jsonschema
+github.com/google/gnostic/openapiv2
+github.com/google/gnostic/openapiv3
+# github.com/google/go-cmp v0.6.0
+## explicit; go 1.13
+github.com/google/go-cmp/cmp
+github.com/google/go-cmp/cmp/internal/diff
+github.com/google/go-cmp/cmp/internal/flags
+github.com/google/go-cmp/cmp/internal/function
+github.com/google/go-cmp/cmp/internal/value
+# github.com/google/go-github v17.0.0+incompatible
+## explicit
+github.com/google/go-github/github
+# github.com/google/go-github/v53 v53.0.0
+## explicit; go 1.17
+github.com/google/go-github/v53/github
+# github.com/google/go-querystring v1.1.0
+## explicit; go 1.10
+github.com/google/go-querystring/query
+# github.com/google/gofuzz v1.2.0
+## explicit; go 1.12
+github.com/google/gofuzz
+github.com/google/gofuzz/bytesource
+# github.com/google/s2a-go v0.1.4
+## explicit; go 1.16
+github.com/google/s2a-go
+github.com/google/s2a-go/fallback
+github.com/google/s2a-go/internal/authinfo
+github.com/google/s2a-go/internal/handshaker
+github.com/google/s2a-go/internal/handshaker/service
+github.com/google/s2a-go/internal/proto/common_go_proto
+github.com/google/s2a-go/internal/proto/s2a_context_go_proto
+github.com/google/s2a-go/internal/proto/s2a_go_proto
+github.com/google/s2a-go/internal/proto/v2/common_go_proto
+github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto
+github.com/google/s2a-go/internal/proto/v2/s2a_go_proto
+github.com/google/s2a-go/internal/record
+github.com/google/s2a-go/internal/record/internal/aeadcrypter
+github.com/google/s2a-go/internal/record/internal/halfconn
+github.com/google/s2a-go/internal/tokenmanager
+github.com/google/s2a-go/internal/v2
+github.com/google/s2a-go/internal/v2/certverifier
+github.com/google/s2a-go/internal/v2/remotesigner
+github.com/google/s2a-go/internal/v2/tlsconfigstore
+github.com/google/s2a-go/stream
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+## explicit; go 1.13
+github.com/google/shlex
+# github.com/google/uuid v1.3.1
+## explicit
+github.com/google/uuid
+# github.com/google/wire v0.6.0
+## explicit; go 1.12
+github.com/google/wire
+# github.com/googleapis/enterprise-certificate-proxy v0.2.3
+## explicit; go 1.19
+github.com/googleapis/enterprise-certificate-proxy/client
+github.com/googleapis/enterprise-certificate-proxy/client/util
+# github.com/googleapis/gax-go/v2 v2.11.0
+## explicit; go 1.19
+github.com/googleapis/gax-go/v2
+github.com/googleapis/gax-go/v2/apierror
+github.com/googleapis/gax-go/v2/apierror/internal/proto
+github.com/googleapis/gax-go/v2/internal
+# github.com/gorilla/mux v1.8.0
+## explicit; go 1.12
+github.com/gorilla/mux
+# github.com/gorilla/schema v1.1.0
+## explicit
+github.com/gorilla/schema
+# github.com/gorilla/securecookie v1.1.1
+## explicit
+github.com/gorilla/securecookie
+# github.com/gorilla/sessions v1.2.1
+## explicit
+github.com/gorilla/sessions
+# github.com/gorilla/websocket v1.5.0
+## explicit; go 1.12
+github.com/gorilla/websocket
+# github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
+## explicit
+github.com/gregjones/httpcache
+# github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
+## explicit; go 1.14
+github.com/grpc-ecosystem/go-grpc-middleware
+github.com/grpc-ecosystem/go-grpc-middleware/logging
+github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus
+github.com/grpc-ecosystem/go-grpc-middleware/retry
+github.com/grpc-ecosystem/go-grpc-middleware/tags
+github.com/grpc-ecosystem/go-grpc-middleware/tags/logrus
+github.com/grpc-ecosystem/go-grpc-middleware/util/backoffutils
+github.com/grpc-ecosystem/go-grpc-middleware/util/metautils
+# github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
+## explicit
+github.com/grpc-ecosystem/go-grpc-prometheus
+# github.com/grpc-ecosystem/grpc-gateway v1.16.0
+## explicit; go 1.14
+github.com/grpc-ecosystem/grpc-gateway/internal
+github.com/grpc-ecosystem/grpc-gateway/runtime
+github.com/grpc-ecosystem/grpc-gateway/utilities
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+## explicit; go 1.17
+github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule
+github.com/grpc-ecosystem/grpc-gateway/v2/runtime
+github.com/grpc-ecosystem/grpc-gateway/v2/utilities
+# github.com/hashicorp/errwrap v1.0.0
+## explicit
+github.com/hashicorp/errwrap
+# github.com/hashicorp/go-cleanhttp v0.5.2
+## explicit; go 1.13
+github.com/hashicorp/go-cleanhttp
+# github.com/hashicorp/go-multierror v1.1.1
+## explicit; go 1.13
+github.com/hashicorp/go-multierror
+# github.com/hashicorp/go-retryablehttp v0.7.4
+## explicit; go 1.13
+github.com/hashicorp/go-retryablehttp
+# github.com/hashicorp/go-uuid v1.0.2
+## explicit
+github.com/hashicorp/go-uuid
+# github.com/hashicorp/hcl2 v0.0.0-20191002203319-fb75b3253c80
+## explicit
+github.com/hashicorp/hcl2/hcl
+github.com/hashicorp/hcl2/hcl/hclsyntax
+# github.com/huandu/xstrings v1.3.3
+## explicit; go 1.12
+github.com/huandu/xstrings
+# github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0
+## explicit
+github.com/iancoleman/orderedmap
+# github.com/igm/sockjs-go v3.0.0+incompatible
+## explicit
+# github.com/imdario/mergo v0.3.16
+## explicit; go 1.13
+github.com/imdario/mergo
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit; go 1.18
+github.com/inconshreveable/mousetrap
+# github.com/invopop/jsonschema v0.7.0
+## explicit; go 1.16
+github.com/invopop/jsonschema
+# github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
+## explicit
+github.com/jbenet/go-context/io
+# github.com/jcmturner/gofork v1.0.0
+## explicit
+github.com/jcmturner/gofork/encoding/asn1
+github.com/jcmturner/gofork/x/crypto/pbkdf2
+# github.com/jinzhu/inflection v1.0.0
+## explicit
+github.com/jinzhu/inflection
+# github.com/jmespath/go-jmespath v0.4.0
+## explicit; go 1.14
+github.com/jmespath/go-jmespath
+# github.com/jonboulle/clockwork v0.2.2
+## explicit; go 1.13
+github.com/jonboulle/clockwork
+# github.com/josharian/intern v1.0.0
+## explicit; go 1.5
+github.com/josharian/intern
+# github.com/json-iterator/go v1.1.12
+## explicit; go 1.12
+github.com/json-iterator/go
+# github.com/juju/errors v0.0.0-20200330140219-3fe23663418f
+## explicit
+github.com/juju/errors
+# github.com/juju/testing v0.0.0-20210324180055-18c50b0c2098
+## explicit; go 1.14
+# github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
+## explicit
+github.com/kballard/go-shellquote
+# github.com/kevinburke/ssh_config v1.2.0
+## explicit
+github.com/kevinburke/ssh_config
+# github.com/klauspost/compress v1.16.7
+## explicit; go 1.18
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/s2
+# github.com/klauspost/pgzip v1.2.5
+## explicit
+github.com/klauspost/pgzip
+# github.com/ktrysmt/go-bitbucket v0.9.60
+## explicit; go 1.14
+github.com/ktrysmt/go-bitbucket
+# github.com/leodido/go-urn v1.2.0
+## explicit; go 1.13
+github.com/leodido/go-urn
+# github.com/lib/pq v1.10.4
+## explicit; go 1.13
+github.com/lib/pq
+github.com/lib/pq/oid
+github.com/lib/pq/scram
+# github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
+## explicit
+github.com/liggitt/tabwriter
+# github.com/mailru/easyjson v0.7.7
+## explicit; go 1.12
+github.com/mailru/easyjson/buffer
+github.com/mailru/easyjson/jlexer
+github.com/mailru/easyjson/jwriter
+# github.com/mattn/go-ieproxy v0.0.1
+## explicit; go 1.14
+github.com/mattn/go-ieproxy
+# github.com/matttproud/golang_protobuf_extensions v1.0.4
+## explicit; go 1.9
+github.com/matttproud/golang_protobuf_extensions/pbutil
+# github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5
+## explicit; go 1.12
+github.com/microsoft/azure-devops-go-api/azuredevops
+github.com/microsoft/azure-devops-go-api/azuredevops/core
+github.com/microsoft/azure-devops-go-api/azuredevops/delegatedauthorization
+github.com/microsoft/azure-devops-go-api/azuredevops/git
+github.com/microsoft/azure-devops-go-api/azuredevops/identity
+github.com/microsoft/azure-devops-go-api/azuredevops/operations
+github.com/microsoft/azure-devops-go-api/azuredevops/policy
+github.com/microsoft/azure-devops-go-api/azuredevops/system
+github.com/microsoft/azure-devops-go-api/azuredevops/webapi
+# github.com/minio/highwayhash v1.0.2
+## explicit; go 1.15
+# github.com/mitchellh/copystructure v1.2.0
+## explicit; go 1.15
+github.com/mitchellh/copystructure
+# github.com/mitchellh/go-wordwrap v1.0.0
+## explicit
+github.com/mitchellh/go-wordwrap
+# github.com/mitchellh/mapstructure v1.5.0
+## explicit; go 1.14
+github.com/mitchellh/mapstructure
+# github.com/mitchellh/reflectwalk v1.0.2
+## explicit
+github.com/mitchellh/reflectwalk
+# github.com/moby/spdystream v0.2.0
+## explicit; go 1.13
+github.com/moby/spdystream
+github.com/moby/spdystream/spdy
+# github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae
+## explicit; go 1.13
+github.com/moby/term
+github.com/moby/term/windows
+# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+## explicit
+github.com/modern-go/concurrent
+# github.com/modern-go/reflect2 v1.0.2
+## explicit; go 1.12
+github.com/modern-go/reflect2
+# github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
+## explicit
+github.com/monochromegane/go-gitignore
+# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+## explicit
+github.com/munnerz/goautoneg
+# github.com/nats-io/jwt/v2 v2.2.1-0.20220330180145-442af02fd36a
+## explicit; go 1.16
+# github.com/nats-io/nats.go v1.28.0
+## explicit; go 1.19
+github.com/nats-io/nats.go
+github.com/nats-io/nats.go/encoders/builtin
+github.com/nats-io/nats.go/internal/parser
+github.com/nats-io/nats.go/util
+# github.com/nats-io/nkeys v0.4.6
+## explicit; go 1.19
+github.com/nats-io/nkeys
+# github.com/nats-io/nuid v1.0.1
+## explicit
+github.com/nats-io/nuid
+# github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852
+## explicit
+github.com/oliveagle/jsonpath
+# github.com/opencontainers/go-digest v1.0.0
+## explicit; go 1.13
+github.com/opencontainers/go-digest
+# github.com/opencontainers/image-spec v1.1.0-rc.3
+## explicit; go 1.18
+github.com/opencontainers/image-spec/specs-go
+github.com/opencontainers/image-spec/specs-go/v1
+# github.com/otiai10/copy v1.0.2
+## explicit; go 1.12
+github.com/otiai10/copy
+# github.com/patrickmn/go-cache v2.1.0+incompatible
+## explicit
+github.com/patrickmn/go-cache
+# github.com/peterbourgon/diskv v2.0.1+incompatible
+## explicit
+github.com/peterbourgon/diskv
+# github.com/pjbgf/sha1cd v0.3.0
+## explicit; go 1.19
+github.com/pjbgf/sha1cd
+github.com/pjbgf/sha1cd/internal
+github.com/pjbgf/sha1cd/ubc
+# github.com/pkg/errors v0.9.1
+## explicit
+github.com/pkg/errors
+# github.com/pmezard/go-difflib v1.0.0
+## explicit
+github.com/pmezard/go-difflib/difflib
+# github.com/posthog/posthog-go v0.0.0-20210610161230-cd4408afb35a
+## explicit; go 1.15
+github.com/posthog/posthog-go
+# github.com/pquerna/cachecontrol v0.1.0
+## explicit; go 1.16
+github.com/pquerna/cachecontrol
+github.com/pquerna/cachecontrol/cacheobject
+# github.com/prometheus/client_golang v1.16.0
+## explicit; go 1.17
+github.com/prometheus/client_golang/api
+github.com/prometheus/client_golang/api/prometheus/v1
+github.com/prometheus/client_golang/prometheus
+github.com/prometheus/client_golang/prometheus/collectors
+github.com/prometheus/client_golang/prometheus/internal
+github.com/prometheus/client_golang/prometheus/promauto
+github.com/prometheus/client_golang/prometheus/promhttp
+# github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16
+## explicit; go 1.18
+github.com/prometheus/client_model/go
+# github.com/prometheus/common v0.42.0
+## explicit; go 1.18
+github.com/prometheus/common/expfmt
+github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg
+github.com/prometheus/common/model
+# github.com/prometheus/procfs v0.11.1
+## explicit; go 1.19
+github.com/prometheus/procfs
+github.com/prometheus/procfs/internal/fs
+github.com/prometheus/procfs/internal/util
+# github.com/redis/go-redis/v9 v9.0.5
+## explicit; go 1.18
+github.com/redis/go-redis/v9
+github.com/redis/go-redis/v9/internal
+github.com/redis/go-redis/v9/internal/hashtag
+github.com/redis/go-redis/v9/internal/hscan
+github.com/redis/go-redis/v9/internal/pool
+github.com/redis/go-redis/v9/internal/proto
+github.com/redis/go-redis/v9/internal/rand
+github.com/redis/go-redis/v9/internal/util
+# github.com/robfig/cron/v3 v3.0.1
+## explicit; go 1.12
+github.com/robfig/cron/v3
+# github.com/russross/blackfriday/v2 v2.1.0
+## explicit
+github.com/russross/blackfriday/v2
+# github.com/satori/go.uuid v1.2.0
+## explicit
+github.com/satori/go.uuid
+# github.com/sergi/go-diff v1.1.0
+## explicit; go 1.12
+github.com/sergi/go-diff/diffmatchpatch
+# github.com/shopspring/decimal v1.2.0
+## explicit; go 1.13
+github.com/shopspring/decimal
+# github.com/sirupsen/logrus v1.9.3
+## explicit; go 1.13
+github.com/sirupsen/logrus
+# github.com/skeema/knownhosts v1.2.1
+## explicit; go 1.17
+github.com/skeema/knownhosts
+# github.com/spf13/cast v1.5.0
+## explicit; go 1.18
+github.com/spf13/cast
+# github.com/spf13/cobra v1.7.0
+## explicit; go 1.15
+github.com/spf13/cobra
+# github.com/spf13/pflag v1.0.5
+## explicit; go 1.12
+github.com/spf13/pflag
+# github.com/stretchr/objx v0.5.0
+## explicit; go 1.12
+github.com/stretchr/objx
+# github.com/stretchr/testify v1.8.4
+## explicit; go 1.20
+github.com/stretchr/testify/assert
+github.com/stretchr/testify/mock
+# github.com/tidwall/gjson v1.14.3
+## explicit; go 1.12
+github.com/tidwall/gjson
+# github.com/tidwall/match v1.1.1
+## explicit; go 1.15
+github.com/tidwall/match
+# github.com/tidwall/pretty v1.2.0
+## explicit; go 1.16
+github.com/tidwall/pretty
+# github.com/tidwall/sjson v1.2.4
+## explicit; go 1.14
+github.com/tidwall/sjson
+# github.com/valyala/bytebufferpool v1.0.0
+## explicit
+github.com/valyala/bytebufferpool
+# github.com/valyala/fasttemplate v1.2.2
+## explicit; go 1.12
+github.com/valyala/fasttemplate
+# github.com/vmihailenco/go-tinylfu v0.2.2
+## explicit; go 1.15
+github.com/vmihailenco/go-tinylfu
+# github.com/vmihailenco/msgpack/v5 v5.3.5
+## explicit; go 1.11
+github.com/vmihailenco/msgpack/v5
+github.com/vmihailenco/msgpack/v5/msgpcode
+# github.com/vmihailenco/tagparser/v2 v2.0.0
+## explicit; go 1.15
+github.com/vmihailenco/tagparser/v2
+github.com/vmihailenco/tagparser/v2/internal
+github.com/vmihailenco/tagparser/v2/internal/parser
+# github.com/xanzy/go-gitlab v0.86.0
+## explicit; go 1.18
+github.com/xanzy/go-gitlab
+# github.com/xanzy/ssh-agent v0.3.3
+## explicit; go 1.16
+github.com/xanzy/ssh-agent
+# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+## explicit
+github.com/xeipuuv/gojsonpointer
+# github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+## explicit
+github.com/xeipuuv/gojsonreference
+# github.com/xeipuuv/gojsonschema v1.2.0
+## explicit
+github.com/xeipuuv/gojsonschema
+# github.com/xlab/treeprint v1.1.0
+## explicit; go 1.13
+github.com/xlab/treeprint
+# github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c
+## explicit
+github.com/xtgo/uuid
+# github.com/yannh/kubeconform v0.5.0
+## explicit; go 1.17
+github.com/yannh/kubeconform/pkg/cache
+github.com/yannh/kubeconform/pkg/registry
+github.com/yannh/kubeconform/pkg/resource
+github.com/yannh/kubeconform/pkg/validator
+# github.com/zclconf/go-cty v1.13.2
+## explicit; go 1.18
+github.com/zclconf/go-cty/cty
+github.com/zclconf/go-cty/cty/convert
+github.com/zclconf/go-cty/cty/ctystrings
+github.com/zclconf/go-cty/cty/function
+github.com/zclconf/go-cty/cty/function/stdlib
+github.com/zclconf/go-cty/cty/gocty
+github.com/zclconf/go-cty/cty/json
+github.com/zclconf/go-cty/cty/set
+# go.opencensus.io v0.24.0
+## explicit; go 1.13
+go.opencensus.io
+go.opencensus.io/internal
+go.opencensus.io/internal/tagencoding
+go.opencensus.io/metric/metricdata
+go.opencensus.io/metric/metricproducer
+go.opencensus.io/plugin/ocgrpc
+go.opencensus.io/plugin/ochttp
+go.opencensus.io/plugin/ochttp/propagation/b3
+go.opencensus.io/resource
+go.opencensus.io/stats
+go.opencensus.io/stats/internal
+go.opencensus.io/stats/view
+go.opencensus.io/tag
+go.opencensus.io/trace
+go.opencensus.io/trace/internal
+go.opencensus.io/trace/propagation
+go.opencensus.io/trace/tracestate
+# go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.44.0
+## explicit; go 1.19
+go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux
+go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux/internal/semconvutil
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0
+## explicit; go 1.20
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0
+## explicit; go 1.19
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
+# go.opentelemetry.io/otel v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel
+go.opentelemetry.io/otel/attribute
+go.opentelemetry.io/otel/baggage
+go.opentelemetry.io/otel/codes
+go.opentelemetry.io/otel/internal
+go.opentelemetry.io/otel/internal/attribute
+go.opentelemetry.io/otel/internal/baggage
+go.opentelemetry.io/otel/internal/global
+go.opentelemetry.io/otel/propagation
+go.opentelemetry.io/otel/semconv/internal
+go.opentelemetry.io/otel/semconv/v1.17.0
+go.opentelemetry.io/otel/semconv/v1.21.0
+go.opentelemetry.io/otel/semconv/v1.4.0
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel/exporters/otlp/otlptrace
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry
+# go.opentelemetry.io/otel/metric v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel/metric
+go.opentelemetry.io/otel/metric/embedded
+# go.opentelemetry.io/otel/sdk v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel/sdk
+go.opentelemetry.io/otel/sdk/instrumentation
+go.opentelemetry.io/otel/sdk/internal
+go.opentelemetry.io/otel/sdk/internal/env
+go.opentelemetry.io/otel/sdk/resource
+go.opentelemetry.io/otel/sdk/trace
+# go.opentelemetry.io/otel/trace v1.20.0
+## explicit; go 1.20
+go.opentelemetry.io/otel/trace
+go.opentelemetry.io/otel/trace/embedded
+go.opentelemetry.io/otel/trace/noop
+# go.opentelemetry.io/proto/otlp v1.0.0
+## explicit; go 1.17
+go.opentelemetry.io/proto/otlp/collector/trace/v1
+go.opentelemetry.io/proto/otlp/common/v1
+go.opentelemetry.io/proto/otlp/resource/v1
+go.opentelemetry.io/proto/otlp/trace/v1
+# go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd
+## explicit; go 1.13
+go.starlark.net/internal/compile
+go.starlark.net/internal/spell
+go.starlark.net/resolve
+go.starlark.net/starlark
+go.starlark.net/starlarkstruct
+go.starlark.net/syntax
+# go.uber.org/atomic v1.10.0
+## explicit; go 1.18
+go.uber.org/atomic
+# go.uber.org/multierr v1.11.0
+## explicit; go 1.19
+go.uber.org/multierr
+# go.uber.org/zap v1.21.0
+## explicit; go 1.13
+go.uber.org/zap
+go.uber.org/zap/buffer
+go.uber.org/zap/internal/bufferpool
+go.uber.org/zap/internal/color
+go.uber.org/zap/internal/exit
+go.uber.org/zap/zapcore
+# golang.org/x/crypto v0.21.0
+## explicit; go 1.18
+golang.org/x/crypto/argon2
+golang.org/x/crypto/bcrypt
+golang.org/x/crypto/blake2b
+golang.org/x/crypto/blowfish
+golang.org/x/crypto/cast5
+golang.org/x/crypto/chacha20
+golang.org/x/crypto/chacha20poly1305
+golang.org/x/crypto/cryptobyte
+golang.org/x/crypto/cryptobyte/asn1
+golang.org/x/crypto/curve25519
+golang.org/x/crypto/curve25519/internal/field
+golang.org/x/crypto/ed25519
+golang.org/x/crypto/hkdf
+golang.org/x/crypto/internal/alias
+golang.org/x/crypto/internal/poly1305
+golang.org/x/crypto/md4
+golang.org/x/crypto/nacl/box
+golang.org/x/crypto/nacl/secretbox
+golang.org/x/crypto/openpgp
+golang.org/x/crypto/openpgp/armor
+golang.org/x/crypto/openpgp/clearsign
+golang.org/x/crypto/openpgp/elgamal
+golang.org/x/crypto/openpgp/errors
+golang.org/x/crypto/openpgp/packet
+golang.org/x/crypto/openpgp/s2k
+golang.org/x/crypto/pbkdf2
+golang.org/x/crypto/pkcs12
+golang.org/x/crypto/pkcs12/internal/rc2
+golang.org/x/crypto/salsa20/salsa
+golang.org/x/crypto/scrypt
+golang.org/x/crypto/sha3
+golang.org/x/crypto/ssh
+golang.org/x/crypto/ssh/agent
+golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
+golang.org/x/crypto/ssh/knownhosts
+# golang.org/x/exp v0.0.0-20240222234643-814bf88cf225
+## explicit; go 1.20
+golang.org/x/exp/constraints
+golang.org/x/exp/maps
+golang.org/x/exp/slices
+# golang.org/x/mod v0.15.0
+## explicit; go 1.18
+golang.org/x/mod/semver
+# golang.org/x/net v0.23.0
+## explicit; go 1.18
+golang.org/x/net/context
+golang.org/x/net/http/httpguts
+golang.org/x/net/http/httpproxy
+golang.org/x/net/http2
+golang.org/x/net/http2/hpack
+golang.org/x/net/idna
+golang.org/x/net/internal/socks
+golang.org/x/net/internal/timeseries
+golang.org/x/net/proxy
+golang.org/x/net/publicsuffix
+golang.org/x/net/trace
+# golang.org/x/oauth2 v0.11.0
+## explicit; go 1.18
+golang.org/x/oauth2
+golang.org/x/oauth2/authhandler
+golang.org/x/oauth2/bitbucket
+golang.org/x/oauth2/clientcredentials
+golang.org/x/oauth2/google
+golang.org/x/oauth2/google/internal/externalaccount
+golang.org/x/oauth2/internal
+golang.org/x/oauth2/jws
+golang.org/x/oauth2/jwt
+# golang.org/x/sync v0.6.0
+## explicit; go 1.18
+golang.org/x/sync/errgroup
+golang.org/x/sync/semaphore
+golang.org/x/sync/singleflight
+# golang.org/x/sys v0.18.0
+## explicit; go 1.18
+golang.org/x/sys/cpu
+golang.org/x/sys/execabs
+golang.org/x/sys/plan9
+golang.org/x/sys/unix
+golang.org/x/sys/windows
+golang.org/x/sys/windows/registry
+# golang.org/x/term v0.18.0
+## explicit; go 1.18
+golang.org/x/term
+# golang.org/x/text v0.14.0
+## explicit; go 1.18
+golang.org/x/text/encoding
+golang.org/x/text/encoding/internal
+golang.org/x/text/encoding/internal/identifier
+golang.org/x/text/encoding/unicode
+golang.org/x/text/internal/utf8internal
+golang.org/x/text/runes
+golang.org/x/text/secure/bidirule
+golang.org/x/text/transform
+golang.org/x/text/unicode/bidi
+golang.org/x/text/unicode/norm
+# golang.org/x/time v0.3.0
+## explicit
+golang.org/x/time/rate
+# golang.org/x/tools v0.18.0
+## explicit; go 1.18
+golang.org/x/tools/cmd/stringer
+golang.org/x/tools/go/gcexportdata
+golang.org/x/tools/go/internal/packagesdriver
+golang.org/x/tools/go/packages
+golang.org/x/tools/go/types/objectpath
+golang.org/x/tools/internal/event
+golang.org/x/tools/internal/event/core
+golang.org/x/tools/internal/event/keys
+golang.org/x/tools/internal/event/label
+golang.org/x/tools/internal/event/tag
+golang.org/x/tools/internal/gcimporter
+golang.org/x/tools/internal/gocommand
+golang.org/x/tools/internal/packagesinternal
+golang.org/x/tools/internal/pkgbits
+golang.org/x/tools/internal/tokeninternal
+golang.org/x/tools/internal/typeparams
+golang.org/x/tools/internal/typesinternal
+golang.org/x/tools/internal/versions
+# golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2
+## explicit; go 1.17
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
+# google.golang.org/api v0.126.0
+## explicit; go 1.19
+google.golang.org/api/googleapi
+google.golang.org/api/googleapi/transport
+google.golang.org/api/iamcredentials/v1
+google.golang.org/api/internal
+google.golang.org/api/internal/cert
+google.golang.org/api/internal/gensupport
+google.golang.org/api/internal/impersonate
+google.golang.org/api/internal/third_party/uritemplates
+google.golang.org/api/iterator
+google.golang.org/api/option
+google.golang.org/api/option/internaloption
+google.golang.org/api/storage/v1
+google.golang.org/api/transport
+google.golang.org/api/transport/grpc
+google.golang.org/api/transport/http
+google.golang.org/api/transport/http/internal/propagation
+# google.golang.org/appengine v1.6.7
+## explicit; go 1.11
+google.golang.org/appengine
+google.golang.org/appengine/internal
+google.golang.org/appengine/internal/app_identity
+google.golang.org/appengine/internal/base
+google.golang.org/appengine/internal/datastore
+google.golang.org/appengine/internal/log
+google.golang.org/appengine/internal/modules
+google.golang.org/appengine/internal/remote_api
+google.golang.org/appengine/internal/socket
+google.golang.org/appengine/internal/urlfetch
+google.golang.org/appengine/socket
+google.golang.org/appengine/urlfetch
+# google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d
+## explicit; go 1.19
+google.golang.org/genproto/googleapis/type/date
+google.golang.org/genproto/googleapis/type/expr
+google.golang.org/genproto/internal
+google.golang.org/genproto/protobuf/field_mask
+# google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d
+## explicit; go 1.19
+google.golang.org/genproto/googleapis/api
+google.golang.org/genproto/googleapis/api/annotations
+google.golang.org/genproto/googleapis/api/httpbody
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d
+## explicit; go 1.19
+google.golang.org/genproto/googleapis/rpc/code
+google.golang.org/genproto/googleapis/rpc/errdetails
+google.golang.org/genproto/googleapis/rpc/status
+# google.golang.org/grpc v1.59.0
+## explicit; go 1.19
+google.golang.org/grpc
+google.golang.org/grpc/attributes
+google.golang.org/grpc/backoff
+google.golang.org/grpc/balancer
+google.golang.org/grpc/balancer/base
+google.golang.org/grpc/balancer/grpclb
+google.golang.org/grpc/balancer/grpclb/grpc_lb_v1
+google.golang.org/grpc/balancer/grpclb/state
+google.golang.org/grpc/balancer/roundrobin
+google.golang.org/grpc/binarylog/grpc_binarylog_v1
+google.golang.org/grpc/channelz
+google.golang.org/grpc/codes
+google.golang.org/grpc/connectivity
+google.golang.org/grpc/credentials
+google.golang.org/grpc/credentials/alts
+google.golang.org/grpc/credentials/alts/internal
+google.golang.org/grpc/credentials/alts/internal/authinfo
+google.golang.org/grpc/credentials/alts/internal/conn
+google.golang.org/grpc/credentials/alts/internal/handshaker
+google.golang.org/grpc/credentials/alts/internal/handshaker/service
+google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp
+google.golang.org/grpc/credentials/google
+google.golang.org/grpc/credentials/insecure
+google.golang.org/grpc/credentials/oauth
+google.golang.org/grpc/encoding
+google.golang.org/grpc/encoding/gzip
+google.golang.org/grpc/encoding/proto
+google.golang.org/grpc/grpclog
+google.golang.org/grpc/health/grpc_health_v1
+google.golang.org/grpc/internal
+google.golang.org/grpc/internal/backoff
+google.golang.org/grpc/internal/balancer/gracefulswitch
+google.golang.org/grpc/internal/balancerload
+google.golang.org/grpc/internal/binarylog
+google.golang.org/grpc/internal/buffer
+google.golang.org/grpc/internal/channelz
+google.golang.org/grpc/internal/credentials
+google.golang.org/grpc/internal/envconfig
+google.golang.org/grpc/internal/googlecloud
+google.golang.org/grpc/internal/grpclog
+google.golang.org/grpc/internal/grpcrand
+google.golang.org/grpc/internal/grpcsync
+google.golang.org/grpc/internal/grpcutil
+google.golang.org/grpc/internal/idle
+google.golang.org/grpc/internal/metadata
+google.golang.org/grpc/internal/pretty
+google.golang.org/grpc/internal/resolver
+google.golang.org/grpc/internal/resolver/dns
+google.golang.org/grpc/internal/resolver/passthrough
+google.golang.org/grpc/internal/resolver/unix
+google.golang.org/grpc/internal/serviceconfig
+google.golang.org/grpc/internal/status
+google.golang.org/grpc/internal/syscall
+google.golang.org/grpc/internal/transport
+google.golang.org/grpc/internal/transport/networktype
+google.golang.org/grpc/keepalive
+google.golang.org/grpc/metadata
+google.golang.org/grpc/peer
+google.golang.org/grpc/resolver
+google.golang.org/grpc/resolver/manual
+google.golang.org/grpc/serviceconfig
+google.golang.org/grpc/stats
+google.golang.org/grpc/status
+google.golang.org/grpc/tap
+# google.golang.org/protobuf v1.33.0
+## explicit; go 1.17
+google.golang.org/protobuf/encoding/protojson
+google.golang.org/protobuf/encoding/prototext
+google.golang.org/protobuf/encoding/protowire
+google.golang.org/protobuf/internal/descfmt
+google.golang.org/protobuf/internal/descopts
+google.golang.org/protobuf/internal/detrand
+google.golang.org/protobuf/internal/editiondefaults
+google.golang.org/protobuf/internal/encoding/defval
+google.golang.org/protobuf/internal/encoding/json
+google.golang.org/protobuf/internal/encoding/messageset
+google.golang.org/protobuf/internal/encoding/tag
+google.golang.org/protobuf/internal/encoding/text
+google.golang.org/protobuf/internal/errors
+google.golang.org/protobuf/internal/filedesc
+google.golang.org/protobuf/internal/filetype
+google.golang.org/protobuf/internal/flags
+google.golang.org/protobuf/internal/genid
+google.golang.org/protobuf/internal/impl
+google.golang.org/protobuf/internal/order
+google.golang.org/protobuf/internal/pragma
+google.golang.org/protobuf/internal/set
+google.golang.org/protobuf/internal/strs
+google.golang.org/protobuf/internal/version
+google.golang.org/protobuf/proto
+google.golang.org/protobuf/reflect/protodesc
+google.golang.org/protobuf/reflect/protoreflect
+google.golang.org/protobuf/reflect/protoregistry
+google.golang.org/protobuf/runtime/protoiface
+google.golang.org/protobuf/runtime/protoimpl
+google.golang.org/protobuf/types/descriptorpb
+google.golang.org/protobuf/types/gofeaturespb
+google.golang.org/protobuf/types/known/anypb
+google.golang.org/protobuf/types/known/durationpb
+google.golang.org/protobuf/types/known/emptypb
+google.golang.org/protobuf/types/known/fieldmaskpb
+google.golang.org/protobuf/types/known/structpb
+google.golang.org/protobuf/types/known/timestamppb
+google.golang.org/protobuf/types/known/wrapperspb
+# gopkg.in/go-playground/assert.v1 v1.2.1
+## explicit
+# gopkg.in/go-playground/validator.v9 v9.30.0
+## explicit
+gopkg.in/go-playground/validator.v9
+# gopkg.in/igm/sockjs-go.v3 v3.0.0
+## explicit
+gopkg.in/igm/sockjs-go.v3/sockjs
+# gopkg.in/inf.v0 v0.9.1
+## explicit
+gopkg.in/inf.v0
+# gopkg.in/jcmturner/aescts.v1 v1.0.1
+## explicit
+gopkg.in/jcmturner/aescts.v1
+# gopkg.in/jcmturner/dnsutils.v1 v1.0.1
+## explicit
+gopkg.in/jcmturner/dnsutils.v1
+# gopkg.in/jcmturner/goidentity.v2 v2.0.0
+## explicit
+# gopkg.in/jcmturner/gokrb5.v5 v5.3.0
+## explicit
+gopkg.in/jcmturner/gokrb5.v5/asn1tools
+gopkg.in/jcmturner/gokrb5.v5/client
+gopkg.in/jcmturner/gokrb5.v5/config
+gopkg.in/jcmturner/gokrb5.v5/credentials
+gopkg.in/jcmturner/gokrb5.v5/crypto
+gopkg.in/jcmturner/gokrb5.v5/crypto/common
+gopkg.in/jcmturner/gokrb5.v5/crypto/etype
+gopkg.in/jcmturner/gokrb5.v5/crypto/rfc3961
+gopkg.in/jcmturner/gokrb5.v5/crypto/rfc3962
+gopkg.in/jcmturner/gokrb5.v5/crypto/rfc4757
+gopkg.in/jcmturner/gokrb5.v5/crypto/rfc8009
+gopkg.in/jcmturner/gokrb5.v5/gssapi
+gopkg.in/jcmturner/gokrb5.v5/iana
+gopkg.in/jcmturner/gokrb5.v5/iana/addrtype
+gopkg.in/jcmturner/gokrb5.v5/iana/adtype
+gopkg.in/jcmturner/gokrb5.v5/iana/asnAppTag
+gopkg.in/jcmturner/gokrb5.v5/iana/chksumtype
+gopkg.in/jcmturner/gokrb5.v5/iana/errorcode
+gopkg.in/jcmturner/gokrb5.v5/iana/etypeID
+gopkg.in/jcmturner/gokrb5.v5/iana/flags
+gopkg.in/jcmturner/gokrb5.v5/iana/keyusage
+gopkg.in/jcmturner/gokrb5.v5/iana/msgtype
+gopkg.in/jcmturner/gokrb5.v5/iana/nametype
+gopkg.in/jcmturner/gokrb5.v5/iana/patype
+gopkg.in/jcmturner/gokrb5.v5/kadmin
+gopkg.in/jcmturner/gokrb5.v5/keytab
+gopkg.in/jcmturner/gokrb5.v5/krberror
+gopkg.in/jcmturner/gokrb5.v5/messages
+gopkg.in/jcmturner/gokrb5.v5/mstypes
+gopkg.in/jcmturner/gokrb5.v5/pac
+gopkg.in/jcmturner/gokrb5.v5/types
+# gopkg.in/jcmturner/rpc.v0 v0.0.2
+## explicit
+gopkg.in/jcmturner/rpc.v0/ndr
+# gopkg.in/square/go-jose.v2 v2.6.0
+## explicit
+gopkg.in/square/go-jose.v2
+gopkg.in/square/go-jose.v2/cipher
+gopkg.in/square/go-jose.v2/json
+# gopkg.in/warnings.v0 v0.1.2
+## explicit
+gopkg.in/warnings.v0
+# gopkg.in/yaml.v2 v2.4.0
+## explicit; go 1.15
+gopkg.in/yaml.v2
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+gopkg.in/yaml.v3
+# k8s.io/api v0.26.11 => k8s.io/api v0.26.4
+## explicit; go 1.19
+k8s.io/api/admission/v1
+k8s.io/api/admission/v1beta1
+k8s.io/api/admissionregistration/v1
+k8s.io/api/admissionregistration/v1alpha1
+k8s.io/api/admissionregistration/v1beta1
+k8s.io/api/apidiscovery/v2beta1
+k8s.io/api/apiserverinternal/v1alpha1
+k8s.io/api/apps/v1
+k8s.io/api/apps/v1beta1
+k8s.io/api/apps/v1beta2
+k8s.io/api/authentication/v1
+k8s.io/api/authentication/v1alpha1
+k8s.io/api/authentication/v1beta1
+k8s.io/api/authorization/v1
+k8s.io/api/authorization/v1beta1
+k8s.io/api/autoscaling/v1
+k8s.io/api/autoscaling/v2
+k8s.io/api/autoscaling/v2beta1
+k8s.io/api/autoscaling/v2beta2
+k8s.io/api/batch/v1
+k8s.io/api/batch/v1beta1
+k8s.io/api/certificates/v1
+k8s.io/api/certificates/v1beta1
+k8s.io/api/coordination/v1
+k8s.io/api/coordination/v1beta1
+k8s.io/api/core/v1
+k8s.io/api/discovery/v1
+k8s.io/api/discovery/v1beta1
+k8s.io/api/events/v1
+k8s.io/api/events/v1beta1
+k8s.io/api/extensions/v1beta1
+k8s.io/api/flowcontrol/v1alpha1
+k8s.io/api/flowcontrol/v1beta1
+k8s.io/api/flowcontrol/v1beta2
+k8s.io/api/flowcontrol/v1beta3
+k8s.io/api/imagepolicy/v1alpha1
+k8s.io/api/networking/v1
+k8s.io/api/networking/v1alpha1
+k8s.io/api/networking/v1beta1
+k8s.io/api/node/v1
+k8s.io/api/node/v1alpha1
+k8s.io/api/node/v1beta1
+k8s.io/api/policy/v1
+k8s.io/api/policy/v1beta1
+k8s.io/api/rbac/v1
+k8s.io/api/rbac/v1alpha1
+k8s.io/api/rbac/v1beta1
+k8s.io/api/resource/v1alpha1
+k8s.io/api/scheduling/v1
+k8s.io/api/scheduling/v1alpha1
+k8s.io/api/scheduling/v1beta1
+k8s.io/api/storage/v1
+k8s.io/api/storage/v1alpha1
+k8s.io/api/storage/v1beta1
+# k8s.io/apiextensions-apiserver v0.26.4 => k8s.io/apiextensions-apiserver v0.26.4
+## explicit; go 1.19
+k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
+k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
+# k8s.io/apimachinery v0.26.11 => k8s.io/apimachinery v0.26.4
+## explicit; go 1.19
+k8s.io/apimachinery/pkg/api/equality
+k8s.io/apimachinery/pkg/api/errors
+k8s.io/apimachinery/pkg/api/meta
+k8s.io/apimachinery/pkg/api/resource
+k8s.io/apimachinery/pkg/apis/meta/internalversion
+k8s.io/apimachinery/pkg/apis/meta/v1
+k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
+k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme
+k8s.io/apimachinery/pkg/apis/meta/v1beta1
+k8s.io/apimachinery/pkg/conversion
+k8s.io/apimachinery/pkg/conversion/queryparams
+k8s.io/apimachinery/pkg/fields
+k8s.io/apimachinery/pkg/labels
+k8s.io/apimachinery/pkg/runtime
+k8s.io/apimachinery/pkg/runtime/schema
+k8s.io/apimachinery/pkg/runtime/serializer
+k8s.io/apimachinery/pkg/runtime/serializer/json
+k8s.io/apimachinery/pkg/runtime/serializer/protobuf
+k8s.io/apimachinery/pkg/runtime/serializer/recognizer
+k8s.io/apimachinery/pkg/runtime/serializer/streaming
+k8s.io/apimachinery/pkg/runtime/serializer/versioning
+k8s.io/apimachinery/pkg/selection
+k8s.io/apimachinery/pkg/types
+k8s.io/apimachinery/pkg/util/cache
+k8s.io/apimachinery/pkg/util/diff
+k8s.io/apimachinery/pkg/util/duration
+k8s.io/apimachinery/pkg/util/errors
+k8s.io/apimachinery/pkg/util/framer
+k8s.io/apimachinery/pkg/util/httpstream
+k8s.io/apimachinery/pkg/util/httpstream/spdy
+k8s.io/apimachinery/pkg/util/intstr
+k8s.io/apimachinery/pkg/util/json
+k8s.io/apimachinery/pkg/util/jsonmergepatch
+k8s.io/apimachinery/pkg/util/managedfields
+k8s.io/apimachinery/pkg/util/mergepatch
+k8s.io/apimachinery/pkg/util/naming
+k8s.io/apimachinery/pkg/util/net
+k8s.io/apimachinery/pkg/util/rand
+k8s.io/apimachinery/pkg/util/remotecommand
+k8s.io/apimachinery/pkg/util/runtime
+k8s.io/apimachinery/pkg/util/sets
+k8s.io/apimachinery/pkg/util/strategicpatch
+k8s.io/apimachinery/pkg/util/validation
+k8s.io/apimachinery/pkg/util/validation/field
+k8s.io/apimachinery/pkg/util/wait
+k8s.io/apimachinery/pkg/util/yaml
+k8s.io/apimachinery/pkg/version
+k8s.io/apimachinery/pkg/watch
+k8s.io/apimachinery/third_party/forked/golang/json
+k8s.io/apimachinery/third_party/forked/golang/netutil
+k8s.io/apimachinery/third_party/forked/golang/reflect
+# k8s.io/apiserver v0.26.11 => k8s.io/apiserver v0.26.11
+## explicit; go 1.19
+k8s.io/apiserver/pkg/features
+k8s.io/apiserver/pkg/util/feature
+# k8s.io/cli-runtime v0.26.4 => k8s.io/cli-runtime v0.26.4
+## explicit; go 1.19
+k8s.io/cli-runtime/pkg/genericclioptions
+k8s.io/cli-runtime/pkg/printers
+k8s.io/cli-runtime/pkg/resource
+# k8s.io/client-go v0.26.11 => k8s.io/client-go v0.26.4
+## explicit; go 1.19
+k8s.io/client-go/applyconfigurations/admissionregistration/v1
+k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1
+k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1
+k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1
+k8s.io/client-go/applyconfigurations/apps/v1
+k8s.io/client-go/applyconfigurations/apps/v1beta1
+k8s.io/client-go/applyconfigurations/apps/v1beta2
+k8s.io/client-go/applyconfigurations/autoscaling/v1
+k8s.io/client-go/applyconfigurations/autoscaling/v2
+k8s.io/client-go/applyconfigurations/autoscaling/v2beta1
+k8s.io/client-go/applyconfigurations/autoscaling/v2beta2
+k8s.io/client-go/applyconfigurations/batch/v1
+k8s.io/client-go/applyconfigurations/batch/v1beta1
+k8s.io/client-go/applyconfigurations/certificates/v1
+k8s.io/client-go/applyconfigurations/certificates/v1beta1
+k8s.io/client-go/applyconfigurations/coordination/v1
+k8s.io/client-go/applyconfigurations/coordination/v1beta1
+k8s.io/client-go/applyconfigurations/core/v1
+k8s.io/client-go/applyconfigurations/discovery/v1
+k8s.io/client-go/applyconfigurations/discovery/v1beta1
+k8s.io/client-go/applyconfigurations/events/v1
+k8s.io/client-go/applyconfigurations/events/v1beta1
+k8s.io/client-go/applyconfigurations/extensions/v1beta1
+k8s.io/client-go/applyconfigurations/flowcontrol/v1alpha1
+k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1
+k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2
+k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3
+k8s.io/client-go/applyconfigurations/internal
+k8s.io/client-go/applyconfigurations/meta/v1
+k8s.io/client-go/applyconfigurations/networking/v1
+k8s.io/client-go/applyconfigurations/networking/v1alpha1
+k8s.io/client-go/applyconfigurations/networking/v1beta1
+k8s.io/client-go/applyconfigurations/node/v1
+k8s.io/client-go/applyconfigurations/node/v1alpha1
+k8s.io/client-go/applyconfigurations/node/v1beta1
+k8s.io/client-go/applyconfigurations/policy/v1
+k8s.io/client-go/applyconfigurations/policy/v1beta1
+k8s.io/client-go/applyconfigurations/rbac/v1
+k8s.io/client-go/applyconfigurations/rbac/v1alpha1
+k8s.io/client-go/applyconfigurations/rbac/v1beta1
+k8s.io/client-go/applyconfigurations/resource/v1alpha1
+k8s.io/client-go/applyconfigurations/scheduling/v1
+k8s.io/client-go/applyconfigurations/scheduling/v1alpha1
+k8s.io/client-go/applyconfigurations/scheduling/v1beta1
+k8s.io/client-go/applyconfigurations/storage/v1
+k8s.io/client-go/applyconfigurations/storage/v1alpha1
+k8s.io/client-go/applyconfigurations/storage/v1beta1
+k8s.io/client-go/discovery
+k8s.io/client-go/discovery/cached/disk
+k8s.io/client-go/discovery/cached/memory
+k8s.io/client-go/dynamic
+k8s.io/client-go/dynamic/dynamicinformer
+k8s.io/client-go/dynamic/dynamiclister
+k8s.io/client-go/informers
+k8s.io/client-go/informers/admissionregistration
+k8s.io/client-go/informers/admissionregistration/v1
+k8s.io/client-go/informers/admissionregistration/v1alpha1
+k8s.io/client-go/informers/admissionregistration/v1beta1
+k8s.io/client-go/informers/apiserverinternal
+k8s.io/client-go/informers/apiserverinternal/v1alpha1
+k8s.io/client-go/informers/apps
+k8s.io/client-go/informers/apps/v1
+k8s.io/client-go/informers/apps/v1beta1
+k8s.io/client-go/informers/apps/v1beta2
+k8s.io/client-go/informers/autoscaling
+k8s.io/client-go/informers/autoscaling/v1
+k8s.io/client-go/informers/autoscaling/v2
+k8s.io/client-go/informers/autoscaling/v2beta1
+k8s.io/client-go/informers/autoscaling/v2beta2
+k8s.io/client-go/informers/batch
+k8s.io/client-go/informers/batch/v1
+k8s.io/client-go/informers/batch/v1beta1
+k8s.io/client-go/informers/certificates
+k8s.io/client-go/informers/certificates/v1
+k8s.io/client-go/informers/certificates/v1beta1
+k8s.io/client-go/informers/coordination
+k8s.io/client-go/informers/coordination/v1
+k8s.io/client-go/informers/coordination/v1beta1
+k8s.io/client-go/informers/core
+k8s.io/client-go/informers/core/v1
+k8s.io/client-go/informers/discovery
+k8s.io/client-go/informers/discovery/v1
+k8s.io/client-go/informers/discovery/v1beta1
+k8s.io/client-go/informers/events
+k8s.io/client-go/informers/events/v1
+k8s.io/client-go/informers/events/v1beta1
+k8s.io/client-go/informers/extensions
+k8s.io/client-go/informers/extensions/v1beta1
+k8s.io/client-go/informers/flowcontrol
+k8s.io/client-go/informers/flowcontrol/v1alpha1
+k8s.io/client-go/informers/flowcontrol/v1beta1
+k8s.io/client-go/informers/flowcontrol/v1beta2
+k8s.io/client-go/informers/flowcontrol/v1beta3
+k8s.io/client-go/informers/internalinterfaces
+k8s.io/client-go/informers/networking
+k8s.io/client-go/informers/networking/v1
+k8s.io/client-go/informers/networking/v1alpha1
+k8s.io/client-go/informers/networking/v1beta1
+k8s.io/client-go/informers/node
+k8s.io/client-go/informers/node/v1
+k8s.io/client-go/informers/node/v1alpha1
+k8s.io/client-go/informers/node/v1beta1
+k8s.io/client-go/informers/policy
+k8s.io/client-go/informers/policy/v1
+k8s.io/client-go/informers/policy/v1beta1
+k8s.io/client-go/informers/rbac
+k8s.io/client-go/informers/rbac/v1
+k8s.io/client-go/informers/rbac/v1alpha1
+k8s.io/client-go/informers/rbac/v1beta1
+k8s.io/client-go/informers/resource
+k8s.io/client-go/informers/resource/v1alpha1
+k8s.io/client-go/informers/scheduling
+k8s.io/client-go/informers/scheduling/v1
+k8s.io/client-go/informers/scheduling/v1alpha1
+k8s.io/client-go/informers/scheduling/v1beta1
+k8s.io/client-go/informers/storage
+k8s.io/client-go/informers/storage/v1
+k8s.io/client-go/informers/storage/v1alpha1
+k8s.io/client-go/informers/storage/v1beta1
+k8s.io/client-go/kubernetes
+k8s.io/client-go/kubernetes/scheme
+k8s.io/client-go/kubernetes/typed/admissionregistration/v1
+k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1
+k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1
+k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1
+k8s.io/client-go/kubernetes/typed/apps/v1
+k8s.io/client-go/kubernetes/typed/apps/v1beta1
+k8s.io/client-go/kubernetes/typed/apps/v1beta2
+k8s.io/client-go/kubernetes/typed/authentication/v1
+k8s.io/client-go/kubernetes/typed/authentication/v1alpha1
+k8s.io/client-go/kubernetes/typed/authentication/v1beta1
+k8s.io/client-go/kubernetes/typed/authorization/v1
+k8s.io/client-go/kubernetes/typed/authorization/v1beta1
+k8s.io/client-go/kubernetes/typed/autoscaling/v1
+k8s.io/client-go/kubernetes/typed/autoscaling/v2
+k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1
+k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2
+k8s.io/client-go/kubernetes/typed/batch/v1
+k8s.io/client-go/kubernetes/typed/batch/v1beta1
+k8s.io/client-go/kubernetes/typed/certificates/v1
+k8s.io/client-go/kubernetes/typed/certificates/v1beta1
+k8s.io/client-go/kubernetes/typed/coordination/v1
+k8s.io/client-go/kubernetes/typed/coordination/v1beta1
+k8s.io/client-go/kubernetes/typed/core/v1
+k8s.io/client-go/kubernetes/typed/discovery/v1
+k8s.io/client-go/kubernetes/typed/discovery/v1beta1
+k8s.io/client-go/kubernetes/typed/events/v1
+k8s.io/client-go/kubernetes/typed/events/v1beta1
+k8s.io/client-go/kubernetes/typed/extensions/v1beta1
+k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1
+k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1
+k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2
+k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3
+k8s.io/client-go/kubernetes/typed/networking/v1
+k8s.io/client-go/kubernetes/typed/networking/v1alpha1
+k8s.io/client-go/kubernetes/typed/networking/v1beta1
+k8s.io/client-go/kubernetes/typed/node/v1
+k8s.io/client-go/kubernetes/typed/node/v1alpha1
+k8s.io/client-go/kubernetes/typed/node/v1beta1
+k8s.io/client-go/kubernetes/typed/policy/v1
+k8s.io/client-go/kubernetes/typed/policy/v1beta1
+k8s.io/client-go/kubernetes/typed/rbac/v1
+k8s.io/client-go/kubernetes/typed/rbac/v1alpha1
+k8s.io/client-go/kubernetes/typed/rbac/v1beta1
+k8s.io/client-go/kubernetes/typed/resource/v1alpha1
+k8s.io/client-go/kubernetes/typed/scheduling/v1
+k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1
+k8s.io/client-go/kubernetes/typed/scheduling/v1beta1
+k8s.io/client-go/kubernetes/typed/storage/v1
+k8s.io/client-go/kubernetes/typed/storage/v1alpha1
+k8s.io/client-go/kubernetes/typed/storage/v1beta1
+k8s.io/client-go/listers/admissionregistration/v1
+k8s.io/client-go/listers/admissionregistration/v1alpha1
+k8s.io/client-go/listers/admissionregistration/v1beta1
+k8s.io/client-go/listers/apiserverinternal/v1alpha1
+k8s.io/client-go/listers/apps/v1
+k8s.io/client-go/listers/apps/v1beta1
+k8s.io/client-go/listers/apps/v1beta2
+k8s.io/client-go/listers/autoscaling/v1
+k8s.io/client-go/listers/autoscaling/v2
+k8s.io/client-go/listers/autoscaling/v2beta1
+k8s.io/client-go/listers/autoscaling/v2beta2
+k8s.io/client-go/listers/batch/v1
+k8s.io/client-go/listers/batch/v1beta1
+k8s.io/client-go/listers/certificates/v1
+k8s.io/client-go/listers/certificates/v1beta1
+k8s.io/client-go/listers/coordination/v1
+k8s.io/client-go/listers/coordination/v1beta1
+k8s.io/client-go/listers/core/v1
+k8s.io/client-go/listers/discovery/v1
+k8s.io/client-go/listers/discovery/v1beta1
+k8s.io/client-go/listers/events/v1
+k8s.io/client-go/listers/events/v1beta1
+k8s.io/client-go/listers/extensions/v1beta1
+k8s.io/client-go/listers/flowcontrol/v1alpha1
+k8s.io/client-go/listers/flowcontrol/v1beta1
+k8s.io/client-go/listers/flowcontrol/v1beta2
+k8s.io/client-go/listers/flowcontrol/v1beta3
+k8s.io/client-go/listers/networking/v1
+k8s.io/client-go/listers/networking/v1alpha1
+k8s.io/client-go/listers/networking/v1beta1
+k8s.io/client-go/listers/node/v1
+k8s.io/client-go/listers/node/v1alpha1
+k8s.io/client-go/listers/node/v1beta1
+k8s.io/client-go/listers/policy/v1
+k8s.io/client-go/listers/policy/v1beta1
+k8s.io/client-go/listers/rbac/v1
+k8s.io/client-go/listers/rbac/v1alpha1
+k8s.io/client-go/listers/rbac/v1beta1
+k8s.io/client-go/listers/resource/v1alpha1
+k8s.io/client-go/listers/scheduling/v1
+k8s.io/client-go/listers/scheduling/v1alpha1
+k8s.io/client-go/listers/scheduling/v1beta1
+k8s.io/client-go/listers/storage/v1
+k8s.io/client-go/listers/storage/v1alpha1
+k8s.io/client-go/listers/storage/v1beta1
+k8s.io/client-go/openapi
+k8s.io/client-go/openapi/cached
+k8s.io/client-go/pkg/apis/clientauthentication
+k8s.io/client-go/pkg/apis/clientauthentication/install
+k8s.io/client-go/pkg/apis/clientauthentication/v1
+k8s.io/client-go/pkg/apis/clientauthentication/v1beta1
+k8s.io/client-go/pkg/version
+k8s.io/client-go/plugin/pkg/client/auth/exec
+k8s.io/client-go/rest
+k8s.io/client-go/rest/watch
+k8s.io/client-go/restmapper
+k8s.io/client-go/scale
+k8s.io/client-go/scale/scheme
+k8s.io/client-go/scale/scheme/appsint
+k8s.io/client-go/scale/scheme/appsv1beta1
+k8s.io/client-go/scale/scheme/appsv1beta2
+k8s.io/client-go/scale/scheme/autoscalingv1
+k8s.io/client-go/scale/scheme/extensionsint
+k8s.io/client-go/scale/scheme/extensionsv1beta1
+k8s.io/client-go/third_party/forked/golang/template
+k8s.io/client-go/tools/auth
+k8s.io/client-go/tools/cache
+k8s.io/client-go/tools/clientcmd
+k8s.io/client-go/tools/clientcmd/api
+k8s.io/client-go/tools/clientcmd/api/latest
+k8s.io/client-go/tools/clientcmd/api/v1
+k8s.io/client-go/tools/metrics
+k8s.io/client-go/tools/pager
+k8s.io/client-go/tools/portforward
+k8s.io/client-go/tools/reference
+k8s.io/client-go/tools/remotecommand
+k8s.io/client-go/tools/watch
+k8s.io/client-go/transport
+k8s.io/client-go/transport/spdy
+k8s.io/client-go/util/cert
+k8s.io/client-go/util/certificate/csr
+k8s.io/client-go/util/connrotation
+k8s.io/client-go/util/csaupgrade
+k8s.io/client-go/util/exec
+k8s.io/client-go/util/flowcontrol
+k8s.io/client-go/util/homedir
+k8s.io/client-go/util/jsonpath
+k8s.io/client-go/util/keyutil
+k8s.io/client-go/util/retry
+k8s.io/client-go/util/workqueue
+# k8s.io/component-base v0.26.11 => k8s.io/component-base v0.26.4
+## explicit; go 1.19
+k8s.io/component-base/cli/flag
+k8s.io/component-base/featuregate
+k8s.io/component-base/metrics
+k8s.io/component-base/metrics/legacyregistry
+k8s.io/component-base/metrics/prometheus/feature
+k8s.io/component-base/metrics/prometheusextension
+k8s.io/component-base/version
+# k8s.io/component-helpers v0.26.4 => k8s.io/component-helpers v0.26.4
+## explicit; go 1.19
+k8s.io/component-helpers/auth/rbac/reconciliation
+k8s.io/component-helpers/auth/rbac/validation
+# k8s.io/helm v2.12.3+incompatible
+## explicit
+k8s.io/helm/pkg/chartutil
+k8s.io/helm/pkg/getter
+k8s.io/helm/pkg/helm/environment
+k8s.io/helm/pkg/helm/helmpath
+k8s.io/helm/pkg/ignore
+k8s.io/helm/pkg/plugin
+k8s.io/helm/pkg/proto/hapi/chart
+k8s.io/helm/pkg/proto/hapi/version
+k8s.io/helm/pkg/provenance
+k8s.io/helm/pkg/repo
+k8s.io/helm/pkg/sympath
+k8s.io/helm/pkg/tlsutil
+k8s.io/helm/pkg/urlutil
+k8s.io/helm/pkg/version
+# k8s.io/klog/v2 v2.100.1
+## explicit; go 1.13
+k8s.io/klog/v2
+k8s.io/klog/v2/internal/buffer
+k8s.io/klog/v2/internal/clock
+k8s.io/klog/v2/internal/dbg
+k8s.io/klog/v2/internal/serialize
+k8s.io/klog/v2/internal/severity
+k8s.io/klog/v2/klogr
+# k8s.io/kube-aggregator v0.26.4 => k8s.io/kube-aggregator v0.26.4
+## explicit; go 1.19
+k8s.io/kube-aggregator/pkg/apis/apiregistration
+k8s.io/kube-aggregator/pkg/apis/apiregistration/v1
+k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1
+# k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f
+## explicit; go 1.19
+k8s.io/kube-openapi/pkg/builder3/util
+k8s.io/kube-openapi/pkg/cached
+k8s.io/kube-openapi/pkg/common
+k8s.io/kube-openapi/pkg/handler3
+k8s.io/kube-openapi/pkg/internal
+k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json
+k8s.io/kube-openapi/pkg/openapiconv
+k8s.io/kube-openapi/pkg/schemaconv
+k8s.io/kube-openapi/pkg/schemamutation
+k8s.io/kube-openapi/pkg/spec3
+k8s.io/kube-openapi/pkg/util/proto
+k8s.io/kube-openapi/pkg/util/proto/validation
+k8s.io/kube-openapi/pkg/validation/spec
+# k8s.io/kubectl v0.26.4 => k8s.io/kubectl v0.26.4
+## explicit; go 1.19
+k8s.io/kubectl/pkg/apps
+k8s.io/kubectl/pkg/cmd/apiresources
+k8s.io/kubectl/pkg/cmd/apply
+k8s.io/kubectl/pkg/cmd/auth
+k8s.io/kubectl/pkg/cmd/create
+k8s.io/kubectl/pkg/cmd/delete
+k8s.io/kubectl/pkg/cmd/get
+k8s.io/kubectl/pkg/cmd/replace
+k8s.io/kubectl/pkg/cmd/util
+k8s.io/kubectl/pkg/cmd/util/editor
+k8s.io/kubectl/pkg/cmd/util/editor/crlf
+k8s.io/kubectl/pkg/cmd/util/podcmd
+k8s.io/kubectl/pkg/cmd/wait
+k8s.io/kubectl/pkg/describe
+k8s.io/kubectl/pkg/generate
+k8s.io/kubectl/pkg/polymorphichelpers
+k8s.io/kubectl/pkg/rawhttp
+k8s.io/kubectl/pkg/scheme
+k8s.io/kubectl/pkg/util
+k8s.io/kubectl/pkg/util/certificate
+k8s.io/kubectl/pkg/util/completion
+k8s.io/kubectl/pkg/util/deployment
+k8s.io/kubectl/pkg/util/event
+k8s.io/kubectl/pkg/util/fieldpath
+k8s.io/kubectl/pkg/util/hash
+k8s.io/kubectl/pkg/util/i18n
+k8s.io/kubectl/pkg/util/interrupt
+k8s.io/kubectl/pkg/util/openapi
+k8s.io/kubectl/pkg/util/openapi/validation
+k8s.io/kubectl/pkg/util/podutils
+k8s.io/kubectl/pkg/util/prune
+k8s.io/kubectl/pkg/util/qos
+k8s.io/kubectl/pkg/util/rbac
+k8s.io/kubectl/pkg/util/resource
+k8s.io/kubectl/pkg/util/slice
+k8s.io/kubectl/pkg/util/storage
+k8s.io/kubectl/pkg/util/templates
+k8s.io/kubectl/pkg/util/term
+k8s.io/kubectl/pkg/validation
+# k8s.io/kubernetes v1.26.11
+## explicit; go 1.19
+k8s.io/kubernetes/pkg/api/legacyscheme
+k8s.io/kubernetes/pkg/apis/admission
+k8s.io/kubernetes/pkg/apis/admission/install
+k8s.io/kubernetes/pkg/apis/admission/v1
+k8s.io/kubernetes/pkg/apis/admission/v1beta1
+k8s.io/kubernetes/pkg/apis/admissionregistration
+k8s.io/kubernetes/pkg/apis/admissionregistration/install
+k8s.io/kubernetes/pkg/apis/admissionregistration/v1
+k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1
+k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1
+k8s.io/kubernetes/pkg/apis/apps
+k8s.io/kubernetes/pkg/apis/apps/install
+k8s.io/kubernetes/pkg/apis/apps/v1
+k8s.io/kubernetes/pkg/apis/apps/v1beta1
+k8s.io/kubernetes/pkg/apis/apps/v1beta2
+k8s.io/kubernetes/pkg/apis/authentication
+k8s.io/kubernetes/pkg/apis/authentication/install
+k8s.io/kubernetes/pkg/apis/authentication/v1
+k8s.io/kubernetes/pkg/apis/authentication/v1alpha1
+k8s.io/kubernetes/pkg/apis/authentication/v1beta1
+k8s.io/kubernetes/pkg/apis/authorization
+k8s.io/kubernetes/pkg/apis/authorization/install
+k8s.io/kubernetes/pkg/apis/authorization/v1
+k8s.io/kubernetes/pkg/apis/authorization/v1beta1
+k8s.io/kubernetes/pkg/apis/autoscaling
+k8s.io/kubernetes/pkg/apis/autoscaling/install
+k8s.io/kubernetes/pkg/apis/autoscaling/v1
+k8s.io/kubernetes/pkg/apis/autoscaling/v2
+k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1
+k8s.io/kubernetes/pkg/apis/autoscaling/v2beta2
+k8s.io/kubernetes/pkg/apis/batch
+k8s.io/kubernetes/pkg/apis/batch/install
+k8s.io/kubernetes/pkg/apis/batch/v1
+k8s.io/kubernetes/pkg/apis/batch/v1beta1
+k8s.io/kubernetes/pkg/apis/certificates
+k8s.io/kubernetes/pkg/apis/certificates/install
+k8s.io/kubernetes/pkg/apis/certificates/v1
+k8s.io/kubernetes/pkg/apis/certificates/v1beta1
+k8s.io/kubernetes/pkg/apis/coordination
+k8s.io/kubernetes/pkg/apis/coordination/install
+k8s.io/kubernetes/pkg/apis/coordination/v1
+k8s.io/kubernetes/pkg/apis/coordination/v1beta1
+k8s.io/kubernetes/pkg/apis/core
+k8s.io/kubernetes/pkg/apis/core/install
+k8s.io/kubernetes/pkg/apis/core/v1
+k8s.io/kubernetes/pkg/apis/discovery
+k8s.io/kubernetes/pkg/apis/discovery/install
+k8s.io/kubernetes/pkg/apis/discovery/v1
+k8s.io/kubernetes/pkg/apis/discovery/v1beta1
+k8s.io/kubernetes/pkg/apis/events
+k8s.io/kubernetes/pkg/apis/events/install
+k8s.io/kubernetes/pkg/apis/events/v1
+k8s.io/kubernetes/pkg/apis/events/v1beta1
+k8s.io/kubernetes/pkg/apis/extensions
+k8s.io/kubernetes/pkg/apis/extensions/install
+k8s.io/kubernetes/pkg/apis/extensions/v1beta1
+k8s.io/kubernetes/pkg/apis/flowcontrol
+k8s.io/kubernetes/pkg/apis/flowcontrol/install
+k8s.io/kubernetes/pkg/apis/flowcontrol/v1alpha1
+k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta1
+k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2
+k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3
+k8s.io/kubernetes/pkg/apis/imagepolicy
+k8s.io/kubernetes/pkg/apis/imagepolicy/install
+k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1
+k8s.io/kubernetes/pkg/apis/networking
+k8s.io/kubernetes/pkg/apis/networking/install
+k8s.io/kubernetes/pkg/apis/networking/v1
+k8s.io/kubernetes/pkg/apis/networking/v1alpha1
+k8s.io/kubernetes/pkg/apis/networking/v1beta1
+k8s.io/kubernetes/pkg/apis/node
+k8s.io/kubernetes/pkg/apis/node/install
+k8s.io/kubernetes/pkg/apis/node/v1
+k8s.io/kubernetes/pkg/apis/node/v1alpha1
+k8s.io/kubernetes/pkg/apis/node/v1beta1
+k8s.io/kubernetes/pkg/apis/policy
+k8s.io/kubernetes/pkg/apis/policy/install
+k8s.io/kubernetes/pkg/apis/policy/v1
+k8s.io/kubernetes/pkg/apis/policy/v1beta1
+k8s.io/kubernetes/pkg/apis/rbac
+k8s.io/kubernetes/pkg/apis/rbac/install
+k8s.io/kubernetes/pkg/apis/rbac/v1
+k8s.io/kubernetes/pkg/apis/rbac/v1alpha1
+k8s.io/kubernetes/pkg/apis/rbac/v1beta1
+k8s.io/kubernetes/pkg/apis/scheduling
+k8s.io/kubernetes/pkg/apis/scheduling/install
+k8s.io/kubernetes/pkg/apis/scheduling/v1
+k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1
+k8s.io/kubernetes/pkg/apis/scheduling/v1beta1
+k8s.io/kubernetes/pkg/apis/storage
+k8s.io/kubernetes/pkg/apis/storage/install
+k8s.io/kubernetes/pkg/apis/storage/v1
+k8s.io/kubernetes/pkg/apis/storage/v1alpha1
+k8s.io/kubernetes/pkg/apis/storage/v1beta1
+k8s.io/kubernetes/pkg/features
+k8s.io/kubernetes/pkg/util/parsers
+# k8s.io/metrics v0.26.4 => k8s.io/metrics v0.24.2
+## explicit; go 1.16
+k8s.io/metrics/pkg/apis/metrics
+k8s.io/metrics/pkg/apis/metrics/v1alpha1
+k8s.io/metrics/pkg/apis/metrics/v1beta1
+k8s.io/metrics/pkg/client/clientset/versioned
+k8s.io/metrics/pkg/client/clientset/versioned/scheme
+k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1alpha1
+k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1
+# k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
+## explicit; go 1.18
+k8s.io/utils/buffer
+k8s.io/utils/clock
+k8s.io/utils/clock/testing
+k8s.io/utils/env
+k8s.io/utils/exec
+k8s.io/utils/integer
+k8s.io/utils/internal/third_party/forked/golang/net
+k8s.io/utils/net
+k8s.io/utils/pointer
+k8s.io/utils/strings/slices
+k8s.io/utils/trace
+# mellium.im/sasl v0.3.1
+## explicit; go 1.18
+mellium.im/sasl
+# oras.land/oras-go/v2 v2.2.0
+## explicit; go 1.19
+oras.land/oras-go/v2/content
+oras.land/oras-go/v2/errdef
+oras.land/oras-go/v2/internal/cas
+oras.land/oras-go/v2/internal/descriptor
+oras.land/oras-go/v2/internal/docker
+oras.land/oras-go/v2/internal/httputil
+oras.land/oras-go/v2/internal/ioutil
+oras.land/oras-go/v2/internal/registryutil
+oras.land/oras-go/v2/internal/slices
+oras.land/oras-go/v2/internal/spec
+oras.land/oras-go/v2/internal/syncutil
+oras.land/oras-go/v2/registry
+oras.land/oras-go/v2/registry/remote
+oras.land/oras-go/v2/registry/remote/auth
+oras.land/oras-go/v2/registry/remote/errcode
+oras.land/oras-go/v2/registry/remote/internal/errutil
+oras.land/oras-go/v2/registry/remote/retry
+# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+## explicit; go 1.18
+sigs.k8s.io/json
+sigs.k8s.io/json/internal/golang/encoding/json
+# sigs.k8s.io/kustomize/api v0.12.1
+## explicit; go 1.18
+sigs.k8s.io/kustomize/api/filters/annotations
+sigs.k8s.io/kustomize/api/filters/fieldspec
+sigs.k8s.io/kustomize/api/filters/filtersutil
+sigs.k8s.io/kustomize/api/filters/fsslice
+sigs.k8s.io/kustomize/api/filters/iampolicygenerator
+sigs.k8s.io/kustomize/api/filters/imagetag
+sigs.k8s.io/kustomize/api/filters/labels
+sigs.k8s.io/kustomize/api/filters/nameref
+sigs.k8s.io/kustomize/api/filters/namespace
+sigs.k8s.io/kustomize/api/filters/patchjson6902
+sigs.k8s.io/kustomize/api/filters/patchstrategicmerge
+sigs.k8s.io/kustomize/api/filters/prefix
+sigs.k8s.io/kustomize/api/filters/refvar
+sigs.k8s.io/kustomize/api/filters/replacement
+sigs.k8s.io/kustomize/api/filters/replicacount
+sigs.k8s.io/kustomize/api/filters/suffix
+sigs.k8s.io/kustomize/api/filters/valueadd
+sigs.k8s.io/kustomize/api/hasher
+sigs.k8s.io/kustomize/api/ifc
+sigs.k8s.io/kustomize/api/image
+sigs.k8s.io/kustomize/api/internal/accumulator
+sigs.k8s.io/kustomize/api/internal/builtins
+sigs.k8s.io/kustomize/api/internal/generators
+sigs.k8s.io/kustomize/api/internal/git
+sigs.k8s.io/kustomize/api/internal/kusterr
+sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig
+sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers
+sigs.k8s.io/kustomize/api/internal/plugins/execplugin
+sigs.k8s.io/kustomize/api/internal/plugins/fnplugin
+sigs.k8s.io/kustomize/api/internal/plugins/loader
+sigs.k8s.io/kustomize/api/internal/plugins/utils
+sigs.k8s.io/kustomize/api/internal/target
+sigs.k8s.io/kustomize/api/internal/utils
+sigs.k8s.io/kustomize/api/internal/validate
+sigs.k8s.io/kustomize/api/konfig
+sigs.k8s.io/kustomize/api/konfig/builtinpluginconsts
+sigs.k8s.io/kustomize/api/krusty
+sigs.k8s.io/kustomize/api/kv
+sigs.k8s.io/kustomize/api/loader
+sigs.k8s.io/kustomize/api/provenance
+sigs.k8s.io/kustomize/api/provider
+sigs.k8s.io/kustomize/api/resmap
+sigs.k8s.io/kustomize/api/resource
+sigs.k8s.io/kustomize/api/types
+# sigs.k8s.io/kustomize/kyaml v0.13.9
+## explicit; go 1.18
+sigs.k8s.io/kustomize/kyaml/comments
+sigs.k8s.io/kustomize/kyaml/errors
+sigs.k8s.io/kustomize/kyaml/ext
+sigs.k8s.io/kustomize/kyaml/fieldmeta
+sigs.k8s.io/kustomize/kyaml/filesys
+sigs.k8s.io/kustomize/kyaml/fn/runtime/container
+sigs.k8s.io/kustomize/kyaml/fn/runtime/exec
+sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil
+sigs.k8s.io/kustomize/kyaml/fn/runtime/starlark
+sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml
+sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util
+sigs.k8s.io/kustomize/kyaml/kio
+sigs.k8s.io/kustomize/kyaml/kio/filters
+sigs.k8s.io/kustomize/kyaml/kio/kioutil
+sigs.k8s.io/kustomize/kyaml/openapi
+sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi
+sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/v1212
+sigs.k8s.io/kustomize/kyaml/openapi/kustomizationapi
+sigs.k8s.io/kustomize/kyaml/order
+sigs.k8s.io/kustomize/kyaml/resid
+sigs.k8s.io/kustomize/kyaml/runfn
+sigs.k8s.io/kustomize/kyaml/sets
+sigs.k8s.io/kustomize/kyaml/sliceutil
+sigs.k8s.io/kustomize/kyaml/utils
+sigs.k8s.io/kustomize/kyaml/yaml
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/selection
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/errors
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/sets
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation
+sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field
+sigs.k8s.io/kustomize/kyaml/yaml/merge2
+sigs.k8s.io/kustomize/kyaml/yaml/merge3
+sigs.k8s.io/kustomize/kyaml/yaml/schema
+sigs.k8s.io/kustomize/kyaml/yaml/walk
+# sigs.k8s.io/structured-merge-diff/v4 v4.2.3
+## explicit; go 1.13
+sigs.k8s.io/structured-merge-diff/v4/fieldpath
+sigs.k8s.io/structured-merge-diff/v4/merge
+sigs.k8s.io/structured-merge-diff/v4/schema
+sigs.k8s.io/structured-merge-diff/v4/typed
+sigs.k8s.io/structured-merge-diff/v4/value
+# sigs.k8s.io/yaml v1.3.0
+## explicit; go 1.12
+sigs.k8s.io/yaml
+# upper.io/db.v3 v3.8.0+incompatible
+## explicit
+upper.io/db.v3
+upper.io/db.v3/internal/cache
+upper.io/db.v3/internal/cache/hashstructure
+upper.io/db.v3/internal/immutable
+upper.io/db.v3/internal/sqladapter
+upper.io/db.v3/internal/sqladapter/compat
+upper.io/db.v3/internal/sqladapter/exql
+upper.io/db.v3/lib/reflectx
+upper.io/db.v3/lib/sqlbuilder
+upper.io/db.v3/mysql
+upper.io/db.v3/postgresql
+# xorm.io/builder v0.3.6
+## explicit; go 1.11
+xorm.io/builder
+# xorm.io/core v0.7.2
+## explicit
+xorm.io/core
+# github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
+# k8s.io/api => k8s.io/api v0.26.4
+# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.4
+# k8s.io/apimachinery => k8s.io/apimachinery v0.26.4
+# k8s.io/apiserver => k8s.io/apiserver v0.26.11
+# k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.4
+# k8s.io/client-go => k8s.io/client-go v0.26.4
+# k8s.io/cloud-provider => k8s.io/cloud-provider v0.24.2
+# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.24.2
+# k8s.io/code-generator => k8s.io/code-generator v0.24.2
+# k8s.io/component-base => k8s.io/component-base v0.26.4
+# k8s.io/component-helpers => k8s.io/component-helpers v0.26.4
+# k8s.io/controller-manager => k8s.io/controller-manager v0.24.2
+# k8s.io/cri-api => k8s.io/cri-api v0.24.2
+# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.24.2
+# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.4
+# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.24.2
+# k8s.io/kube-proxy => k8s.io/kube-proxy v0.24.2
+# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.24.2
+# k8s.io/kubectl => k8s.io/kubectl v0.26.4
+# k8s.io/kubelet => k8s.io/kubelet v0.24.2
+# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.24.2
+# k8s.io/metrics => k8s.io/metrics v0.24.2
+# k8s.io/mount-utils => k8s.io/mount-utils v0.24.2
+# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.24.2
+# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.24.2
diff --git a/vendor/github.com/argoproj/argo-cd/assets/badge.svg b/vendor/github.com/argoproj/argo-cd/assets/badge.svg
deleted file mode 100644
index a3234cfdf5..0000000000
--- a/vendor/github.com/argoproj/argo-cd/assets/badge.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
\ No newline at end of file
diff --git a/vendor/github.com/argoproj/argo-cd/assets/builtin-policy.csv b/vendor/github.com/argoproj/argo-cd/assets/builtin-policy.csv
deleted file mode 100644
index f74c5b8002..0000000000
--- a/vendor/github.com/argoproj/argo-cd/assets/builtin-policy.csv
+++ /dev/null
@@ -1,34 +0,0 @@
-# Built-in policy which defines two roles: role:readonly and role:admin,
-# and additionally assigns the admin user to the role:admin role.
-# There are two policy formats:
-# 1. Applications (which belong to a project):
-# p, , , , /