Skip to content

Commit 9b03cad

Browse files
Merge pull request #2850 from devtron-labs/fix/cd-trigger
feat: remove duplication between EnvTrigger and TriggerView regarding Deploy and Bulk Deploy
2 parents c38416a + 50b9d1c commit 9b03cad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+5120
-5144
lines changed

.eslintignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,7 @@ src/components/app/details/testViewer/TestRunDetails.tsx
102102
src/components/app/details/testViewer/TestRunList.tsx
103103
src/components/app/details/triggerView/EmptyStateCIMaterial.tsx
104104
src/components/app/details/triggerView/MaterialSource.tsx
105-
src/components/app/details/triggerView/TriggerView.tsx
106105
src/components/app/details/triggerView/__tests__/triggerview.test.tsx
107-
src/components/app/details/triggerView/cdMaterial.tsx
108-
src/components/app/details/triggerView/ciMaterial.tsx
109106
src/components/app/details/triggerView/ciWebhook.service.ts
110107
src/components/app/details/triggerView/config.ts
111108
src/components/app/details/triggerView/workflow.service.ts

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"private": true,
55
"homepage": "/dashboard",
66
"dependencies": {
7-
"@devtron-labs/devtron-fe-common-lib": "1.19.0-pre-4",
7+
"@devtron-labs/devtron-fe-common-lib": "1.19.0-pre-5",
88
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
99
"@rjsf/core": "^5.13.3",
1010
"@rjsf/utils": "^5.13.3",

src/components/ApplicationGroup/AppGroup.types.ts

Lines changed: 32 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,27 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { Dispatch, SetStateAction } from 'react'
1817
import { MultiValue } from 'react-select'
1918

2019
import {
2120
ACTION_STATE,
2221
AppInfoListType,
23-
ApprovalConfigDataType,
24-
CDModalTabType,
2522
CIMaterialType,
2623
CommonNodeAttr,
2724
DeploymentNodeType,
28-
DeploymentStrategyTypeWithDefault,
29-
FilterConditionsListType,
3025
GVKType,
3126
MODAL_TYPE,
3227
OptionType,
33-
PipelineIdsVsDeploymentStrategyMap,
3428
ResponseType,
3529
RuntimePluginVariables,
3630
ServerErrors,
31+
TriggerBlockedInfo,
3732
UseUrlFiltersReturnType,
38-
WorkflowNodeType,
3933
WorkflowType,
4034
} from '@devtron-labs/devtron-fe-common-lib'
4135

4236
import { GitInfoMaterialProps } from '@Components/app/details/triggerView/BuildImageModal/types'
43-
import { CDMaterialProps, RuntimeParamsErrorState } from '@Components/app/details/triggerView/types'
37+
import { DeployImageContentProps } from '@Components/app/details/triggerView/DeployImageModal/types'
4438
import {
4539
AppConfigState,
4640
EnvConfigurationsNavProps,
@@ -72,35 +66,40 @@ export interface BulkCIDetailType extends BulkTriggerAppDetailType {
7266
ignoreCache: boolean
7367
}
7468

69+
export type BulkCDDetailDerivedFromNode = Required<
70+
Pick<
71+
DeployImageContentProps,
72+
| 'pipelineId'
73+
| 'appId'
74+
| 'parentEnvironmentName'
75+
| 'isTriggerBlockedDueToPlugin'
76+
| 'configurePluginURL'
77+
| 'triggerType'
78+
| 'appName'
79+
>
80+
> & {
81+
stageNotAvailable: boolean
82+
errorMessage: string
83+
triggerBlockedInfo: TriggerBlockedInfo
84+
consequence: CommonNodeAttr['pluginBlockState']
85+
showPluginWarning: CommonNodeAttr['showPluginWarning']
86+
}
87+
88+
export type BulkCDDetailType = BulkCDDetailDerivedFromNode &
89+
Pick<DeployImageContentProps, 'materialResponse' | 'deploymentWindowMetadata' | 'deployViewState'> & {
90+
/**
91+
* True in cases when we reload materials on single app
92+
*/
93+
areMaterialsLoading: boolean
94+
materialError: ServerErrors | null
95+
tagsWarningMessage: string
96+
}
97+
7598
export interface BulkCDDetailTypeResponse {
7699
bulkCDDetailType: BulkCDDetailType[]
77100
uniqueReleaseTags: string[]
78101
}
79102

80-
export interface BulkCDDetailType
81-
extends BulkTriggerAppDetailType,
82-
Pick<CDMaterialProps, 'isTriggerBlockedDueToPlugin' | 'configurePluginURL' | 'consequence'>,
83-
Partial<Pick<CommonNodeAttr, 'showPluginWarning' | 'triggerBlockedInfo'>> {
84-
workFlowId: string
85-
cdPipelineName?: string
86-
cdPipelineId?: string
87-
stageType?: DeploymentNodeType
88-
triggerType?: string
89-
envName: string
90-
envId: number
91-
parentPipelineId?: string
92-
parentPipelineType?: WorkflowNodeType
93-
parentEnvironmentName?: string
94-
approvalConfigData?: ApprovalConfigDataType
95-
requestedUserId?: number
96-
appReleaseTags?: string[]
97-
tagsEditable?: boolean
98-
ciPipelineId?: number
99-
hideImageTaggingHardDelete?: boolean
100-
resourceFilters?: FilterConditionsListType[]
101-
isExceptionUser?: boolean
102-
}
103-
104103
export type TriggerVirtualEnvResponseRowType =
105104
| {
106105
isVirtual: true
@@ -122,45 +121,6 @@ export type ResponseRowType = {
122121
envId?: number
123122
} & TriggerVirtualEnvResponseRowType
124123

125-
interface BulkRuntimeParamsType {
126-
runtimeParams: Record<string, RuntimePluginVariables[]>
127-
setRuntimeParams: React.Dispatch<React.SetStateAction<Record<string, RuntimePluginVariables[]>>>
128-
runtimeParamsErrorState: Record<string, RuntimeParamsErrorState>
129-
setRuntimeParamsErrorState: React.Dispatch<React.SetStateAction<Record<string, RuntimeParamsErrorState>>>
130-
}
131-
132-
export interface BulkCDTriggerType extends BulkRuntimeParamsType {
133-
stage: DeploymentNodeType
134-
appList: BulkCDDetailType[]
135-
closePopup: (e) => void
136-
updateBulkInputMaterial: (materialList: Record<string, any>) => void
137-
onClickTriggerBulkCD: (
138-
skipIfHibernated: boolean,
139-
pipelineIdVsStrategyMap: PipelineIdsVsDeploymentStrategyMap,
140-
appsToRetry?: Record<string, boolean>,
141-
) => void
142-
changeTab?: (
143-
materrialId: string | number,
144-
artifactId: number,
145-
tab: CDModalTabType,
146-
selectedCDDetail?: { id: number; type: DeploymentNodeType },
147-
) => void
148-
toggleSourceInfo?: (materialIndex: number, selectedCDDetail?: { id: number; type: DeploymentNodeType }) => void
149-
selectImage?: (
150-
index: number,
151-
materialType: string,
152-
selectedCDDetail?: { id: number; type: DeploymentNodeType },
153-
) => void
154-
responseList: ResponseRowType[]
155-
isLoading: boolean
156-
setLoading: React.Dispatch<React.SetStateAction<boolean>>
157-
isVirtualEnv?: boolean
158-
uniqueReleaseTags: string[]
159-
feasiblePipelineIds: Set<number>
160-
bulkDeploymentStrategy: DeploymentStrategyTypeWithDefault
161-
setBulkDeploymentStrategy: Dispatch<SetStateAction<DeploymentStrategyTypeWithDefault>>
162-
}
163-
164124
export interface ProcessWorkFlowStatusType {
165125
cicdInProgress: boolean
166126
workflows: WorkflowType[]
@@ -194,15 +154,11 @@ export interface TriggerResponseModalBodyProps {
194154

195155
type RetryFailedType =
196156
| {
197-
onClickRetryDeploy: BulkCDTriggerType['onClickTriggerBulkCD']
198-
skipHibernatedApps: boolean
199-
pipelineIdVsStrategyMap: PipelineIdsVsDeploymentStrategyMap
157+
onClickRetryDeploy: (appsToRetry: Record<string, boolean>) => void
200158
onClickRetryBuild?: never
201159
}
202160
| {
203161
onClickRetryDeploy?: never
204-
skipHibernatedApps?: never
205-
pipelineIdVsStrategyMap?: never
206162
onClickRetryBuild: (appsToRetry: Record<string, boolean>) => void
207163
}
208164

@@ -216,11 +172,6 @@ export interface TriggerModalRowType {
216172
isVirtualEnv?: boolean
217173
}
218174

219-
export interface WorkflowNodeSelectionType {
220-
id: number
221-
name: string
222-
type: WorkflowNodeType
223-
}
224175
export interface WorkflowAppSelectionType {
225176
id: number
226177
name: string

src/components/ApplicationGroup/AppGroup.utils.ts

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,28 +96,37 @@ export const processWorkflowStatuses = (
9696
}
9797
})
9898
}
99-
// Update Workflow using maps
100-
const _workflows = workflowsList.map((wf) => {
101-
wf.nodes = wf.nodes.map((node) => {
99+
// Update Workflow using maps, returning new objects for reactivity
100+
const _workflows = workflowsList.map((wf) => ({
101+
...wf,
102+
nodes: wf.nodes.map((node) => {
102103
switch (node.type) {
103104
case 'CI':
104-
node.status = ciMap[node.id]?.status
105-
node.storageConfigured = ciMap[node.id]?.storageConfigured
106-
break
105+
return {
106+
...node,
107+
status: ciMap[node.id]?.status,
108+
storageConfigured: ciMap[node.id]?.storageConfigured,
109+
}
107110
case 'PRECD':
108-
node.status = preCDMap[node.id]
109-
break
111+
return {
112+
...node,
113+
status: preCDMap[node.id],
114+
}
110115
case 'POSTCD':
111-
node.status = postCDMap[node.id]
112-
break
116+
return {
117+
...node,
118+
status: postCDMap[node.id],
119+
}
113120
case 'CD':
114-
node.status = cdMap[node.id]
115-
break
121+
return {
122+
...node,
123+
status: cdMap[node.id],
124+
}
125+
default:
126+
return { ...node }
116127
}
117-
return node
118128
})
119-
return wf
120-
})
129+
}))
121130
return { cicdInProgress, workflows: _workflows }
122131
}
123132

0 commit comments

Comments
 (0)