@@ -29,7 +29,6 @@ import (
2929 "github.com/chainloop-dev/chainloop/app/controlplane/internal/biz"
3030 "github.com/chainloop-dev/chainloop/app/controlplane/internal/integrations/dependencytrack"
3131 "github.com/chainloop-dev/chainloop/internal/attestation/renderer"
32- "github.com/chainloop-dev/chainloop/internal/blobmanager/oci"
3332 "github.com/chainloop-dev/chainloop/internal/credentials"
3433 "github.com/chainloop-dev/chainloop/internal/servicelogger"
3534 "github.com/go-kratos/kratos/v2/log"
@@ -41,13 +40,14 @@ type Integration struct {
4140 integrationUC * biz.IntegrationUseCase
4241 ociUC * biz.OCIRepositoryUseCase
4342 credentialsProvider credentials.ReaderWriter
43+ casClient biz.CASClient
4444 log * log.Helper
4545}
4646
4747const Kind = "Dependency-Track"
4848
49- func New (integrationUC * biz.IntegrationUseCase , ociUC * biz.OCIRepositoryUseCase , creds credentials.ReaderWriter , l log.Logger ) * Integration {
50- return & Integration {integrationUC , ociUC , creds , servicelogger .ScopedHelper (l , "biz/integration/deptrack" )}
49+ func New (integrationUC * biz.IntegrationUseCase , ociUC * biz.OCIRepositoryUseCase , creds credentials.ReaderWriter , c biz. CASClient , l log.Logger ) * Integration {
50+ return & Integration {integrationUC , ociUC , creds , c , servicelogger .ScopedHelper (l , "biz/integration/deptrack" )}
5151}
5252
5353func (uc * Integration ) Add (ctx context.Context , orgID , host , apiKey string , enableProjectCreation bool ) (* biz.Integration , error ) {
@@ -105,6 +105,7 @@ func (uc *Integration) UploadSBOMs(envelope *dsse.Envelope, orgID, workflowID st
105105 return nil
106106 }
107107
108+ // There is at least one enabled integration, extract the SBOMs
108109 predicate , err := renderer .ExtractPredicate (envelope )
109110 if err != nil {
110111 return err
@@ -117,11 +118,6 @@ func (uc *Integration) UploadSBOMs(envelope *dsse.Envelope, orgID, workflowID st
117118 return errors .NotFound ("not found" , "main repository not found" )
118119 }
119120
120- backend , err := oci .NewBackendProvider (uc .credentialsProvider ).FromCredentials (ctx , repo .SecretName )
121- if err != nil {
122- return err
123- }
124-
125121 for _ , m := range predicate .Materials {
126122 if m .Type != contractAPI .CraftingSchema_Material_SBOM_CYCLONEDX_JSON .String () {
127123 continue
@@ -133,11 +129,14 @@ func (uc *Integration) UploadSBOMs(envelope *dsse.Envelope, orgID, workflowID st
133129 continue
134130 }
135131
132+ digest = "sha256:" + digest
133+
136134 uc .log .Infow ("msg" , "SBOM present, downloading" , "workflowID" , workflowID , "integration" , Kind , "name" , m .Name )
137135 // Download SBOM
138- if err := backend . Download (ctx , buf , digest ); err != nil {
139- return err
136+ if err := uc . casClient . Download (ctx , repo . SecretName , buf , digest ); err != nil {
137+ return fmt . Errorf ( "downloading from CAS: %w" , err )
140138 }
139+
141140 uc .log .Infow ("msg" , "SBOM downloaded" , "digest" , digest , "workflowID" , workflowID , "integration" , Kind , "name" , m .Name )
142141
143142 // Run integrations with that sbom
0 commit comments