Skip to content

Commit 06dd433

Browse files
committed
Merge branch 'develop' into feat/ci-node-delete
2 parents b9d0f40 + 3aed947 commit 06dd433

36 files changed

+1171
-717
lines changed

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.9.1-beta-3",
7+
"@devtron-labs/devtron-fe-common-lib": "1.9.4",
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/MainContent/DeploymentTemplate/DTChartSelector.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,15 @@ const DTChartSelector = ({
257257
size={ComponentSizeType.small}
258258
placeholder="Select version"
259259
isDisabled={migratedFrom === PipelineMigratedFromType.ARGO_APPLICATION}
260-
disabledTippyContent="Version selection is disabled for pipelines migrated from Argo"
260+
disabledTippyContent={
261+
<div className="flexbox-col dc__gap-2 dc__mxw-200">
262+
<h6 className="m-0 fs-12 fw-6 lh-18">Cannot change chart version</h6>
263+
264+
<span className="fs-12 fw-4 lh-18">
265+
Chart version cannot be changed for deployments migrated from Argo CD Applications
266+
</span>
267+
</div>
268+
}
261269
/>
262270
</div>
263271
)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export const getConfigToolbarPopupConfig = ({
184184
disabled: isLoading || migratedFrom === PipelineMigratedFromType.ARGO_APPLICATION,
185185
tooltipText:
186186
migratedFrom === PipelineMigratedFromType.ARGO_APPLICATION
187-
? 'Can not delete override for pipelines migrated from argo'
187+
? 'Override cannot be deleted for deployments migrated from Argo CD Applications'
188188
: null,
189189
icon: <ICDeleteInteractive className="scr-5 dc__no-shrink icon-dim-16" />,
190190
variant: 'negative',

src/Pages/Shared/SwitchThemeDialog/SwitchThemeDialog.component.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ const SwitchThemeDialog = ({
112112
handleUpdateUserThemePreference,
113113
disableAPICalls = false,
114114
}: SwitchThemeDialogProps) => {
115-
const { handleShowSwitchThemeLocationTippyChange, handleThemePreferenceChange } = useTheme()
115+
const { handleShowSwitchThemeLocationTippyChange, handleThemePreferenceChange, appTheme } = useTheme()
116116
const [themePreference, setThemePreference] = useState<typeof initialThemePreference>(
117117
!initialThemePreference ? 'auto' : initialThemePreference,
118118
)
@@ -150,7 +150,7 @@ const SwitchThemeDialog = ({
150150
setIsSaving(true)
151151

152152
if (!disableAPICalls) {
153-
const isSuccessful = await updateUserPreferences({ ...currentUserPreferences, themePreference })
153+
const isSuccessful = await updateUserPreferences({ ...currentUserPreferences, themePreference, appTheme })
154154
if (isSuccessful) {
155155
handleSuccess()
156156
}

src/components/cdPipeline/BuildCD.tsx

Lines changed: 62 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { SyntheticEvent, useContext, useState } from 'react'
17+
import { useContext, useState } from 'react'
1818
import {
1919
CustomInput,
2020
DeploymentAppTypes,
2121
InfoColourBar,
2222
Progressing,
23-
RadioGroup,
24-
RadioGroupItem,
2523
TippyCustomized,
2624
TippyTheme,
2725
YAMLStringify,
@@ -34,44 +32,45 @@ import {
3432
ComponentSizeType,
3533
showError,
3634
TriggerType,
35+
InfoBlock,
36+
ButtonVariantType,
3737
useMainContext,
38-
ErrorScreenNotAuthorized,
3938
Tooltip,
4039
MODES,
4140
useGetUserRoles,
4241
} from '@devtron-labs/devtron-fe-common-lib'
4342
import { useParams, useHistory } from 'react-router-dom'
4443
import yamlJsParser from 'yaml'
45-
import error from '../../assets/icons/misc/errorInfo.svg'
46-
import { ReactComponent as AlertTriangle } from '../../assets/icons/ic-alert-triangle.svg'
44+
import { ReactComponent as ICArrowRight } from '@Icons/ic-arrow-right.svg'
45+
import { ReactComponent as Add } from '@Icons/ic-add.svg'
46+
import { ReactComponent as AlertTriangle } from '@Icons/ic-alert-triangle.svg'
47+
import { ReactComponent as Help } from '@Icons/ic-help.svg'
48+
import { ReactComponent as ICInfo } from '@Icons/ic-info-filled.svg'
49+
import { ReactComponent as ICHelpOutline } from '@Icons/ic-help-outline.svg'
50+
import settings from '@Icons/ic-settings.svg'
51+
import trash from '@Icons/misc/delete.svg'
52+
import error from '@Icons/misc/errorInfo.svg'
53+
import { Info } from '../common/icons/Icons'
4754
import { ENV_ALREADY_EXIST_ERROR, RegistryPayloadWithSelectType, URLS, ViewType } from '../../config'
4855
import { GeneratedHelmPush, MigrateToDevtronFormState, TriggerTypeRadioProps } from './cdPipeline.types'
4956
import { createClusterEnvGroup, getDeploymentAppType, importComponentFromFELibrary, Select } from '../common'
50-
import { Info } from '../common/icons/Icons'
51-
import { ReactComponent as Help } from '../../assets/icons/ic-help.svg'
52-
import { ReactComponent as ICHelpOutline } from '../../assets/icons/ic-help-outline.svg'
53-
import settings from '../../assets/icons/ic-settings.svg'
54-
import trash from '../../assets/icons/misc/delete.svg'
5557
import { pipelineContext } from '../workflowEditor/workflowEditor'
56-
import { ReactComponent as Add } from '../../assets/icons/ic-add.svg'
5758
import { getNamespacePlaceholder } from './cdpipeline.util'
5859
import { ValidationRules } from '../ciPipeline/validationRules'
5960
import { DeploymentAppRadioGroup } from '../v2/values/chartValuesDiff/ChartValuesView.component'
6061
import CustomImageTags from '../CIPipelineN/CustomImageTags'
61-
import { ReactComponent as Warn } from '../../assets/icons/ic-warning.svg'
6262
import { GITOPS_REPO_REQUIRED } from '../v2/values/chartValuesDiff/constant'
6363
import { getGitOpsRepoConfig } from '../../services/service'
64-
import { ReactComponent as ICInfo } from '../../assets/icons/ic-info-filled.svg'
6564

6665
import PullImageDigestToggle from './PullImageDigestToggle'
6766
import { EnvironmentWithSelectPickerType } from '@Components/CIPipelineN/types'
6867
import { BuildCDProps } from './types'
69-
import { MigrateFromArgo } from './MigrateToDevtron'
68+
import { MigrateToDevtron } from './MigrateToDevtron'
7069
import TriggerTypeRadio from './TriggerTypeRadio'
70+
import { MigrateToDevtronProps } from './MigrateToDevtron/types'
7171

7272
const VirtualEnvSelectionInfoText = importComponentFromFELibrary('VirtualEnvSelectionInfoText')
7373
const HelmManifestPush = importComponentFromFELibrary('HelmManifestPush')
74-
const MigrateHelmReleaseBody = importComponentFromFELibrary('MigrateHelmReleaseBody', null, 'function')
7574
const ApprovalPolicyRedirectCard = importComponentFromFELibrary('ApprovalPolicyRedirectCard', null, 'function')
7675

7776
export default function BuildCD({
@@ -89,6 +88,7 @@ export default function BuildCD({
8988
getMandatoryPluginData,
9089
migrateToDevtronFormState,
9190
setMigrateToDevtronFormState,
91+
isGitOpsInstalledButNotConfigured,
9292
}: BuildCDProps) {
9393
const {
9494
formData,
@@ -145,13 +145,11 @@ export default function BuildCD({
145145

146146
const handleTriggerTypeChange = (event) => {
147147
const _form = { ...formData }
148-
const triggerType = event.target.value as MigrateToDevtronFormState['triggerType']
149-
150-
_form.triggerType = triggerType
148+
_form.triggerType = event.target.value as MigrateToDevtronFormState['triggerType']
151149
setFormData(_form)
152150
}
153151

154-
const handleMigrateFromAppTypeChange = (event: SyntheticEvent) => {
152+
const handleMigrateFromAppTypeChange: MigrateToDevtronProps['handleMigrateFromAppTypeChange'] = (event) => {
155153
const { value } = event.target as HTMLInputElement
156154
setMigrateToDevtronFormState((prevState) => ({
157155
...prevState,
@@ -304,27 +302,29 @@ export default function BuildCD({
304302
.catch((err) => {
305303
if (err.code === 409) {
306304
setReloadNoGitOpsRepoConfiguredModal(true)
305+
} else {
306+
showError(err)
307307
}
308308
})
309309
.finally(() => {
310310
setGitopsConflictLoading(false)
311311
})
312312
}
313313

314-
const gitOpsRepoConfigInfoBar = (content: string) => {
315-
return (
316-
<InfoColourBar
317-
message={content}
318-
classname="warn mb-16"
319-
Icon={Warn}
320-
iconClass="warning-icon"
321-
linkClass={`flex ${gitopsConflictLoading ? 'loading-dots-cb5 cursor-not-allowed' : ''}`}
322-
linkText="Configure GitOps Repository"
323-
internalLink
324-
linkOnClick={checkGitOpsRepoConflict}
325-
/>
326-
)
327-
}
314+
const gitOpsRepoConfigInfoBar = (content: string) => (
315+
<InfoBlock
316+
description={content}
317+
variant="warning"
318+
buttonProps={{
319+
dataTestId: 'configure-gitops-repo-button',
320+
variant: ButtonVariantType.text,
321+
text: 'Configure',
322+
endIcon: <ICArrowRight />,
323+
onClick: checkGitOpsRepoConflict,
324+
isLoading: gitopsConflictLoading,
325+
}}
326+
/>
327+
)
328328

329329
const renderTriggerType = () => (
330330
<TriggerTypeRadio
@@ -490,7 +490,9 @@ export default function BuildCD({
490490
/>
491491
</div>
492492
</div>
493-
{gitOpsRepoNotConfiguredAndOptionsHidden && gitOpsRepoConfigInfoBar(GITOPS_REPO_REQUIRED)}
493+
<div className="mb-16">
494+
{gitOpsRepoNotConfiguredAndOptionsHidden && gitOpsRepoConfigInfoBar(GITOPS_REPO_REQUIRED)}
495+
</div>
494496
{renderNamespaceInfo(namespaceEditable)}
495497
{isVirtualEnvironment
496498
? HelmManifestPush && (
@@ -604,23 +606,22 @@ export default function BuildCD({
604606
setFormData(_form)
605607
}
606608

607-
const renderDeploymentAppType = () => {
608-
return (
609-
<div className="cd-pipeline__deployment-type mt-16">
610-
<label className="form__label form__label--sentence dc__bold">How do you want to deploy?</label>
611-
<DeploymentAppRadioGroup
612-
isDisabled={!!cdPipelineId}
613-
deploymentAppType={formData.deploymentAppType ?? DeploymentAppTypes.HELM}
614-
handleOnChange={handleDeploymentAppTypeChange}
615-
allowedDeploymentTypes={formData.allowedDeploymentTypes}
616-
rootClassName={`chartrepo-type__radio-group ${!cdPipelineId ? 'bcb-5' : ''}`}
617-
isFromCDPipeline
618-
isGitOpsRepoNotConfigured={isGitOpsRepoNotConfigured}
619-
gitOpsRepoConfigInfoBar={gitOpsRepoConfigInfoBar}
620-
/>
621-
</div>
622-
)
623-
}
609+
const renderDeploymentAppType = () => (
610+
<div className="cd-pipeline__deployment-type mt-16">
611+
<label className="form__label form__label--sentence dc__bold">How do you want to deploy?</label>
612+
<DeploymentAppRadioGroup
613+
isDisabled={!!cdPipelineId}
614+
deploymentAppType={formData.deploymentAppType ?? DeploymentAppTypes.HELM}
615+
handleOnChange={handleDeploymentAppTypeChange}
616+
allowedDeploymentTypes={formData.allowedDeploymentTypes}
617+
rootClassName={`chartrepo-type__radio-group ${!cdPipelineId ? 'bcb-5' : ''}`}
618+
isFromCDPipeline
619+
isGitOpsRepoNotConfigured={isGitOpsRepoNotConfigured}
620+
gitOpsRepoConfigInfoBar={gitOpsRepoConfigInfoBar}
621+
areGitopsCredentialsConfigured={!isGitOpsInstalledButNotConfigured}
622+
/>
623+
</div>
624+
)
624625

625626
const renderStrategyOptions = () => {
626627
return (
@@ -777,80 +778,14 @@ export default function BuildCD({
777778
)
778779
}
779780

780-
const renderSelectMigrateFromRadioGroup = (deploymentAppType: MigrateToDevtronFormState['deploymentAppType']) => (
781-
<RadioGroupItem dataTestId={`${deploymentAppType}-radio-item`} value={deploymentAppType}>
782-
<Tooltip
783-
alwaysShowTippyOnHover
784-
content={
785-
<div className="flexbox-col dc__gap-2">
786-
<h6 className="m-0 fs-12 fw-6 lh-18">
787-
{deploymentAppType === DeploymentAppTypes.HELM
788-
? 'Migrate helm release'
789-
: 'Migrate Argo CD Application'}
790-
</h6>
791-
792-
<p className="m-0 fs-12 fw-4 lh-18">
793-
{deploymentAppType === DeploymentAppTypes.HELM
794-
? 'Migrate an existing Helm Release to manage deployments via CD pipeline'
795-
: 'Migrate an existing Argo CD Application to manage deployments via CD pipeline'}
796-
</p>
797-
</div>
798-
}
799-
>
800-
<span className="cn-9 fs-13 fw-4 lh-20 dc__underline-dotted">
801-
{deploymentAppType === DeploymentAppTypes.HELM ? 'Helm Release' : 'Argo CD Application'}
802-
</span>
803-
</Tooltip>
804-
</RadioGroupItem>
805-
)
806-
807781
const renderBuild = () => {
808-
if (releaseMode === ReleaseMode.MIGRATE_EXTERNAL_APPS && !isAdvanced && MigrateHelmReleaseBody) {
809-
if (!isSuperAdmin) {
810-
return <ErrorScreenNotAuthorized />
811-
}
812-
813-
if (!isFeatureArgoCdMigrationEnabled) {
814-
return (
815-
<MigrateHelmReleaseBody
816-
renderTriggerType={renderTriggerType}
817-
formData={formData}
818-
setFormData={setFormData}
819-
renderEnvSelector={renderEnvSelector}
820-
/>
821-
)
822-
}
823-
782+
if (!isAdvanced && releaseMode === ReleaseMode.MIGRATE_EXTERNAL_APPS) {
824783
return (
825-
<div className="flexbox-col dc__gap-16">
826-
<div className="flexbox-col dc__gap-8">
827-
<span className="cn-7 fs-13 fw-4 lh-20">Select type of application to migrate</span>
828-
829-
<RadioGroup
830-
className="radio-group-no-border migrate-to-devtron__deployment-app-type-radio-group"
831-
value={migrateToDevtronFormState.deploymentAppType}
832-
name="migrate-from-app-type"
833-
onChange={handleMigrateFromAppTypeChange}
834-
>
835-
{renderSelectMigrateFromRadioGroup(DeploymentAppTypes.HELM)}
836-
{renderSelectMigrateFromRadioGroup(DeploymentAppTypes.GITOPS)}
837-
</RadioGroup>
838-
</div>
839-
840-
{migrateToDevtronFormState.deploymentAppType === DeploymentAppTypes.HELM ? (
841-
<MigrateHelmReleaseBody
842-
renderTriggerType={renderTriggerType}
843-
formData={formData}
844-
setFormData={setFormData}
845-
renderEnvSelector={renderEnvSelector}
846-
/>
847-
) : (
848-
<MigrateFromArgo
849-
migrateToDevtronFormState={migrateToDevtronFormState}
850-
setMigrateToDevtronFormState={setMigrateToDevtronFormState}
851-
/>
852-
)}
853-
</div>
784+
<MigrateToDevtron
785+
migrateToDevtronFormState={migrateToDevtronFormState}
786+
setMigrateToDevtronFormState={setMigrateToDevtronFormState}
787+
handleMigrateFromAppTypeChange={handleMigrateFromAppTypeChange}
788+
/>
854789
)
855790
}
856791

@@ -881,15 +816,14 @@ export default function BuildCD({
881816
{!window._env_.HIDE_GITOPS_OR_HELM_OPTION &&
882817
!isVirtualEnvironment &&
883818
formData.allowedDeploymentTypes.length > 0 &&
884-
!noGitOpsModuleInstalledAndConfigured &&
819+
// Want to show this when gitops module is installed, does not matter if it is configured or not
820+
(!noGitOpsModuleInstalledAndConfigured || isGitOpsInstalledButNotConfigured) &&
885821
renderDeploymentAppType()}
886822

887823
{isAdvanced ? renderAdvancedDeploymentStrategy() : renderBasicDeploymentStrategy()}
888-
889-
{isAdvanced && ApprovalPolicyRedirectCard && <ApprovalPolicyRedirectCard />}
890-
891824
{isAdvanced && (
892825
<>
826+
{ApprovalPolicyRedirectCard && <ApprovalPolicyRedirectCard />}
893827
<CustomImageTags
894828
formData={formData}
895829
setFormData={setFormData}

0 commit comments

Comments
 (0)