Skip to content

Commit 7fbf67a

Browse files
authored
chore: oss ent triggerService changes (#6189)
* wip * wip * wip * wip * wip * wip * wip * wip * wip * post, trigger service and common changes * removed change needed for ent after develpo sync in ent
1 parent 0e7e4ab commit 7fbf67a

22 files changed

+594
-297
lines changed

api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ func (handler PipelineTriggerRestHandlerImpl) OverrideConfig(w http.ResponseWrit
150150
triggerContext := bean3.TriggerContext{
151151
Context: ctx,
152152
}
153-
mergeResp, helmPackageName, err := handler.cdTriggerService.ManualCdTrigger(triggerContext, &overrideRequest)
153+
mergeResp, helmPackageName, _, err := handler.cdTriggerService.ManualCdTrigger(triggerContext, &overrideRequest)
154154
span.End()
155155
if err != nil {
156156
handler.logger.Errorw("request err, OverrideConfig", "err", err, "payload", overrideRequest)

cmd/external-app/wire_gen.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/app/AppService.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ import (
2727
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig/adapter/cdWorkflow"
2828
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig/bean/timelineStatus"
2929
cdWorkflow2 "github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig/bean/workflow/cdWorkflow"
30-
"github.com/devtron-labs/devtron/pkg/argoApplication/helper"
30+
bean3 "github.com/devtron-labs/devtron/pkg/app/bean"
3131
installedAppReader "github.com/devtron-labs/devtron/pkg/appStore/installedApp/read"
32+
"github.com/devtron-labs/devtron/pkg/argoApplication/helper"
3233
common2 "github.com/devtron-labs/devtron/pkg/deployment/common"
3334
bean2 "github.com/devtron-labs/devtron/pkg/deployment/common/bean"
3435
commonBean "github.com/devtron-labs/devtron/pkg/deployment/gitOps/common/bean"
@@ -775,14 +776,15 @@ func (impl *AppServiceImpl) BuildCDSuccessPayload(appName string, environmentNam
775776
}
776777

777778
type ValuesOverrideResponse struct {
778-
MergedValues string
779-
ReleaseOverrideJSON string
780-
EnvOverride *bean6.EnvConfigOverride
781-
PipelineStrategy *chartConfig.PipelineStrategy
782-
PipelineOverride *chartConfig.PipelineOverride
783-
Artifact *repository.CiArtifact
784-
Pipeline *pipelineConfig.Pipeline
785-
DeploymentConfig *bean2.DeploymentConfig
779+
MergedValues string
780+
ReleaseOverrideJSON string
781+
EnvOverride *bean6.EnvConfigOverride
782+
PipelineStrategy *chartConfig.PipelineStrategy
783+
PipelineOverride *chartConfig.PipelineOverride
784+
Artifact *repository.CiArtifact
785+
Pipeline *pipelineConfig.Pipeline
786+
DeploymentConfig *bean2.DeploymentConfig
787+
ManifestPushTemplate *bean3.ManifestPushTemplate
786788
}
787789

788790
func (impl *AppServiceImpl) buildACDContext() (acdContext context.Context, err error) {

pkg/deployment/deployedApp/DeployedAppService.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (impl *DeployedAppServiceImpl) StopStartApp(ctx context.Context, stopReques
110110
Context: ctx,
111111
ReferenceId: stopRequest.ReferenceId,
112112
}
113-
id, _, err := impl.cdTriggerService.ManualCdTrigger(triggerContext, overrideRequest)
113+
id, _, _, err := impl.cdTriggerService.ManualCdTrigger(triggerContext, overrideRequest)
114114
if err != nil {
115115
impl.logger.Errorw("error in stopping app", "err", err, "appId", stopRequest.AppId, "envId", stopRequest.EnvironmentId)
116116
return 0, err

pkg/deployment/trigger/devtronApps/PostStageTriggerService.go

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
bean2 "github.com/devtron-labs/devtron/api/bean"
2222
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
2323
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig/bean/workflow/cdWorkflow"
24+
bean4 "github.com/devtron-labs/devtron/pkg/app/bean"
2425
"github.com/devtron-labs/devtron/pkg/deployment/trigger/devtronApps/bean"
2526
bean3 "github.com/devtron-labs/devtron/pkg/pipeline/bean"
2627
repository3 "github.com/devtron-labs/devtron/pkg/pipeline/history/repository"
@@ -29,9 +30,9 @@ import (
2930
"time"
3031
)
3132

32-
func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) error {
33+
func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) (*bean4.ManifestPushTemplate, error) {
3334
request.WorkflowType = bean2.CD_WORKFLOW_TYPE_POST
34-
//setting triggeredAt variable to have consistent data for various audit log places in db for deployment time
35+
// setting triggeredAt variable to have consistent data for various audit log places in db for deployment time
3536
triggeredAt := time.Now()
3637
triggeredBy := request.TriggeredBy
3738
pipeline := request.Pipeline
@@ -40,21 +41,23 @@ func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) er
4041
env, namespace, err := impl.getEnvAndNsIfRunStageInEnv(ctx, request)
4142
if err != nil {
4243
impl.logger.Errorw("error, getEnvAndNsIfRunStageInEnv", "err", err, "pipeline", pipeline, "stage", request.WorkflowType)
43-
return nil
44+
return nil, nil
4445
}
4546
request.RunStageInEnvNamespace = namespace
47+
4648
cdWf, runner, err := impl.createStartingWfAndRunner(request, triggeredAt)
4749
if err != nil {
4850
impl.logger.Errorw("error in creating wf starting and runner entry", "err", err, "request", request)
49-
return err
51+
return nil, err
5052
}
5153
if cdWf.CiArtifact == nil || cdWf.CiArtifact.Id == 0 {
5254
cdWf.CiArtifact, err = impl.ciArtifactRepository.Get(cdWf.CiArtifactId)
5355
if err != nil {
5456
impl.logger.Errorw("error fetching artifact data", "err", err)
55-
return err
57+
return nil, err
5658
}
5759
}
60+
5861
// Migration of deprecated DataSource Type
5962
if cdWf.CiArtifact.IsMigrationRequired() {
6063
migrationErr := impl.ciArtifactRepository.MigrateToWebHookDataSourceType(cdWf.CiArtifact.Id)
@@ -63,24 +66,43 @@ func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) er
6366
}
6467
}
6568

69+
filterEvaluationAudit, err := impl.checkFeasibilityForPostStage(pipeline, &request, env, cdWf, triggeredBy)
70+
if err != nil {
71+
impl.logger.Errorw("error, checkFeasibilityForPostStage", "err", err, "pipeline", pipeline)
72+
return nil, nil
73+
}
74+
6675
envDevploymentConfig, err := impl.deploymentConfigService.GetAndMigrateConfigIfAbsentForDevtronApps(pipeline.AppId, pipeline.EnvironmentId)
6776
if err != nil {
6877
impl.logger.Errorw("error in fetching deployment config by appId and envId", "appId", pipeline.AppId, "envId", pipeline.EnvironmentId, "err", err)
69-
return err
78+
return nil, err
79+
}
80+
81+
dbErr := impl.createAuditDataForDeploymentWindowBypass(request, runner.Id)
82+
if dbErr != nil {
83+
impl.logger.Errorw("error in creating audit data for deployment window bypass", "runnerId", runner.Id, "err", dbErr)
84+
// skip error for audit data creation
85+
}
86+
87+
err = impl.handlerFilterEvaluationAudit(filterEvaluationAudit, runner)
88+
if err != nil {
89+
impl.logger.Errorw("error, handlerFilterEvaluationAudit", "err", err)
90+
return nil, err
7091
}
7192

7293
// custom GitOps repo url validation --> Start
7394
err = impl.handleCustomGitOpsRepoValidation(runner, pipeline, envDevploymentConfig, triggeredBy)
7495
if err != nil {
7596
impl.logger.Errorw("custom GitOps repository validation error, TriggerPreStage", "err", err)
76-
return err
97+
return nil, err
7798
}
7899
// custom GitOps repo url validation --> Ends
79100

101+
// checking vulnerability for the selected image
80102
err = impl.checkVulnerabilityStatusAndFailWfIfNeeded(ctx, cdWf.CiArtifact, pipeline, runner, triggeredBy)
81103
if err != nil {
82104
impl.logger.Errorw("error, checkVulnerabilityStatusAndFailWfIfNeeded", "err", err, "runner", runner)
83-
return err
105+
return nil, err
84106
}
85107
cdStageWorkflowRequest, err := impl.buildWFRequest(runner, cdWf, pipeline, envDevploymentConfig, triggeredBy)
86108
if err != nil {
@@ -97,19 +119,23 @@ func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) er
97119
runner.Status = cdWorkflow.WorkflowFailed
98120
runner.Message = err.Error()
99121
_ = impl.cdWorkflowRepository.UpdateWorkFlowRunner(runner)
100-
return err
122+
return nil, err
101123
}
102124

103-
_, err = impl.cdWorkflowService.SubmitWorkflow(cdStageWorkflowRequest)
125+
_, jobHelmPackagePath, err := impl.cdWorkflowService.SubmitWorkflow(cdStageWorkflowRequest)
104126
if err != nil {
105127
impl.logger.Errorw("error in submitting workflow", "err", err, "workflowId", cdStageWorkflowRequest.WorkflowId, "pipeline", pipeline, "env", env)
106-
return err
128+
return nil, err
129+
}
130+
manifestPushTempate, err := impl.getManifestPushTemplateForPostStage(request, envDevploymentConfig, jobHelmPackagePath, cdStageWorkflowRequest, cdWf, runner, pipeline, triggeredBy, triggeredAt)
131+
if err != nil {
132+
impl.logger.Errorw("error in getting manifest push template", "err", err)
133+
return nil, err
107134
}
108-
109135
wfr, err := impl.cdWorkflowRepository.FindByWorkflowIdAndRunnerType(context.Background(), cdWf.Id, bean2.CD_WORKFLOW_TYPE_POST)
110136
if err != nil {
111137
impl.logger.Errorw("error in getting wfr by workflowId and runnerType", "err", err, "wfId", cdWf.Id)
112-
return err
138+
return nil, err
113139
}
114140
wfr.ImagePathReservationIds = pluginImagePathReservationIds
115141
err = impl.cdWorkflowRepository.UpdateWorkFlowRunner(&wfr)
@@ -124,19 +150,19 @@ func (impl *TriggerServiceImpl) TriggerPostStage(request bean.TriggerRequest) er
124150
if evtErr != nil {
125151
impl.logger.Errorw("CD trigger event not sent", "error", evtErr)
126152
}
127-
//creating cd config history entry
153+
// creating cd config history entry
128154
err = impl.prePostCdScriptHistoryService.CreatePrePostCdScriptHistory(pipeline, nil, repository3.POST_CD_TYPE, true, triggeredBy, triggeredAt)
129155
if err != nil {
130156
impl.logger.Errorw("error in creating post cd script entry", "err", err, "pipeline", pipeline)
131-
return err
157+
return nil, err
132158
}
133-
return nil
159+
return manifestPushTempate, nil
134160
}
135161

136-
func (impl *TriggerServiceImpl) buildWfRequestErrorHandler(runner *pipelineConfig.CdWorkflowRunner, err error, triggeredBy int32) error {
162+
func (impl *TriggerServiceImpl) buildWfRequestErrorHandler(runner *pipelineConfig.CdWorkflowRunner, err error, triggeredBy int32) (*bean4.ManifestPushTemplate, error) {
137163
dbErr := impl.cdWorkflowCommonService.MarkCurrentDeploymentFailed(runner, err, triggeredBy)
138164
if dbErr != nil {
139165
impl.logger.Errorw("error while updating current runner status to failed, buildWfRequestErrorHandler", "runner", runner.Id, "err", dbErr, "releaseErr", err)
140166
}
141-
return err
167+
return nil, err
142168
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (c) 2024. Devtron Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package devtronApps
18+
19+
import (
20+
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
21+
bean4 "github.com/devtron-labs/devtron/pkg/app/bean"
22+
"github.com/devtron-labs/devtron/pkg/cluster/environment/repository"
23+
bean5 "github.com/devtron-labs/devtron/pkg/deployment/common/bean"
24+
"github.com/devtron-labs/devtron/pkg/deployment/trigger/devtronApps/bean"
25+
"github.com/devtron-labs/devtron/pkg/pipeline/types"
26+
"time"
27+
)
28+
29+
func (impl *TriggerServiceImpl) checkFeasibilityForPostStage(pipeline *pipelineConfig.Pipeline, request *bean.TriggerRequest,
30+
env *repository.Environment, cdWf *pipelineConfig.CdWorkflow, triggeredBy int32) (interface{}, error) {
31+
//here return type is interface as ResourceFilterEvaluationAudit is not present in this version
32+
return nil, nil
33+
}
34+
35+
func (impl *TriggerServiceImpl) getManifestPushTemplateForPostStage(request bean.TriggerRequest, envDevploymentConfig *bean5.DeploymentConfig,
36+
jobHelmPackagePath string, cdStageWorkflowRequest *types.WorkflowRequest, cdWf *pipelineConfig.CdWorkflow, runner *pipelineConfig.CdWorkflowRunner,
37+
pipeline *pipelineConfig.Pipeline, triggeredBy int32, triggeredAt time.Time) (*bean4.ManifestPushTemplate, error) {
38+
return nil, nil
39+
}

0 commit comments

Comments
 (0)