Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
13 changes: 8 additions & 5 deletions pkg/app/AppService.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ type AppService interface {
GetConfigMapAndSecretJson(appId int, envId int) ([]byte, error)
UpdateCdWorkflowRunnerByACDObject(app *v1alpha1.Application, cdWfrId int, updateTimedOutStatus bool) error
UpdateDeploymentStatusForGitOpsPipelines(app *v1alpha1.Application, applicationClusterId int, statusTime time.Time, isAppStore bool) (bool, bool, *chartConfig.PipelineOverride, error)
WriteCDSuccessEvent(appId int, envId int, override *chartConfig.PipelineOverride)
WriteCDNotificationEvent(appId int, envId int, override *chartConfig.PipelineOverride, eventType eventUtil.EventType)
CreateGitOpsRepo(app *app.App, targetRevision string, userId int32) (gitopsRepoName string, chartGitAttr *commonBean.ChartGitAttribute, err error)

// TODO: move inside reader service
Expand Down Expand Up @@ -309,6 +309,7 @@ func (impl *AppServiceImpl) UpdateDeploymentStatusForGitOpsPipelines(app *v1alph
impl.logger.Errorw("error on update cd workflow runner", "CdWorkflowId", pipelineOverride.CdWorkflowId, "status", cdWorkflow2.WorkflowTimedOut, "err", err)
return isSucceeded, isTimelineUpdated, pipelineOverride, err
}
go impl.WriteCDNotificationEvent(cdPipeline.AppId, cdPipeline.EnvironmentId, pipelineOverride, eventUtil.Fail)
return isSucceeded, isTimelineUpdated, pipelineOverride, nil
}
if reconciledAt.IsZero() || (kubectlSyncedTimeline != nil && kubectlSyncedTimeline.Id > 0 && reconciledAt.After(kubectlSyncedTimeline.StatusTime)) {
Expand All @@ -325,7 +326,9 @@ func (impl *AppServiceImpl) UpdateDeploymentStatusForGitOpsPipelines(app *v1alph
}
if isSucceeded {
impl.logger.Infow("writing cd success event", "gitHash", gitHash, "pipelineOverride", pipelineOverride)
impl.asyncRunnable.Execute(func() { impl.WriteCDSuccessEvent(cdPipeline.AppId, cdPipeline.EnvironmentId, pipelineOverride) })
impl.asyncRunnable.Execute(func() {
impl.WriteCDNotificationEvent(cdPipeline.AppId, cdPipeline.EnvironmentId, pipelineOverride, eventUtil.Success)
})
}
} else {
impl.logger.Debugw("event received for older triggered revision", "gitHash", gitHash)
Expand Down Expand Up @@ -773,9 +776,9 @@ func (impl *AppServiceImpl) UpdatePipelineStatusTimelineForApplicationChanges(ap
return isTimelineUpdated, isTimelineTimedOut, kubectlApplySyncedTimeline, nil
}

func (impl *AppServiceImpl) WriteCDSuccessEvent(appId int, envId int, override *chartConfig.PipelineOverride) {
event, _ := impl.eventFactory.Build(eventUtil.Success, &override.PipelineId, appId, &envId, eventUtil.CD)
impl.logger.Debugw("event WriteCDSuccessEvent", "event", event, "override", override)
func (impl *AppServiceImpl) WriteCDNotificationEvent(appId int, envId int, override *chartConfig.PipelineOverride, eventType eventUtil.EventType) {
event, _ := impl.eventFactory.Build(eventType, &override.PipelineId, appId, &envId, eventUtil.CD)
impl.logger.Debugw("event WriteCDNotificationEvent", "event", event, "override", override)
event = impl.eventFactory.BuildExtraCDData(event, nil, override.Id, bean.CD_WORKFLOW_TYPE_DEPLOY)
_, evtErr := impl.eventClient.WriteNotificationEvent(event)
if evtErr != nil {
Expand Down
75 changes: 0 additions & 75 deletions pkg/app/DeploymentEventHandler.go

This file was deleted.

5 changes: 4 additions & 1 deletion pkg/deployment/trigger/devtronApps/HandlerService.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ type HandlerServiceImpl struct {
workflowService executor.WorkflowService
blobConfigStorageService pipeline.BlobStorageConfigService
asyncRunnable *async.Runnable
appService app.AppService
}

func NewHandlerServiceImpl(logger *zap.SugaredLogger,
Expand Down Expand Up @@ -230,7 +231,8 @@ func NewHandlerServiceImpl(logger *zap.SugaredLogger,
ciLogService pipeline.CiLogService,
workflowService executor.WorkflowService,
blobConfigStorageService pipeline.BlobStorageConfigService,
asyncRunnable *async.Runnable) (*HandlerServiceImpl, error) {
asyncRunnable *async.Runnable,
appService app.AppService) (*HandlerServiceImpl, error) {
impl := &HandlerServiceImpl{
logger: logger,
cdWorkflowCommonService: cdWorkflowCommonService,
Expand Down Expand Up @@ -297,6 +299,7 @@ func NewHandlerServiceImpl(logger *zap.SugaredLogger,
workflowService: workflowService,
blobConfigStorageService: blobConfigStorageService,
asyncRunnable: asyncRunnable,
appService: appService,
}
config, err := types.GetCdConfig()
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"errors"
"fmt"
util2 "github.com/devtron-labs/devtron/util/event"
"net/http"
"path"
"regexp"
Expand Down Expand Up @@ -317,6 +318,12 @@ func (impl *HandlerServiceImpl) ManualCdTrigger(triggerContext bean.TriggerConte
if err != nil {
impl.logger.Errorw("error while updating current runner status to failed", "cdWfr", runner.Id, "err", err)
}
pipelineOverride, err := impl.pipelineOverrideRepository.FindLatestByCdWorkflowId(runner.CdWorkflowId)
if err != nil {
impl.logger.Errorw("error in getting latest pipeline override by cdWorkflowId", "err", err, "cdWorkflowId", runner.CdWorkflowId)
return 0, "", nil, err
}
go impl.appService.WriteCDNotificationEvent(pipelineOverride.Pipeline.AppId, pipelineOverride.Pipeline.EnvironmentId, pipelineOverride, util2.Fail)
return 0, "", nil, releaseErr
}

Expand Down
18 changes: 12 additions & 6 deletions pkg/workflow/status/WorkflowStatusService.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"fmt"
"github.com/devtron-labs/common-lib/async"
util "github.com/devtron-labs/devtron/util/event"
"time"

bean2 "github.com/devtron-labs/devtron/api/bean"
Expand Down Expand Up @@ -171,12 +172,20 @@ func (impl *WorkflowStatusServiceImpl) CheckHelmAppStatusPeriodicallyAndUpdateIn
}
wfr.UpdatedBy = 1
wfr.UpdatedOn = time.Now()

pipelineOverride, err := impl.pipelineOverrideRepository.FindLatestByCdWorkflowId(wfr.CdWorkflowId)
if err != nil {
impl.logger.Errorw("error in getting latest pipeline override by cdWorkflowId", "err", err, "cdWorkflowId", wfr.CdWorkflowId)
return err
}

if wfr.Status == cdWorkflow2.WorkflowFailed {
err = impl.pipelineStatusTimelineService.MarkPipelineStatusTimelineSuperseded(wfr.RefCdWorkflowRunnerId)
if err != nil {
impl.logger.Errorw("error updating CdPipelineStatusTimeline", "err", err)
return err
}
go impl.appService.WriteCDNotificationEvent(pipelineOverride.Pipeline.AppId, pipelineOverride.Pipeline.EnvironmentId, pipelineOverride, util.Fail)
}
err = impl.cdWorkflowRunnerService.UpdateCdWorkflowRunnerWithStage(wfr)
if err != nil {
Expand All @@ -196,19 +205,16 @@ func (impl *WorkflowStatusServiceImpl) CheckHelmAppStatusPeriodicallyAndUpdateIn

impl.logger.Infow("updated workflow runner status for helm app", "wfr", wfr)
if wfr.Status == cdWorkflow2.WorkflowSucceeded {
pipelineOverride, err := impl.pipelineOverrideRepository.FindLatestByCdWorkflowId(wfr.CdWorkflowId)
if err != nil {
impl.logger.Errorw("error in getting latest pipeline override by cdWorkflowId", "err", err, "cdWorkflowId", wfr.CdWorkflowId)
return err
}
impl.asyncRunnable.Execute(func() {
impl.appService.WriteCDSuccessEvent(pipelineOverride.Pipeline.AppId, pipelineOverride.Pipeline.EnvironmentId, pipelineOverride)
impl.appService.WriteCDNotificationEvent(pipelineOverride.Pipeline.AppId, pipelineOverride.Pipeline.EnvironmentId, pipelineOverride, util.Success)
})
err = impl.workflowDagExecutor.HandleDeploymentSuccessEvent(bean3.TriggerContext{}, pipelineOverride)
if err != nil {
impl.logger.Errorw("error on handling deployment success event", "wfr", wfr, "err", err)
return err
}
} else if wfr.Status == cdWorkflow2.WorkflowTimedOut {
go impl.appService.WriteCDNotificationEvent(pipelineOverride.Pipeline.AppId, pipelineOverride.Pipeline.EnvironmentId, pipelineOverride, util.Fail)
}
}
return nil
Expand Down
4 changes: 2 additions & 2 deletions wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.