Skip to content
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
c6773ca
fix: update on clicks and common functions
arunjaindev Jul 25, 2025
e4c171b
feat: extract on click rollback cd and approval common logic
arunjaindev Jul 25, 2025
32d520b
fix: use approval on click
arunjaindev Jul 25, 2025
d166788
Merge branch 'fix/trigger-view' of https://github.com/devtron-labs/da…
arunjaindev Jul 28, 2025
15d0336
feat: add base structure for DeployImageModal
AbhishekA1509 Jul 28, 2025
62b1421
Merge branch 'fix/trigger-view' of https://github.com/devtron-labs/da…
arunjaindev Jul 29, 2025
7540fa5
Merge branch 'fix/cd-trigger' of https://github.com/devtron-labs/dash…
AbhishekA1509 Jul 30, 2025
67903c9
feat: Enhance DeployImageModal with new image selection and empty sta…
AbhishekA1509 Jul 30, 2025
e4c362f
chore: remove cdMaterial
AbhishekA1509 Jul 30, 2025
6aef199
feat: Refactor DeployImageModal and related components for improved n…
AbhishekA1509 Jul 30, 2025
88b7197
feat: Refactor DeployImageModal and related components to streamline …
AbhishekA1509 Jul 30, 2025
db45cd1
feat: Update DeployImageModal layout for improved filter visibility a…
AbhishekA1509 Jul 30, 2025
ce9e834
feat: Enhance Deploy Image Modal with Bulk Deployment Features
AbhishekA1509 Aug 4, 2025
67f6b66
feat: Implement bulk deployment modal enhancements and improve error …
AbhishekA1509 Aug 5, 2025
c8efa53
feat: Refactor EnvTriggerView and AppDetailsCDModal to remove unneces…
AbhishekA1509 Aug 5, 2025
5507438
feat: Enhance DeployImageModal and related components with improved e…
AbhishekA1509 Aug 5, 2025
978e37d
feat: Refactor BulkDeployModal and DeployImageModal to improve loadOl…
AbhishekA1509 Aug 5, 2025
27ca8bd
feat: Refactor DeployImageModal and EnvTriggerView to improve deploym…
AbhishekA1509 Aug 6, 2025
8fc1c44
feat: Refactor BulkDeployModal and DeployImageContent to improve imag…
AbhishekA1509 Aug 6, 2025
5645325
feat: Add BulkTriggerSidebar component and integrate it into DeployIm…
AbhishekA1509 Aug 6, 2025
9b3d43a
feat: Implement BulkDeployEmptyState component and integrate it into …
AbhishekA1509 Aug 6, 2025
7d9b6a7
feat: Refactor DeployImageModal and ImageSelectionCTA to improve stat…
AbhishekA1509 Aug 6, 2025
6f5b7b3
feat: Enhance BulkDeployModal and related components for improved dep…
AbhishekA1509 Aug 6, 2025
b515400
fix: Correct useEffect cleanup function formatting in BulkDeployModal
AbhishekA1509 Aug 6, 2025
1b54375
feat: Add empty state rendering for material list in DeployImageConte…
AbhishekA1509 Aug 6, 2025
9c94714
feat: Update BulkTriggerSidebar logic for tag selection and adjust De…
AbhishekA1509 Aug 6, 2025
219ac6e
feat: refactor trigger view component
arunjaindev Aug 6, 2025
eba48c0
feat: Enhance BulkDeployModal and MaterialListEmptyState for improved…
AbhishekA1509 Aug 6, 2025
becb93a
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
AbhishekA1509 Aug 7, 2025
c70b248
Merge branch 'fix/cd-trigger' of https://github.com/devtron-labs/dash…
AbhishekA1509 Aug 7, 2025
8e7d7aa
feat: add util for on click search params
arunjaindev Aug 7, 2025
e10a7c3
Merge branch 'fix/bulk-cd' of https://github.com/devtron-labs/dashboa…
arunjaindev Aug 7, 2025
3046d0b
fix: review comments
AbhishekA1509 Aug 7, 2025
95e37ea
Merge branch 'fix/bulk-cd' of https://github.com/devtron-labs/dashboa…
arunjaindev Aug 7, 2025
7c65438
fix: handle empty appEnvList in getAppGroupDeploymentWindowMap
AbhishekA1509 Aug 7, 2025
ff0d2fe
chore: use constant in polling interval
arunjaindev Aug 7, 2025
d3a05ad
Merge pull request #2853 from devtron-labs/fix/bulk-cd
AbhishekA1509 Aug 7, 2025
52aa805
Merge pull request #2871 from devtron-labs/fix/build-deploy-trigger
AbhishekA1509 Aug 7, 2025
9721438
fix: node not updating on status update
arunjaindev Aug 8, 2025
c2cc743
refactor: clean up unused code and improve null checks in TriggerView…
AbhishekA1509 Aug 8, 2025
daf2db3
Merge branch 'fix/cd-trigger' of https://github.com/devtron-labs/dash…
arunjaindev Aug 8, 2025
0ffe5d3
feat: common out render cd material from trigger view and env trigger…
arunjaindev Aug 8, 2025
25529ef
chore: sort imports
arunjaindev Aug 8, 2025
3e8be4b
chore: use pipeline id from url
arunjaindev Aug 8, 2025
3aeff57
fix: issues modal not opening on click
arunjaindev Aug 8, 2025
57cd39c
refactor: update error handling and improve type definitions in deplo…
AbhishekA1509 Aug 10, 2025
9b4be29
refactor: enhance approval policy checks and update tag warning logic…
AbhishekA1509 Aug 10, 2025
6aaebe7
Merge pull request #2874 from devtron-labs/fix/issues-modal
arunjaindev Aug 11, 2025
237a40c
Merge branch 'test/cd-trigger' of https://github.com/devtron-labs/das…
arunjaindev Aug 11, 2025
440cedb
chore: version bump
arunjaindev Aug 11, 2025
44ea65c
Merge pull request #2873 from devtron-labs/feat/common-cd-material
arunjaindev Aug 11, 2025
0c4826e
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
arunjaindev Aug 11, 2025
b01ab2c
Merge branch 'fix/cd-trigger' of https://github.com/devtron-labs/dash…
arunjaindev Aug 11, 2025
4c68555
Merge branch 'main' of https://github.com/devtron-labs/dashboard into…
arunjaindev Aug 11, 2025
df3ec04
Merge branch 'fix/cd-trigger' of https://github.com/devtron-labs/dash…
arunjaindev Aug 11, 2025
e2e8e95
Add isTriggerView prop to CDMaterial component and update usage in En…
AbhishekA1509 Aug 12, 2025
59e4222
Add appName prop to Details component for enhanced app information
AbhishekA1509 Aug 12, 2025
17fc838
Merge pull request #2876 from devtron-labs/test/cd-trigger
AbhishekA1509 Aug 18, 2025
50b9d1c
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
AbhishekA1509 Aug 18, 2025
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
1 change: 0 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ src/components/app/details/testViewer/TestRunDetails.tsx
src/components/app/details/testViewer/TestRunList.tsx
src/components/app/details/triggerView/EmptyStateCIMaterial.tsx
src/components/app/details/triggerView/MaterialSource.tsx
src/components/app/details/triggerView/TriggerView.tsx
src/components/app/details/triggerView/__tests__/triggerview.test.tsx
src/components/app/details/triggerView/cdMaterial.tsx
src/components/app/details/triggerView/ciMaterial.tsx
Expand Down
112 changes: 31 additions & 81 deletions src/components/ApplicationGroup/AppGroup.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,27 @@
* limitations under the License.
*/

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

import {
ACTION_STATE,
AppInfoListType,
ApprovalConfigDataType,
CDModalTabType,
CIMaterialType,
CommonNodeAttr,
DeploymentNodeType,
DeploymentStrategyTypeWithDefault,
FilterConditionsListType,
GVKType,
MODAL_TYPE,
OptionType,
PipelineIdsVsDeploymentStrategyMap,
ResponseType,
RuntimePluginVariables,
ServerErrors,
TriggerBlockedInfo,
UseUrlFiltersReturnType,
WorkflowNodeType,
WorkflowType,
} from '@devtron-labs/devtron-fe-common-lib'

import { GitInfoMaterialProps } from '@Components/app/details/triggerView/BuildImageModal/types'
import { CDMaterialProps, RuntimeParamsErrorState } from '@Components/app/details/triggerView/types'
import { DeployImageContentProps } from '@Components/app/details/triggerView/DeployImageModal/types'
import {
AppConfigState,
EnvConfigurationsNavProps,
Expand Down Expand Up @@ -72,35 +66,39 @@ export interface BulkCIDetailType extends BulkTriggerAppDetailType {
ignoreCache: boolean
}

export type BulkCDDetailDerivedFromNode = Required<
Pick<
DeployImageContentProps,
| 'pipelineId'
| 'appId'
| 'parentEnvironmentName'
| 'isTriggerBlockedDueToPlugin'
| 'configurePluginURL'
| 'triggerType'
| 'appName'
>
> & {
stageNotAvailable: boolean
warningMessage: string
triggerBlockedInfo: TriggerBlockedInfo
consequence: CommonNodeAttr['pluginBlockState']
showPluginWarning: CommonNodeAttr['showPluginWarning']
}

export type BulkCDDetailType = BulkCDDetailDerivedFromNode &
Pick<DeployImageContentProps, 'materialResponse' | 'deploymentWindowMetadata' | 'deployViewState'> & {
/**
* True in cases when we reload materials on single app
*/
areMaterialsLoading: boolean
materialError: ServerErrors | null
}

export interface BulkCDDetailTypeResponse {
bulkCDDetailType: BulkCDDetailType[]
uniqueReleaseTags: string[]
}

export interface BulkCDDetailType
extends BulkTriggerAppDetailType,
Pick<CDMaterialProps, 'isTriggerBlockedDueToPlugin' | 'configurePluginURL' | 'consequence'>,
Partial<Pick<CommonNodeAttr, 'showPluginWarning' | 'triggerBlockedInfo'>> {
workFlowId: string
cdPipelineName?: string
cdPipelineId?: string
stageType?: DeploymentNodeType
triggerType?: string
envName: string
envId: number
parentPipelineId?: string
parentPipelineType?: WorkflowNodeType
parentEnvironmentName?: string
approvalConfigData?: ApprovalConfigDataType
requestedUserId?: number
appReleaseTags?: string[]
tagsEditable?: boolean
ciPipelineId?: number
hideImageTaggingHardDelete?: boolean
resourceFilters?: FilterConditionsListType[]
isExceptionUser?: boolean
}

export type TriggerVirtualEnvResponseRowType =
| {
isVirtual: true
Expand All @@ -122,45 +120,6 @@ export type ResponseRowType = {
envId?: number
} & TriggerVirtualEnvResponseRowType

interface BulkRuntimeParamsType {
runtimeParams: Record<string, RuntimePluginVariables[]>
setRuntimeParams: React.Dispatch<React.SetStateAction<Record<string, RuntimePluginVariables[]>>>
runtimeParamsErrorState: Record<string, RuntimeParamsErrorState>
setRuntimeParamsErrorState: React.Dispatch<React.SetStateAction<Record<string, RuntimeParamsErrorState>>>
}

export interface BulkCDTriggerType extends BulkRuntimeParamsType {
stage: DeploymentNodeType
appList: BulkCDDetailType[]
closePopup: (e) => void
updateBulkInputMaterial: (materialList: Record<string, any>) => void
onClickTriggerBulkCD: (
skipIfHibernated: boolean,
pipelineIdVsStrategyMap: PipelineIdsVsDeploymentStrategyMap,
appsToRetry?: Record<string, boolean>,
) => void
changeTab?: (
materrialId: string | number,
artifactId: number,
tab: CDModalTabType,
selectedCDDetail?: { id: number; type: DeploymentNodeType },
) => void
toggleSourceInfo?: (materialIndex: number, selectedCDDetail?: { id: number; type: DeploymentNodeType }) => void
selectImage?: (
index: number,
materialType: string,
selectedCDDetail?: { id: number; type: DeploymentNodeType },
) => void
responseList: ResponseRowType[]
isLoading: boolean
setLoading: React.Dispatch<React.SetStateAction<boolean>>
isVirtualEnv?: boolean
uniqueReleaseTags: string[]
feasiblePipelineIds: Set<number>
bulkDeploymentStrategy: DeploymentStrategyTypeWithDefault
setBulkDeploymentStrategy: Dispatch<SetStateAction<DeploymentStrategyTypeWithDefault>>
}

export interface ProcessWorkFlowStatusType {
cicdInProgress: boolean
workflows: WorkflowType[]
Expand Down Expand Up @@ -194,15 +153,11 @@ export interface TriggerResponseModalBodyProps {

type RetryFailedType =
| {
onClickRetryDeploy: BulkCDTriggerType['onClickTriggerBulkCD']
skipHibernatedApps: boolean
pipelineIdVsStrategyMap: PipelineIdsVsDeploymentStrategyMap
onClickRetryDeploy: (appsToRetry: Record<string, boolean>) => void
onClickRetryBuild?: never
}
| {
onClickRetryDeploy?: never
skipHibernatedApps?: never
pipelineIdVsStrategyMap?: never
onClickRetryBuild: (appsToRetry: Record<string, boolean>) => void
}

Expand All @@ -216,11 +171,6 @@ export interface TriggerModalRowType {
isVirtualEnv?: boolean
}

export interface WorkflowNodeSelectionType {
id: number
name: string
type: WorkflowNodeType
}
export interface WorkflowAppSelectionType {
id: number
name: string
Expand Down
39 changes: 24 additions & 15 deletions src/components/ApplicationGroup/AppGroup.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,28 +96,37 @@ export const processWorkflowStatuses = (
}
})
}
// Update Workflow using maps
const _workflows = workflowsList.map((wf) => {
wf.nodes = wf.nodes.map((node) => {
// Update Workflow using maps, returning new objects for reactivity
const _workflows = workflowsList.map((wf) => ({
...wf,
nodes: wf.nodes.map((node) => {
switch (node.type) {
case 'CI':
node.status = ciMap[node.id]?.status
node.storageConfigured = ciMap[node.id]?.storageConfigured
break
return {
...node,
status: ciMap[node.id]?.status,
storageConfigured: ciMap[node.id]?.storageConfigured,
}
case 'PRECD':
node.status = preCDMap[node.id]
break
return {
...node,
status: preCDMap[node.id],
}
case 'POSTCD':
node.status = postCDMap[node.id]
break
return {
...node,
status: postCDMap[node.id],
}
case 'CD':
node.status = cdMap[node.id]
break
return {
...node,
status: cdMap[node.id],
}
default:
return { ...node }
}
return node
})
return wf
})
}))
return { cicdInProgress, workflows: _workflows }
}

Expand Down
Loading
Loading