@@ -48,6 +48,7 @@ import (
48
48
"github.com/devtron-labs/devtron/pkg/pipeline/repository"
49
49
"github.com/devtron-labs/devtron/pkg/pipeline/types"
50
50
"github.com/devtron-labs/devtron/pkg/plugin"
51
+ security2 "github.com/devtron-labs/devtron/pkg/security"
51
52
"github.com/devtron-labs/devtron/pkg/sql"
52
53
"github.com/devtron-labs/devtron/pkg/variables"
53
54
"github.com/devtron-labs/devtron/pkg/workflow/cd"
@@ -114,13 +115,11 @@ type TriggerServiceImpl struct {
114
115
gitSensorGrpcClient gitSensorClient.Client
115
116
config * types.CdConfig
116
117
helmAppService client2.HelmAppService
117
-
118
- enforcerUtil rbac.EnforcerUtil
119
- helmAppClient gRPC.HelmAppClient //TODO refactoring: use helm app service instead
118
+ imageScanService security2. ImageScanService
119
+ enforcerUtil rbac.EnforcerUtil
120
+ helmAppClient gRPC.HelmAppClient //TODO refactoring: use helm app service instead
120
121
121
122
appRepository appRepository.AppRepository
122
- scanResultRepository security.ImageScanResultRepository
123
- cvePolicyRepository security.CvePolicyRepository
124
123
ciPipelineMaterialRepository pipelineConfig.CiPipelineMaterialRepository
125
124
imageScanHistoryRepository security.ImageScanHistoryRepository
126
125
imageScanDeployInfoRepository security.ImageScanDeployInfoRepository
@@ -170,8 +169,6 @@ func NewTriggerServiceImpl(logger *zap.SugaredLogger, cdWorkflowCommonService cd
170
169
eventClient client.EventClient ,
171
170
envVariables * util3.EnvironmentVariables ,
172
171
appRepository appRepository.AppRepository ,
173
- scanResultRepository security.ImageScanResultRepository ,
174
- cvePolicyRepository security.CvePolicyRepository ,
175
172
ciPipelineMaterialRepository pipelineConfig.CiPipelineMaterialRepository ,
176
173
imageScanHistoryRepository security.ImageScanHistoryRepository ,
177
174
imageScanDeployInfoRepository security.ImageScanDeployInfoRepository ,
@@ -188,7 +185,8 @@ func NewTriggerServiceImpl(logger *zap.SugaredLogger, cdWorkflowCommonService cd
188
185
appLabelRepository pipelineConfig.AppLabelRepository ,
189
186
ciPipelineRepository pipelineConfig.CiPipelineRepository ,
190
187
appWorkflowRepository appWorkflow.AppWorkflowRepository ,
191
- dockerArtifactStoreRepository repository4.DockerArtifactStoreRepository ) (* TriggerServiceImpl , error ) {
188
+ dockerArtifactStoreRepository repository4.DockerArtifactStoreRepository ,
189
+ imageScanService security2.ImageScanService ) (* TriggerServiceImpl , error ) {
192
190
impl := & TriggerServiceImpl {
193
191
logger : logger ,
194
192
cdWorkflowCommonService : cdWorkflowCommonService ,
@@ -221,8 +219,6 @@ func NewTriggerServiceImpl(logger *zap.SugaredLogger, cdWorkflowCommonService cd
221
219
globalEnvVariables : envVariables .GlobalEnvVariables ,
222
220
helmAppClient : helmAppClient ,
223
221
appRepository : appRepository ,
224
- scanResultRepository : scanResultRepository ,
225
- cvePolicyRepository : cvePolicyRepository ,
226
222
ciPipelineMaterialRepository : ciPipelineMaterialRepository ,
227
223
imageScanHistoryRepository : imageScanHistoryRepository ,
228
224
imageScanDeployInfoRepository : imageScanDeployInfoRepository ,
@@ -240,6 +236,7 @@ func NewTriggerServiceImpl(logger *zap.SugaredLogger, cdWorkflowCommonService cd
240
236
ciPipelineRepository : ciPipelineRepository ,
241
237
appWorkflowRepository : appWorkflowRepository ,
242
238
dockerArtifactStoreRepository : dockerArtifactStoreRepository ,
239
+ imageScanService : imageScanService ,
243
240
}
244
241
config , err := types .GetCdConfig ()
245
242
if err != nil {
@@ -400,7 +397,8 @@ func (impl *TriggerServiceImpl) ManualCdTrigger(triggerContext bean.TriggerConte
400
397
impl .logger .Warnw ("unable to migrate deprecated DataSource" , "artifactId" , artifact .Id )
401
398
}
402
399
}
403
- isVulnerable , err := impl .GetArtifactVulnerabilityStatus (artifact , cdPipeline , ctx )
400
+ vulnerabilityCheckRequest := adapter .GetVulnerabilityCheckRequest (cdPipeline , artifact .ImageDigest )
401
+ isVulnerable , err := impl .imageScanService .GetArtifactVulnerabilityStatus (ctx , vulnerabilityCheckRequest )
404
402
if err != nil {
405
403
impl .logger .Errorw ("error in getting Artifact vulnerability status, ManualCdTrigger" , "err" , err )
406
404
return 0 , err
@@ -579,32 +577,12 @@ func (impl *TriggerServiceImpl) TriggerAutomaticDeployment(request bean.TriggerR
579
577
return err
580
578
}
581
579
// custom GitOps repo url validation --> Ends
582
-
580
+ vulnerabilityCheckRequest := adapter . GetVulnerabilityCheckRequest ( pipeline , artifact . ImageDigest )
583
581
//checking vulnerability for deploying image
584
- isVulnerable := false
585
- if len (artifact .ImageDigest ) > 0 {
586
- var cveStores []* security.CveStore
587
- imageScanResult , err := impl .scanResultRepository .FindByImageDigest (artifact .ImageDigest )
588
- if err != nil && err != pg .ErrNoRows {
589
- impl .logger .Errorw ("error fetching image digest" , "digest" , artifact .ImageDigest , "err" , err )
590
- return err
591
- }
592
- for _ , item := range imageScanResult {
593
- cveStores = append (cveStores , & item .CveStore )
594
- }
595
- env , err := impl .envRepository .FindById (pipeline .EnvironmentId )
596
- if err != nil {
597
- impl .logger .Errorw ("error while fetching env" , "err" , err )
598
- return err
599
- }
600
- blockCveList , err := impl .cvePolicyRepository .GetBlockedCVEList (cveStores , env .ClusterId , pipeline .EnvironmentId , pipeline .AppId , false )
601
- if err != nil {
602
- impl .logger .Errorw ("error while fetching blocked cve list" , "err" , err )
603
- return err
604
- }
605
- if len (blockCveList ) > 0 {
606
- isVulnerable = true
607
- }
582
+ isVulnerable , err := impl .imageScanService .GetArtifactVulnerabilityStatus (request .TriggerContext .Context , vulnerabilityCheckRequest )
583
+ if err != nil {
584
+ impl .logger .Errorw ("error in getting Artifact vulnerability status, ManualCdTrigger" , "err" , err )
585
+ return err
608
586
}
609
587
if isVulnerable == true {
610
588
if err = impl .cdWorkflowCommonService .MarkCurrentDeploymentFailed (runner , errors .New (pipelineConfig .FOUND_VULNERABILITY ), triggeredBy ); err != nil {
0 commit comments