Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/restHandler/PipelineTriggerRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func (handler PipelineTriggerRestHandlerImpl) OverrideConfig(w http.ResponseWrit
}
ctx := context.WithValue(r.Context(), "token", acdToken)
_, span := otel.Tracer("orchestrator").Start(ctx, "workflowDagExecutor.ManualCdTrigger")
mergeResp, _, err := handler.workflowDagExecutor.ManualCdTrigger(&overrideRequest, ctx)
mergeResp, err := handler.workflowDagExecutor.ManualCdTrigger(&overrideRequest, ctx)
span.End()
if err != nil {
handler.logger.Errorw("request err, OverrideConfig", "err", err, "payload", overrideRequest)
Expand Down
12 changes: 8 additions & 4 deletions pkg/app/AppService.go
Original file line number Diff line number Diff line change
Expand Up @@ -1721,13 +1721,17 @@ func (impl *AppServiceImpl) DeployArgocdApp(overrideRequest *bean.ValuesOverride
func (impl *AppServiceImpl) DeployApp(overrideRequest *bean.ValuesOverrideRequest, valuesOverrideResponse *ValuesOverrideResponse, triggeredAt time.Time, ctx context.Context) error {

if IsAcdApp(overrideRequest.DeploymentAppType) {
_, span := otel.Tracer("orchestrator").Start(ctx, "DeployArgocdApp")
err := impl.DeployArgocdApp(overrideRequest, valuesOverrideResponse, ctx)
span.End()
if err != nil {
impl.logger.Errorw("error in deploying app on argocd", "err", err)
return err
}
} else if IsHelmApp(overrideRequest.DeploymentAppType) {
_, span := otel.Tracer("orchestrator").Start(ctx, "createHelmAppForCdPipeline")
_, err := impl.createHelmAppForCdPipeline(overrideRequest, valuesOverrideResponse, triggeredAt, ctx)
span.End()
if err != nil {
impl.logger.Errorw("error in creating or updating helm application for cd pipeline", "err", err)
return err
Expand Down Expand Up @@ -1792,6 +1796,10 @@ func (impl *AppServiceImpl) TriggerPipeline(overrideRequest *bean.ValuesOverride
return releaseNo, manifest, err
}

_, span := otel.Tracer("orchestrator").Start(ctx, "CreateHistoriesForDeploymentTrigger")
err = impl.CreateHistoriesForDeploymentTrigger(valuesOverrideResponse.Pipeline, valuesOverrideResponse.PipelineStrategy, valuesOverrideResponse.EnvOverride, triggerEvent.TriggerdAt, triggerEvent.TriggeredBy)
span.End()

if triggerEvent.GetManifestInResponse {
//get stream and directly redirect the stram to response
timeline := &pipelineConfig.PipelineStatusTimeline{
Expand Down Expand Up @@ -1853,10 +1861,6 @@ func (impl *AppServiceImpl) TriggerPipeline(overrideRequest *bean.ValuesOverride
}
}

_, span := otel.Tracer("orchestrator").Start(ctx, "CreateHistoriesForDeploymentTrigger")
err = impl.CreateHistoriesForDeploymentTrigger(valuesOverrideResponse.Pipeline, valuesOverrideResponse.PipelineStrategy, valuesOverrideResponse.EnvOverride, triggerEvent.TriggerdAt, triggerEvent.TriggeredBy)
span.End()

go impl.WriteCDTriggerEvent(overrideRequest, valuesOverrideResponse.Artifact, valuesOverrideResponse.PipelineOverride.PipelineReleaseCounter, valuesOverrideResponse.PipelineOverride.Id)

if valuesOverrideResponse.Artifact.ScanEnabled {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ func (impl InstalledAppRepositoryImpl) GetLatestInstalledAppVersionByGitHash(git
func (impl InstalledAppRepositoryImpl) GetInstalledAppVersion(id int) (*InstalledAppVersions, error) {
model := &InstalledAppVersions{}
err := impl.dbConnection.Model(model).
Column("installed_app_versions.*", "InstalledApp", "InstalledApp.App", "InstalledApp.Environment", "AppStoreApplicationVersion", "AppStoreApplicationVersion.AppStore", "InstalledApp.App.Team").
Column("installed_app_versions.*", "InstalledApp", "InstalledApp.App", "InstalledApp.Environment", "InstalledApp.Environment.Cluster", "AppStoreApplicationVersion", "AppStoreApplicationVersion.AppStore", "InstalledApp.App.Team").
Column("AppStoreApplicationVersion.AppStore.ChartRepo").
Where("installed_app_versions.id = ?", id).Where("installed_app_versions.active = true").Select()
return model, err
Expand Down
2 changes: 1 addition & 1 deletion pkg/bulkAction/BulkUpdateService.go
Original file line number Diff line number Diff line change
Expand Up @@ -1294,7 +1294,7 @@ func (impl BulkUpdateServiceImpl) SubscribeToCdBulkTriggerTopic() error {
return
}

_, _, err = impl.workflowDagExecutor.ManualCdTrigger(event.ValuesOverrideRequest, ctx)
_, err = impl.workflowDagExecutor.ManualCdTrigger(event.ValuesOverrideRequest, ctx)
if err != nil {
impl.logger.Errorw("Error triggering CD",
"topic", pubsub.CD_BULK_DEPLOY_TRIGGER_TOPIC,
Expand Down
41 changes: 20 additions & 21 deletions pkg/pipeline/WorkflowDagExecutor.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ type WorkflowDagExecutor interface {
Subscribe() error
TriggerPostStage(cdWf *pipelineConfig.CdWorkflow, cdPipeline *pipelineConfig.Pipeline, triggeredBy int32) error
TriggerDeployment(cdWf *pipelineConfig.CdWorkflow, artifact *repository.CiArtifact, pipeline *pipelineConfig.Pipeline, applyAuth bool, triggeredBy int32) error
ManualCdTrigger(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (int, []byte, error)
ManualCdTrigger(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (int, error)
TriggerBulkDeploymentAsync(requests []*BulkTriggerRequest, UserId int32) (interface{}, error)
StopStartApp(stopRequest *StopAppRequest, ctx context.Context) (int, error)
TriggerBulkHibernateAsync(request StopDeploymentGroupRequest, ctx context.Context) (interface{}, error)
Expand Down Expand Up @@ -1350,7 +1350,7 @@ func (impl *WorkflowDagExecutorImpl) StopStartApp(stopRequest *StopAppRequest, c
} else {
return 0, fmt.Errorf("unsupported operation %s", stopRequest.RequestType)
}
id, _, err := impl.ManualCdTrigger(overrideRequest, ctx)
id, err := impl.ManualCdTrigger(overrideRequest, ctx)
if err != nil {
impl.logger.Errorw("error in stopping app", "err", err, "appId", stopRequest.AppId, "envId", stopRequest.EnvironmentId)
return 0, err
Expand Down Expand Up @@ -1386,19 +1386,18 @@ func (impl *WorkflowDagExecutorImpl) GetArtifactVulnerabilityStatus(artifact *re
return isVulnerable, nil
}

func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (int, []byte, error) {
func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (int, error) {
//setting triggeredAt variable to have consistent data for various audit log places in db for deployment time
triggeredAt := time.Now()
releaseId := 0
var manifest []byte

var err error
_, span := otel.Tracer("orchestrator").Start(ctx, "pipelineRepository.FindById")
cdPipeline, err := impl.pipelineRepository.FindById(overrideRequest.PipelineId)
span.End()
if err != nil {
impl.logger.Errorf("invalid req", "err", err, "req", overrideRequest)
return 0, manifest, err
return 0, err
}
impl.appService.SetPipelineFieldsInOverrideRequest(overrideRequest, cdPipeline)

Expand All @@ -1408,14 +1407,14 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
span.End()
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
_, span = otel.Tracer("orchestrator").Start(ctx, "TriggerPreStage")
err = impl.TriggerPreStage(ctx, nil, artifact, cdPipeline, overrideRequest.UserId, false)
span.End()
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
} else if overrideRequest.CdWorkflowType == bean.CD_WORKFLOW_TYPE_DEPLOY {
if overrideRequest.DeploymentType == models.DEPLOYMENTTYPE_UNKNOWN {
Expand All @@ -1424,7 +1423,7 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
cdWf, err := impl.cdWorkflowRepository.FindByWorkflowIdAndRunnerType(ctx, overrideRequest.CdWorkflowId, bean.CD_WORKFLOW_TYPE_PRE)
if err != nil && !util.IsErrNoRows(err) {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}

cdWorkflowId := cdWf.CdWorkflowId
Expand All @@ -1437,7 +1436,7 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
err := impl.cdWorkflowRepository.SaveWorkFlow(ctx, cdWf)
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
cdWorkflowId = cdWf.Id
}
Expand All @@ -1457,7 +1456,7 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
overrideRequest.WfrId = savedWfr.Id
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
runner.CdWorkflow = &pipelineConfig.CdWorkflow{
Pipeline: cdPipeline,
Expand All @@ -1479,11 +1478,11 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
span.End()
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
isVulnerable, err := impl.GetArtifactVulnerabilityStatus(artifact, cdPipeline, ctx)
if err != nil {
return 0, manifest, err
return 0, err
}
if isVulnerable == true {
// if image vulnerable, update timeline status and return
Expand All @@ -1507,10 +1506,10 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
if err != nil {
impl.logger.Errorw("error in creating timeline status for deployment fail - cve policy violation", "err", err, "timeline", timeline)
}
return 0, manifest, fmt.Errorf("found vulnerability for image digest %s", artifact.ImageDigest)
return 0, fmt.Errorf("found vulnerability for image digest %s", artifact.ImageDigest)
}
_, span = otel.Tracer("orchestrator").Start(ctx, "appService.TriggerRelease")
releaseId, manifest, err = impl.appService.TriggerRelease(overrideRequest, ctx, triggeredAt, overrideRequest.UserId)
releaseId, _, err = impl.appService.TriggerRelease(overrideRequest, ctx, triggeredAt, overrideRequest.UserId)
span.End()

if overrideRequest.DeploymentAppType == util.PIPELINE_DEPLOYMENT_TYPE_MANIFEST_DOWNLOAD {
Expand All @@ -1529,7 +1528,7 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
updateErr := impl.cdWorkflowRepository.UpdateWorkFlowRunner(runner)
if updateErr != nil {
impl.logger.Errorw("error in updating runner for manifest_download type", "err", err)
return 0, manifest, updateErr
return 0, updateErr
}
}

Expand All @@ -1538,41 +1537,41 @@ func (impl *WorkflowDagExecutorImpl) ManualCdTrigger(overrideRequest *bean.Value
span.End()
if err1 != nil || err != nil {
impl.logger.Errorw("error while update previous cd workflow runners", "err", err, "runner", runner, "pipelineId", cdPipeline.Id)
return 0, manifest, err
return 0, err
}
} else if overrideRequest.CdWorkflowType == bean.CD_WORKFLOW_TYPE_POST {
cdWfRunner, err := impl.cdWorkflowRepository.FindByWorkflowIdAndRunnerType(ctx, overrideRequest.CdWorkflowId, bean.CD_WORKFLOW_TYPE_DEPLOY)
if err != nil && !util.IsErrNoRows(err) {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}

var cdWf *pipelineConfig.CdWorkflow
if cdWfRunner.CdWorkflowId == 0 {
cdWf := &pipelineConfig.CdWorkflow{
cdWf = &pipelineConfig.CdWorkflow{
CiArtifactId: overrideRequest.CiArtifactId,
PipelineId: overrideRequest.PipelineId,
AuditLog: sql.AuditLog{CreatedOn: triggeredAt, CreatedBy: overrideRequest.UserId, UpdatedOn: triggeredAt, UpdatedBy: overrideRequest.UserId},
}
err := impl.cdWorkflowRepository.SaveWorkFlow(ctx, cdWf)
if err != nil {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
} else {
_, span = otel.Tracer("orchestrator").Start(ctx, "cdWorkflowRepository.FindById")
cdWf, err = impl.cdWorkflowRepository.FindById(overrideRequest.CdWorkflowId)
span.End()
if err != nil && !util.IsErrNoRows(err) {
impl.logger.Errorw("err", "err", err)
return 0, manifest, err
return 0, err
}
}
_, span = otel.Tracer("orchestrator").Start(ctx, "TriggerPostStage")
err = impl.TriggerPostStage(cdWf, cdPipeline, overrideRequest.UserId)
span.End()
}
return releaseId, manifest, err
return releaseId, err
}

type BulkTriggerRequest struct {
Expand Down
1 change: 1 addition & 0 deletions scripts/sql/146_helm_package.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
alter table cd_workflow_runner drop column helm_reference_chart;
2 changes: 2 additions & 0 deletions scripts/sql/146_helm_package.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE cd_workflow_runner ADD COLUMN helm_reference_chart bytea;
alter table cluster drop column is_virtual_cluster;