Skip to content

Commit 72dcd49

Browse files
Merge pull request #7035 from devtron-labs/support-trigger-conditions-pipeline-level-oss
misc: Conditions saved with the plugin definition (plugin_step_condition) a…
2 parents a463577 + 36dc113 commit 72dcd49

3 files changed

Lines changed: 319 additions & 33 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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 pipeline
18+
19+
import (
20+
"testing"
21+
22+
"github.com/devtron-labs/devtron/pkg/pipeline/repository"
23+
"github.com/stretchr/testify/assert"
24+
"go.uber.org/zap"
25+
)
26+
27+
type fakePipelineStageRepoForWfRequest struct {
28+
repository.PipelineStageRepository
29+
variables []*repository.PipelineStageStepVariable
30+
conditions []*repository.PipelineStageStepCondition
31+
}
32+
33+
func (f *fakePipelineStageRepoForWfRequest) GetVariablesByStepId(stepId int) ([]*repository.PipelineStageStepVariable, error) {
34+
return f.variables, nil
35+
}
36+
37+
func (f *fakePipelineStageRepoForWfRequest) GetConditionsByStepId(stepId int) ([]*repository.PipelineStageStepCondition, error) {
38+
return f.conditions, nil
39+
}
40+
41+
// Regression guard for the plugin-condition change: the conditions saved on the pipeline step
42+
// (pipeline_stage_step_condition) are the ones that must keep reaching ci-runner.
43+
func TestBuildVariableAndConditionDataForWfRequest_PipelineLevelConditionsAreSent(t *testing.T) {
44+
repo := &fakePipelineStageRepoForWfRequest{
45+
variables: []*repository.PipelineStageStepVariable{
46+
{Id: 198, PipelineStageStepId: 225, Name: "FILE_PATH", Format: repository.PIPELINE_STAGE_STEP_VARIABLE_FORMAT_TYPE_STRING, VariableType: repository.PIPELINE_STAGE_STEP_VARIABLE_TYPE_INPUT, ValueType: repository.PIPELINE_STAGE_STEP_VARIABLE_VALUE_TYPE_NEW, Value: "/tmp/other", AllowEmptyValue: true, IsExposed: true, VariableStepIndexInPlugin: 1},
47+
{Id: 199, PipelineStageStepId: 225, Name: "CONTENT", Format: repository.PIPELINE_STAGE_STEP_VARIABLE_FORMAT_TYPE_STRING, VariableType: repository.PIPELINE_STAGE_STEP_VARIABLE_TYPE_OUTPUT, ValueType: repository.PIPELINE_STAGE_STEP_VARIABLE_VALUE_TYPE_NEW, IsExposed: true, VariableStepIndexInPlugin: 1},
48+
},
49+
conditions: []*repository.PipelineStageStepCondition{
50+
{Id: 15, PipelineStageStepId: 225, ConditionVariableId: 198, ConditionType: repository.PIPELINE_STAGE_STEP_CONDITION_TYPE_TRIGGER, ConditionalOperator: "==", ConditionalValue: "/tmp/other"},
51+
{Id: 16, PipelineStageStepId: 225, ConditionVariableId: 199, ConditionType: repository.PIPELINE_STAGE_STEP_CONDITION_TYPE_SUCCESS, ConditionalOperator: "==", ConditionalValue: "ok"},
52+
{Id: 17, PipelineStageStepId: 225, ConditionVariableId: 0, ConditionType: repository.PIPELINE_STAGE_STEP_CONDITION_TYPE_SKIP, ConditionalOperator: "!=", ConditionalValue: "x"},
53+
},
54+
}
55+
impl := &PipelineStageServiceImpl{logger: zap.NewNop().Sugar(), pipelineStageRepository: repo}
56+
data, err := impl.buildVariableAndConditionDataForWfRequest(225)
57+
assert.NoError(t, err)
58+
if assert.Len(t, data.GetInputVariables(), 1) {
59+
assert.Equal(t, "/tmp/other", data.GetInputVariables()[0].Value)
60+
assert.Equal(t, 1, data.GetInputVariables()[0].VariableStepIndexInPlugin)
61+
}
62+
assert.Len(t, data.GetOutputVariables(), 1)
63+
triggerSkip := data.GetTriggerSkipConditions()
64+
if assert.Len(t, triggerSkip, 2) {
65+
assert.Equal(t, "FILE_PATH", triggerSkip[0].ConditionOnVariable)
66+
assert.Equal(t, "TRIGGER", triggerSkip[0].ConditionType)
67+
assert.Equal(t, "==", triggerSkip[0].ConditionalOperator)
68+
assert.Equal(t, "/tmp/other", triggerSkip[0].ConditionalValue)
69+
assert.Equal(t, "", triggerSkip[1].ConditionOnVariable, "condition on an unknown variable id is sent without a variable name (pre-existing behaviour)")
70+
}
71+
if assert.Len(t, data.GetSuccessFailureConditions(), 1) {
72+
assert.Equal(t, "CONTENT", data.GetSuccessFailureConditions()[0].ConditionOnVariable)
73+
assert.Equal(t, "PASS", data.GetSuccessFailureConditions()[0].ConditionType)
74+
}
75+
}
Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
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 pipeline
18+
19+
import (
20+
"errors"
21+
"testing"
22+
23+
commonBean "github.com/devtron-labs/common-lib/workflow"
24+
repository2 "github.com/devtron-labs/devtron/pkg/plugin/repository"
25+
"github.com/go-pg/pg"
26+
"github.com/stretchr/testify/assert"
27+
"go.uber.org/zap"
28+
)
29+
30+
// fakePluginRepoForWfRequest serves a plugin definition (steps, script, variables, conditions) to the workflow request
31+
// builders. Any repository method not overridden here panics if called, which is intended.
32+
type fakePluginRepoForWfRequest struct {
33+
repository2.GlobalPluginRepository
34+
steps []*repository2.PluginStep
35+
scripts map[int]*repository2.PluginPipelineScript
36+
variables map[int][]*repository2.PluginStepVariable
37+
variablesErr error
38+
conditions map[int][]*repository2.PluginStepCondition
39+
conditionCalls int
40+
}
41+
42+
func (f *fakePluginRepoForWfRequest) GetStepsByPluginIds(pluginIds []int) ([]*repository2.PluginStep, error) {
43+
return f.steps, nil
44+
}
45+
46+
func (f *fakePluginRepoForWfRequest) GetScriptDetailById(id int) (*repository2.PluginPipelineScript, error) {
47+
if script, ok := f.scripts[id]; ok {
48+
return script, nil
49+
}
50+
return nil, pg.ErrNoRows
51+
}
52+
53+
func (f *fakePluginRepoForWfRequest) GetScriptMappingDetailByScriptId(scriptId int) ([]*repository2.ScriptPathArgPortMapping, error) {
54+
return nil, nil
55+
}
56+
57+
func (f *fakePluginRepoForWfRequest) GetVariablesByStepId(stepId int) ([]*repository2.PluginStepVariable, error) {
58+
if f.variablesErr != nil {
59+
return nil, f.variablesErr
60+
}
61+
return f.variables[stepId], nil
62+
}
63+
64+
func (f *fakePluginRepoForWfRequest) GetConditionsByStepId(stepId int) ([]*repository2.PluginStepCondition, error) {
65+
f.conditionCalls++
66+
return f.conditions[stepId], nil
67+
}
68+
69+
func newPluginConditionsTestService(repo *fakePluginRepoForWfRequest) *PipelineStageServiceImpl {
70+
return &PipelineStageServiceImpl{logger: zap.NewNop().Sugar(), globalPluginRepository: repo}
71+
}
72+
73+
func pluginStepVariable(name string, variableType repository2.PluginStepVariableType, exposed bool, value, defaultValue string) *repository2.PluginStepVariable {
74+
return &repository2.PluginStepVariable{
75+
Id: 1,
76+
Name: name,
77+
Format: repository2.PLUGIN_VARIABLE_FORMAT_TYPE_STRING,
78+
VariableType: variableType,
79+
ValueType: repository2.PLUGIN_VARIABLE_VALUE_TYPE_NEW,
80+
IsExposed: exposed,
81+
Value: value,
82+
DefaultValue: defaultValue,
83+
VariableStepIndex: 1,
84+
}
85+
}
86+
87+
// pluginWithConditions models a custom plugin saved from the dashboard: one shell step, an exposed input variable
88+
// FILE_PATH with a TRIGGER condition on it and an exposed output variable CONTENT with a PASS condition on it.
89+
func pluginWithConditions() *fakePluginRepoForWfRequest {
90+
input := pluginStepVariable("FILE_PATH", repository2.PLUGIN_VARIABLE_TYPE_INPUT, true, "/tmp/shivam", "")
91+
input.Id = 386
92+
output := pluginStepVariable("CONTENT", repository2.PLUGIN_VARIABLE_TYPE_OUTPUT, true, "", "")
93+
output.Id = 387
94+
return &fakePluginRepoForWfRequest{
95+
steps: []*repository2.PluginStep{
96+
{Id: 69, PluginId: 71, Name: "Task 1", Index: 1, StepType: repository2.PLUGIN_STEP_TYPE_INLINE, ScriptId: 5},
97+
},
98+
scripts: map[int]*repository2.PluginPipelineScript{5: {Type: repository2.SCRIPT_TYPE_SHELL, Script: "echo hi > $FILE_PATH"}},
99+
variables: map[int][]*repository2.PluginStepVariable{69: {input, output}},
100+
conditions: map[int][]*repository2.PluginStepCondition{69: {
101+
{Id: 23, PluginStepId: 69, ConditionVariableId: 386, ConditionType: repository2.PLUGIN_CONDITION_TYPE_TRIGGER, ConditionalOperator: "==", ConditionalValue: "/tmp/shivam"},
102+
{Id: 24, PluginStepId: 69, ConditionVariableId: 387, ConditionType: repository2.PLUGIN_CONDITION_TYPE_SUCCESS, ConditionalOperator: "==", ConditionalValue: "ok"},
103+
}},
104+
}
105+
}
106+
107+
func TestBuildPluginStepDataForWfRequest_PluginConditionsAreNotSentToCiRunner(t *testing.T) {
108+
t.Run("inline plugin step: variables and script are sent, plugin-defined conditions are not", func(t *testing.T) {
109+
repo := pluginWithConditions()
110+
stepData, err := newPluginConditionsTestService(repo).BuildPluginStepDataForWfRequest(repo.steps[0])
111+
assert.NoError(t, err)
112+
assert.Equal(t, "Task 1", stepData.Name)
113+
assert.Equal(t, 1, stepData.Index)
114+
assert.Equal(t, string(repository2.PLUGIN_STEP_TYPE_INLINE), stepData.StepType)
115+
assert.Equal(t, string(repository2.SCRIPT_TYPE_SHELL), stepData.ExecutorType)
116+
assert.Equal(t, "echo hi > $FILE_PATH", stepData.Script)
117+
if assert.Len(t, stepData.InputVars, 1) {
118+
assert.Equal(t, "FILE_PATH", stepData.InputVars[0].Name)
119+
assert.Equal(t, "/tmp/shivam", stepData.InputVars[0].Value)
120+
}
121+
if assert.Len(t, stepData.OutputVars, 1) {
122+
assert.Equal(t, "CONTENT", stepData.OutputVars[0].Name)
123+
}
124+
assert.Nil(t, stepData.TriggerSkipConditions, "plugin-level trigger/skip conditions must not reach ci-runner")
125+
assert.Nil(t, stepData.SuccessFailureConditions, "plugin-level pass/fail conditions must not reach ci-runner")
126+
assert.Equal(t, 0, repo.conditionCalls, "plugin_step_condition must not even be read for the workflow request")
127+
})
128+
t.Run("plugin step referencing another plugin: no conditions either", func(t *testing.T) {
129+
repo := pluginWithConditions()
130+
nested := &repository2.PluginStep{Id: 69, PluginId: 71, Name: "nested", Index: 1, StepType: repository2.PLUGIN_STEP_TYPE_REF_PLUGIN, RefPluginId: 42}
131+
stepData, err := newPluginConditionsTestService(repo).BuildPluginStepDataForWfRequest(nested)
132+
assert.NoError(t, err)
133+
assert.Equal(t, "PLUGIN", stepData.ExecutorType)
134+
assert.Equal(t, 42, stepData.RefPluginId)
135+
assert.Len(t, stepData.InputVars, 1)
136+
assert.Nil(t, stepData.TriggerSkipConditions)
137+
assert.Nil(t, stepData.SuccessFailureConditions)
138+
assert.Equal(t, 0, repo.conditionCalls)
139+
})
140+
t.Run("variable lookup error is propagated", func(t *testing.T) {
141+
repo := pluginWithConditions()
142+
repo.variablesErr = errors.New("db down")
143+
stepData, err := newPluginConditionsTestService(repo).BuildPluginStepDataForWfRequest(repo.steps[0])
144+
assert.EqualError(t, err, "db down")
145+
assert.Nil(t, stepData)
146+
})
147+
}
148+
149+
func TestGetRefPluginStepsByIds_NoPluginConditionOnAnyStep(t *testing.T) {
150+
repo := pluginWithConditions()
151+
pluginIdStepsMap, err := newPluginConditionsTestService(repo).GetRefPluginStepsByIds([]int{71}, map[int]bool{71: true})
152+
assert.NoError(t, err)
153+
if assert.Len(t, pluginIdStepsMap[71], 1) {
154+
assert.Nil(t, pluginIdStepsMap[71][0].TriggerSkipConditions)
155+
assert.Nil(t, pluginIdStepsMap[71][0].SuccessFailureConditions)
156+
assert.Len(t, pluginIdStepsMap[71][0].InputVars, 1)
157+
}
158+
assert.Equal(t, 0, repo.conditionCalls)
159+
}
160+
161+
func TestBuildPluginVariableDataForWfRequest(t *testing.T) {
162+
newRepo := func(vars ...*repository2.PluginStepVariable) *fakePluginRepoForWfRequest {
163+
return &fakePluginRepoForWfRequest{variables: map[int][]*repository2.PluginStepVariable{69: vars}}
164+
}
165+
t.Run("exposed input without default uses the stored value, non-exposed input uses its default", func(t *testing.T) {
166+
exposed := pluginStepVariable("A", repository2.PLUGIN_VARIABLE_TYPE_INPUT, true, "user", "")
167+
exposed.VariableStepIndexInPlugin = 3 // only meaningful for plugins nested in plugins; must be passed through untouched
168+
internal := pluginStepVariable("B", repository2.PLUGIN_VARIABLE_TYPE_INPUT, false, "ignored", "default")
169+
exposedWithDefault := pluginStepVariable("C", repository2.PLUGIN_VARIABLE_TYPE_INPUT, true, "", "default")
170+
inputs, outputs, err := newPluginConditionsTestService(newRepo(exposed, internal, exposedWithDefault)).BuildPluginVariableDataForWfRequest(69)
171+
assert.NoError(t, err)
172+
assert.Empty(t, outputs)
173+
if assert.Len(t, inputs, 3) {
174+
assert.Equal(t, "user", inputs[0].Value)
175+
assert.Equal(t, "default", inputs[1].Value)
176+
assert.Equal(t, "", inputs[2].Value, "exposed variable value is filled from the pipeline step by ci-runner")
177+
assert.Equal(t, commonBean.VariableTypeValue, inputs[0].VariableType)
178+
assert.Equal(t, commonBean.FormatTypeString, inputs[0].Format)
179+
assert.Equal(t, 3, inputs[0].VariableStepIndexInPlugin, "nested-plugin step index is passed through")
180+
assert.Equal(t, 0, inputs[1].VariableStepIndexInPlugin)
181+
}
182+
})
183+
t.Run("value types map to ci-runner variable types", func(t *testing.T) {
184+
global := pluginStepVariable("G", repository2.PLUGIN_VARIABLE_TYPE_INPUT, false, "", "")
185+
global.ValueType = repository2.PLUGIN_VARIABLE_VALUE_TYPE_GLOBAL
186+
global.ReferenceVariableName = "DOCKER_IMAGE"
187+
previous := pluginStepVariable("P", repository2.PLUGIN_VARIABLE_TYPE_INPUT, false, "", "")
188+
previous.ValueType = repository2.PLUGIN_VARIABLE_VALUE_TYPE_PREVIOUS
189+
previous.PreviousStepIndex = 1
190+
previous.ReferenceVariableName = "OUT"
191+
exposedPrevious := pluginStepVariable("E", repository2.PLUGIN_VARIABLE_TYPE_INPUT, true, "", "")
192+
exposedPrevious.ValueType = repository2.PLUGIN_VARIABLE_VALUE_TYPE_PREVIOUS
193+
inputs, _, err := newPluginConditionsTestService(newRepo(global, previous, exposedPrevious)).BuildPluginVariableDataForWfRequest(69)
194+
assert.NoError(t, err)
195+
if assert.Len(t, inputs, 3) {
196+
assert.Equal(t, commonBean.VariableTypeRefGlobal, inputs[0].VariableType)
197+
assert.Equal(t, "DOCKER_IMAGE", inputs[0].ReferenceVariableName)
198+
assert.Equal(t, commonBean.VariableTypeRefPlugin, inputs[1].VariableType)
199+
assert.Equal(t, 1, inputs[1].ReferenceVariableStepIndex)
200+
assert.Equal(t, commonBean.VariableTypeValue, inputs[2].VariableType, "exposed previous-step variables are resolved at pipeline level")
201+
}
202+
})
203+
t.Run("output variables are returned separately", func(t *testing.T) {
204+
out := pluginStepVariable("OUT", repository2.PLUGIN_VARIABLE_TYPE_OUTPUT, true, "", "")
205+
inputs, outputs, err := newPluginConditionsTestService(newRepo(out)).BuildPluginVariableDataForWfRequest(69)
206+
assert.NoError(t, err)
207+
assert.Empty(t, inputs)
208+
if assert.Len(t, outputs, 1) {
209+
assert.Equal(t, "OUT", outputs[0].Name)
210+
}
211+
})
212+
t.Run("no variables (pg.ErrNoRows) yields empty lists", func(t *testing.T) {
213+
repo := &fakePluginRepoForWfRequest{variablesErr: pg.ErrNoRows}
214+
inputs, outputs, err := newPluginConditionsTestService(repo).BuildPluginVariableDataForWfRequest(69)
215+
assert.NoError(t, err)
216+
assert.Empty(t, inputs)
217+
assert.Empty(t, outputs)
218+
})
219+
t.Run("repository error is propagated", func(t *testing.T) {
220+
repo := &fakePluginRepoForWfRequest{variablesErr: errors.New("db down")}
221+
_, _, err := newPluginConditionsTestService(repo).BuildPluginVariableDataForWfRequest(69)
222+
assert.EqualError(t, err, "db down")
223+
})
224+
t.Run("invalid variable format is an error", func(t *testing.T) {
225+
bad := pluginStepVariable("X", repository2.PLUGIN_VARIABLE_TYPE_INPUT, true, "", "")
226+
bad.Format = "BOGUS"
227+
_, _, err := newPluginConditionsTestService(newRepo(bad)).BuildPluginVariableDataForWfRequest(69)
228+
assert.Error(t, err)
229+
})
230+
}

‎pkg/pipeline/PipelineStageService.go‎

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2118,34 +2118,38 @@ func (impl *PipelineStageServiceImpl) BuildPluginStepDataForWfRequest(step *repo
21182118
stepData.ExecutorType = "PLUGIN" //added only to avoid un-marshaling issues at ci-runner side, will not be used
21192119
stepData.RefPluginId = step.RefPluginId
21202120
}
2121-
inputVars, outputVars, triggerSkipConditions, successFailureConditions, err := impl.BuildPluginVariableAndConditionDataForWfRequest(step.Id)
2121+
inputVars, outputVars, err := impl.BuildPluginVariableDataForWfRequest(step.Id)
21222122
if err != nil {
2123-
impl.logger.Errorw("error in getting variable and conditions data for wf request", "err", err, "stepId", step.Id)
2123+
impl.logger.Errorw("error in getting variable data for wf request", "err", err, "stepId", step.Id)
21242124
return nil, err
21252125
}
21262126
stepData.InputVars = inputVars
21272127
stepData.OutputVars = outputVars
2128-
stepData.TriggerSkipConditions = triggerSkipConditions
2129-
stepData.SuccessFailureConditions = successFailureConditions
2128+
// Conditions saved with the plugin definition (plugin_step_condition) are intentionally not sent for the
2129+
// plugin's internal steps. They are only defaults that pre-fill the task when the plugin is attached to a
2130+
// pipeline; the conditions to evaluate at trigger time are the ones saved on the pipeline step
2131+
// (pipeline_stage_step_condition), which are sent with the pre/post stage step referencing this plugin.
21302132
return stepData, nil
21312133
}
21322134

2133-
func (impl *PipelineStageServiceImpl) BuildPluginVariableAndConditionDataForWfRequest(stepId int) ([]*commonBean.VariableObject, []*commonBean.VariableObject, []*bean.ConditionObject, []*bean.ConditionObject, error) {
2135+
// BuildPluginVariableDataForWfRequest builds the input and output variables of a plugin's internal step for the
2136+
// workflow request. Plugin step conditions (plugin_step_condition) are deliberately not part of the workflow request:
2137+
// they are defaults used to pre-fill a task when the plugin is attached to a pipeline, and the effective conditions
2138+
// are the ones saved on the pipeline step (pipeline_stage_step_condition).
2139+
func (impl *PipelineStageServiceImpl) BuildPluginVariableDataForWfRequest(stepId int) ([]*commonBean.VariableObject, []*commonBean.VariableObject, error) {
21342140
var inputVariables []*commonBean.VariableObject
21352141
var outputVariables []*commonBean.VariableObject
21362142
//getting all variables in the step
21372143
variables, err := impl.globalPluginRepository.GetVariablesByStepId(stepId)
21382144
if err != nil && err != pg.ErrNoRows {
21392145
impl.logger.Errorw("error in getting variables by stepId", "err", err, "stepId", stepId)
2140-
return nil, nil, nil, nil, err
2146+
return nil, nil, err
21412147
}
2142-
variableNameIdMap := make(map[int]string)
21432148
for _, variable := range variables {
2144-
variableNameIdMap[variable.Id] = variable.Name
21452149
format, err := commonBean.NewFormat(variable.Format.String())
21462150
if err != nil {
21472151
impl.logger.Errorw("error in creating format object", "err", err, "format", variable.Format)
2148-
return nil, nil, nil, nil, err
2152+
return nil, nil, err
21492153
}
21502154
variableData := &commonBean.VariableObject{
21512155
Name: variable.Name,
@@ -2181,30 +2185,7 @@ func (impl *PipelineStageServiceImpl) BuildPluginVariableAndConditionDataForWfRe
21812185
outputVariables = append(outputVariables, variableData)
21822186
}
21832187
}
2184-
conditions, err := impl.globalPluginRepository.GetConditionsByStepId(stepId)
2185-
if err != nil && err != pg.ErrNoRows {
2186-
impl.logger.Errorw("error in getting conditions by stepId", "err", err, "stepId", stepId)
2187-
return nil, nil, nil, nil, err
2188-
}
2189-
var triggerSkipConditions []*bean.ConditionObject
2190-
var successFailureConditions []*bean.ConditionObject
2191-
for _, condition := range conditions {
2192-
conditionData := &bean.ConditionObject{
2193-
ConditionalOperator: condition.ConditionalOperator,
2194-
ConditionalValue: condition.ConditionalValue,
2195-
ConditionType: string(condition.ConditionType),
2196-
}
2197-
varName, ok := variableNameIdMap[condition.ConditionVariableId]
2198-
if ok {
2199-
conditionData.ConditionOnVariable = varName
2200-
}
2201-
if condition.ConditionType == repository2.PLUGIN_CONDITION_TYPE_TRIGGER || condition.ConditionType == repository2.PLUGIN_CONDITION_TYPE_SKIP {
2202-
triggerSkipConditions = append(triggerSkipConditions, conditionData)
2203-
} else if condition.ConditionType == repository2.PLUGIN_CONDITION_TYPE_SUCCESS || condition.ConditionType == repository2.PLUGIN_CONDITION_TYPE_FAIL {
2204-
successFailureConditions = append(successFailureConditions, conditionData)
2205-
}
2206-
}
2207-
return inputVariables, outputVariables, triggerSkipConditions, successFailureConditions, nil
2188+
return inputVariables, outputVariables, nil
22082189
}
22092190

22102191
//BuildPrePostAndRefPluginStepsDataForWfRequest and related methods ends

0 commit comments

Comments
 (0)