Skip to content

Commit 4812528

Browse files
authored
Merge pull request #2056 from devtron-labs/feat/pipeline-deploy-config-diff-revamp
feat: Pipeline Config Diff (cdMaterials) and Scope Variables Support in Comparison View across Config Diff
2 parents 056f74b + 32c1155 commit 4812528

File tree

34 files changed

+885
-1198
lines changed

34 files changed

+885
-1198
lines changed

.eslintignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,9 @@ src/components/app/details/triggerView/MaterialSource.tsx
140140
src/components/app/details/triggerView/TriggerView.tsx
141141
src/components/app/details/triggerView/__tests__/triggerview.test.tsx
142142
src/components/app/details/triggerView/cdMaterial.tsx
143-
src/components/app/details/triggerView/cdMaterials.utils.ts
144143
src/components/app/details/triggerView/ciMaterial.tsx
145144
src/components/app/details/triggerView/ciWebhook.service.ts
146145
src/components/app/details/triggerView/config.ts
147-
src/components/app/details/triggerView/triggerViewConfigDiff/TriggerViewConfigDiff.tsx
148146
src/components/app/details/triggerView/workflow.service.ts
149147
src/components/app/details/triggerView/workflow/Workflow.tsx
150148
src/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx

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": "0.5.1",
7+
"@devtron-labs/devtron-fe-common-lib": "0.5.2",
88
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
99
"@rjsf/core": "^5.13.3",
1010
"@rjsf/utils": "^5.13.3",

src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,8 @@ export const AppConfig = ({ appName, resourceKind, filteredEnvIds }: AppConfigPr
292292
}
293293

294294
useEffect(() => {
295-
// SET APP CONFIG DATA IN STATE
296295
if (appConfigData) {
296+
// SET APP CONFIG DATA IN STATE
297297
const [configStatusRes, workflowRes, { updatedEnvs, configProtections, isBaseConfigProtectionEnabled }] =
298298
appConfigData
299299
const { navItems, isCDPipeline, isCiPipeline, configs, redirectUrl, lastConfiguredStage } =

src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ export const DeploymentConfigCompare = ({
5757
const { path, params } = useRouteMatch<DeploymentConfigParams>()
5858
const { compareTo, resourceType, resourceName, appId, envId } = params
5959

60+
// STATES
61+
const [convertVariables, setConvertVariables] = useState(false)
62+
6063
// GLOBAL CONSTANTS
6164
const isManifestView = resourceType === EnvResourceType.Manifest
6265

@@ -232,6 +235,7 @@ export const DeploymentConfigCompare = ({
232235
)
233236

234237
const reload = () => {
238+
setConvertVariables(false)
235239
reloadOptions()
236240
reloadComparisonData()
237241
}
@@ -245,14 +249,14 @@ export const DeploymentConfigCompare = ({
245249
currentList,
246250
compareList,
247251
getNavItemHref,
248-
sortOrder,
249252
isManifestView,
253+
convertVariables,
250254
})
251255
return configData
252256
}
253257

254258
return null
255-
}, [comparisonDataLoader, comparisonData, sortOrder, isManifestView])
259+
}, [comparisonDataLoader, comparisonData, isManifestView, convertVariables])
256260

257261
// SELECT PICKER OPTIONS
258262
/** Compare Environment Select Picker Options */
@@ -439,6 +443,9 @@ export const DeploymentConfigCompare = ({
439443
const onTabClick = (tab: string) => {
440444
setSelectedTab(tab)
441445
const _isManifestView = tab === deploymentConfigDiffTabs.MANIFEST
446+
if (_isManifestView) {
447+
setConvertVariables(false)
448+
}
442449
push(
443450
generatePath(path, {
444451
...params,
@@ -462,11 +469,19 @@ export const DeploymentConfigCompare = ({
462469
sortOrder,
463470
}
464471

472+
const scopeVariablesConfig: DeploymentConfigDiffProps['scopeVariablesConfig'] = {
473+
convertVariables,
474+
onConvertVariablesClick: () => setConvertVariables(!convertVariables),
475+
}
476+
477+
const isLoading = comparisonDataLoader || optionsLoader
478+
const isError = comparisonDataErr || optionsErr
479+
465480
return (
466481
<DeploymentConfigDiff
467-
isLoading={comparisonDataLoader || !appEnvDeploymentConfigList || optionsLoader}
482+
isLoading={isLoading || (!isError && !appEnvDeploymentConfigList)}
468483
errorConfig={{
469-
error: (comparisonDataErr || optionsErr) && !(comparisonDataLoader || optionsLoader),
484+
error: isError && !isLoading,
470485
code: comparisonDataErr?.code || optionsErr?.code,
471486
reload,
472487
}}
@@ -478,6 +493,7 @@ export const DeploymentConfigCompare = ({
478493
navHelpText={getNavHelpText()}
479494
tabConfig={tabConfig}
480495
sortingConfig={!isManifestView ? sortingConfig : null}
496+
scopeVariablesConfig={!isManifestView ? scopeVariablesConfig : null}
481497
/>
482498
)
483499
}

src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,21 @@ export const getConfigDiffData = ({
2121
pipelineId,
2222
}: GetConfigDiffDataProps) =>
2323
getAppEnvDeploymentConfig({
24-
...(type === 'app'
25-
? {
26-
appName,
27-
envName: compareName || '',
28-
}
29-
: {
30-
appName: compareName || '',
31-
envName,
32-
}),
33-
configType,
34-
identifierId,
35-
pipelineId,
24+
params: {
25+
configArea: 'AppConfiguration',
26+
...(type === 'app'
27+
? {
28+
appName,
29+
envName: compareName || '',
30+
}
31+
: {
32+
appName: compareName || '',
33+
envName,
34+
}),
35+
configType,
36+
identifierId,
37+
pipelineId,
38+
},
3639
})
3740

3841
export const getDeploymentTemplateData = ({
@@ -51,16 +54,19 @@ export const getDeploymentTemplateData = ({
5154
return configType !== AppEnvDeploymentConfigType.PREVIOUS_DEPLOYMENTS &&
5255
configType !== AppEnvDeploymentConfigType.DEFAULT_VERSION
5356
? getAppEnvDeploymentConfig({
54-
...(type === 'app'
55-
? {
56-
appName,
57-
envName: compareName || '',
58-
}
59-
: {
60-
appName: compareName || '',
61-
envName,
62-
}),
63-
configType,
57+
params: {
58+
configArea: 'AppConfiguration',
59+
...(type === 'app'
60+
? {
61+
appName,
62+
envName: compareName || '',
63+
}
64+
: {
65+
appName: compareName || '',
66+
envName,
67+
}),
68+
configType,
69+
},
6470
})
6571
: nullResponse
6672
}

src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ export const parseCompareWithSearchParams =
118118
if ((!chartRefId && !compareWithConfigType) || !configType) {
119119
if (!compareWith) {
120120
// If `type` is 'app' (Application), set `compareWith` to the first environment if available,
121-
// otherwise leave it empty (base configuration).
121+
// otherwise `null` (base configuration).
122122
if (type === 'app') {
123-
compareWith = environments.length && !compareTo ? environments[0].name : ''
123+
compareWith = environments.length && !compareTo ? environments[0].name : null
124124
} else {
125125
// If `type` is 'appGroup' (Application Groups), set `compareWith` to the first application.
126126
// If the application to compare (`compareTo`) is the same as the first application,

src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ export const EnvConfigurationsNav = ({
5252

5353
// STATES
5454
const [expandedIds, setExpandedIds] =
55-
useState<
56-
Record<Exclude<EnvResourceType, EnvResourceType.DeploymentTemplate | EnvResourceType.Manifest>, boolean>
57-
>()
55+
useState<Record<Extract<EnvResourceType, EnvResourceType.ConfigMap | EnvResourceType.Secret>, boolean>>()
5856
const [updatedEnvConfig, setUpdatedEnvConfig] = useState<ReturnType<typeof getEnvConfiguration>>({
5957
deploymentTemplate: null,
6058
configmaps: [],

src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,9 @@ export const ConfigMapSecretContainer = (props: CMSecretContainerProps) => {
126126
envId,
127127
abortControllerRef.current.signal,
128128
)
129-
: getAppEnvDeploymentConfig(
130-
{
129+
: getAppEnvDeploymentConfig({
130+
params: {
131+
configArea: 'AppConfiguration',
131132
appName,
132133
envName,
133134
configType: AppEnvDeploymentConfigType.PUBLISHED_ONLY,
@@ -142,8 +143,8 @@ export const ConfigMapSecretContainer = (props: CMSecretContainerProps) => {
142143
? ConfigResourceType.ConfigMap
143144
: ConfigResourceType.Secret,
144145
},
145-
abortControllerRef.current.signal,
146-
),
146+
signal: abortControllerRef.current.signal,
147+
}),
147148
])
148149
}, abortControllerRef)
149150
.then(([draftDataRes, cmSecretDataRes]) => {

src/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,18 @@ export const ProtectedConfigMapSecretDetails = ({
7474
() =>
7575
abortPreviousRequests(
7676
() =>
77-
getAppEnvDeploymentConfig(
78-
{
77+
getAppEnvDeploymentConfig({
78+
params: {
79+
configArea: 'AppConfiguration',
7980
appName,
8081
envName,
8182
configType: AppEnvDeploymentConfigType.PUBLISHED_ONLY,
8283
resourceId: id,
8384
resourceName: data.name,
8485
resourceType: ConfigResourceType.Secret,
8586
},
86-
abortControllerRef.current.signal,
87-
),
87+
signal: abortControllerRef.current.signal,
88+
}),
8889
abortControllerRef,
8990
),
9091
[],
@@ -275,8 +276,7 @@ export const ProtectedConfigMapSecretDetails = ({
275276
previousConfigAvailable
276277
isUnpublished={cmSecretStateLabel === CM_SECRET_STATE.UNPUBLISHED}
277278
isDeleteDraft={draftData.action === 3 && cmSecretStateLabel !== CM_SECRET_STATE.OVERRIDDEN}
278-
rootClassName="dc__no-top-radius mt-0-imp m-0-imp mb-16-imp"
279-
comparisonBodyClassName="m-0-imp"
279+
rootClassName="dc__no-top-radius"
280280
/>
281281
{renderApproveButton()}
282282
</div>

src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ const LinkedCIDetailsModal = ({ handleClose, workflows }: LinkedCIDetailModalPro
177177
/>
178178
</div>
179179
<div className="flexbox-col flex-grow-1">
180-
<div className="flex flex-justify-start dc__gap-8 pl-20 pr-20 pt-8 pb-8 lh-20">
180+
<div className="flex flex-justify-start dc__gap-8 pl-20 pr-20 pt-8 pb-8 lh-20 dc__zi-5">
181181
<SearchBar
182182
containerClassName="w-250"
183183
inputProps={{

0 commit comments

Comments
 (0)