Skip to content

Commit a19de85

Browse files
committed
Merge branch 'main' into approval-via-email
2 parents 6db1b5b + b7eaf29 commit a19de85

32 files changed

+1723
-2108
lines changed

.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,5 @@ LOGIN_PAGE_IMAGE_BG=
4040
HIDE_DEFAULT_CLUSTER=false
4141
GLOBAL_API_TIMEOUT=60000
4242
TRIGGER_API_TIMEOUT=60000
43+
LOGIN_DT_LOGO=
44+
SIDEBAR_DT_LOGO=

config.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,7 @@
3030
| DEFAULT_CI_TRIGGER_TYPE_MANUAL | "false" | Change default trigger behaviour of newly created ci-pipeline to manual |
3131
| GLOBAL_API_TIMEOUT | 60000 | Default timeout for all API requests in DASHBOARD |
3232
| TRIGGER_API_TIMEOUT | 60000 | Default timeout for all API requests for Trigger calls (Deploy artifacts, charts) in DASHBOARD |
33+
| LOGIN_DT_LOGO | "" | Devtron logo for login page |
34+
| SIDEBAR_DT_LOGO | "" | Devtron logo for sidebar |
3335

3436
# DASHBOARD CONFIG SECRET

src/assets/icons/ic-login-dt-with-hat.svg

Lines changed: 0 additions & 289 deletions
This file was deleted.

src/assets/icons/ic-sidebar-dt-with-hat.svg

Lines changed: 0 additions & 286 deletions
This file was deleted.

src/components/CIPipelineN/AdvancedConfigOptions.tsx

Lines changed: 63 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,25 @@
11
import React, { useContext, useEffect, useState } from 'react'
2-
import { ReactComponent as Close } from '../../assets/icons/ic-close.svg'
3-
import { ReactComponent as Add } from '../../assets/icons/ic-add.svg'
4-
import { ReactComponent as QuestionIcon } from '../v2/assets/icons/ic-question.svg'
5-
import { ReactComponent as HelpIcon } from '../../assets/icons/ic-help.svg'
2+
import { CIBuildConfigType, CIBuildType, noop } from '@devtron-labs/devtron-fe-common-lib'
63
import CIConfig from '../ciConfig/CIConfig'
4+
import DockerArgs from './DockerArgs'
5+
import CustomImageTags from './CustomImageTags'
6+
import TargetPlatformSelector from '../ciConfig/TargetPlatformSelector'
77
import { ComponentStates } from '../EnvironmentOverride/EnvironmentOverrides.type'
88
import { AdvancedConfigOptionsProps, CIConfigParentState } from '../ciConfig/types'
99
import { DockerConfigOverrideKeys } from '../ciPipeline/types'
10-
import { CIBuildConfigType, CIBuildType, CustomInput, noop, TippyCustomized, TippyTheme } from '@devtron-labs/devtron-fe-common-lib'
11-
import { getTargetPlatformMap } from '../ciConfig/CIConfig.utils'
12-
import TargetPlatformSelector from '../ciConfig/TargetPlatformSelector'
1310
import { OptionType } from '../app/types'
14-
import '../ciConfig/CIConfig.scss'
15-
import CustomImageTags from './CustomImageTags'
11+
import { DockerArgsAction, HandleDockerArgsUpdateType } from './types'
12+
import { getTargetPlatformMap } from '../ciConfig/CIConfig.utils'
1613
import { pipelineContext } from '../workflowEditor/workflowEditor'
14+
import '../ciConfig/CIConfig.scss'
1715

1816
export default function AdvancedConfigOptions({
1917
ciPipeline,
2018
}: AdvancedConfigOptionsProps) {
21-
const {
22-
formData,
23-
setFormData,
24-
loadingState,
25-
setLoadingState,
26-
formDataErrorObj,
27-
setFormDataErrorObj
28-
} = useContext(pipelineContext)
19+
const { formData, setFormData, loadingState, setLoadingState, formDataErrorObj, setFormDataErrorObj } =
20+
useContext(pipelineContext)
2921
const [collapsedSection, setCollapsedSection] = useState<boolean>(false)
22+
// TODO: Should be getting that from formData, redundant state
3023
const [allowOverride, setAllowOverride] = useState<boolean>(ciPipeline?.isDockerConfigOverridden ?? false)
3124
const [parentState, setParentState] = useState<CIConfigParentState>({
3225
loadingState: ComponentStates.loading,
@@ -41,7 +34,13 @@ export default function AdvancedConfigOptions({
4134
const targetPlatformMap = getTargetPlatformMap()
4235
const [selectedTargetPlatforms, setSelectedTargetPlatforms] = useState<OptionType[]>([])
4336
const [showCustomPlatformWarning, setShowCustomPlatformWarning] = useState<boolean>(false)
44-
37+
38+
const isGlobalAndNotBuildpack =
39+
!allowOverride && parentState.ciConfig?.ciBuildConfig.ciBuildType !== CIBuildType.BUILDPACK_BUILD_TYPE
40+
const isCurrentCITypeBuildpack = parentState.currentCIBuildType === CIBuildType.BUILDPACK_BUILD_TYPE
41+
const hasParentLoaded = parentState?.loadingState === ComponentStates.loaded
42+
const showNonBuildpackOptions = hasParentLoaded && (isGlobalAndNotBuildpack || !isCurrentCITypeBuildpack)
43+
4544
useEffect(() => {
4645
if (parentState.ciConfig) {
4746
populateCurrentPlatformsData()
@@ -69,31 +68,28 @@ export default function AdvancedConfigOptions({
6968
setShowCustomPlatformWarning(_customTargetPlatform)
7069
}
7170

72-
const addDockerArg = (): void => {
71+
// All updates to docker args will be handled here, which will will be further merged into formData on introduction of reducer
72+
const handleDockerArgsUpdate = ({ action, argData }: HandleDockerArgsUpdateType) => {
7373
const _form = { ...formData }
7474

75-
if (_form.args.length > 0) {
76-
_form.args.unshift({ key: '', value: '' })
77-
} else {
78-
_form.args.push({ key: '', value: '' })
79-
}
75+
switch (action) {
76+
case DockerArgsAction.ADD:
77+
_form.args.unshift({ key: '', value: '' })
78+
break
8079

81-
setFormData(_form)
82-
}
80+
case DockerArgsAction.UPDATE_KEY:
81+
_form.args[argData.index]['key'] = argData.value
82+
break
8383

84-
const handleDockerArgChange = (event, index: number, key: 'key' | 'value'): void => {
85-
const _form = { ...formData }
86-
_form.args[index][key] = event.target.value
87-
setFormData(_form)
88-
}
84+
case DockerArgsAction.UPDATE_VALUE:
85+
_form.args[argData.index]['value'] = argData.value
86+
break
8987

90-
const removeDockerArgs = (index: number): void => {
91-
const _form = { ...formData }
92-
const newArgs = []
93-
for (let i = 0; i < _form.args.length; i++) {
94-
if (index != i) newArgs.push(_form.args[i])
88+
case DockerArgsAction.DELETE:
89+
_form.args = _form.args.filter((_, index) => index !== argData.index)
90+
break
9591
}
96-
_form.args = newArgs
92+
9793
setFormData(_form)
9894
}
9995

@@ -151,71 +147,6 @@ export default function AdvancedConfigOptions({
151147
setFormData(_form)
152148
}
153149

154-
const renderDockerArgs = () => {
155-
return (
156-
<div>
157-
<h3 className="flex left fs-13 fw-6 cn-9 lh-20 m-0">
158-
Docker build arguments
159-
<TippyCustomized
160-
theme={TippyTheme.white}
161-
className="w-300"
162-
placement="top"
163-
Icon={HelpIcon}
164-
iconClass="fcv-5"
165-
heading="Docker Build Arguments"
166-
infoText="Key/value pair will be appended as docker build arguments (--build-args)."
167-
showCloseButton={true}
168-
trigger="click"
169-
interactive={true}
170-
>
171-
<QuestionIcon className="icon-dim-16 fcn-6 ml-4 cursor" />
172-
</TippyCustomized>
173-
</h3>
174-
<p className="fs-13 fw-4 cn-7 lh-20 m-0">Override docker build configurations for this pipeline.</p>
175-
<div className="pointer cb-5 fw-6 fs-13 flexbox content-fit lh-32 mt-8" onClick={addDockerArg} data-testid="create-build-pipeline-docker-args-add-parameter-button">
176-
<Add className="add-icon mt-6" />
177-
Add parameter
178-
</div>
179-
{formData.args.length > 0 &&
180-
formData.args.map((arg, index) => {
181-
return (
182-
<div className="flexbox justify-space" key={`build-${index}`}>
183-
<div className="mt-8 w-100">
184-
<CustomInput
185-
name="arg-key"
186-
data-testid={`docker-arg-key-${index}`}
187-
rootClassName="w-100 dc__top-radius-4 pl-10 pr-10 pt-6 pb-6 en-2 bw-1"
188-
autoComplete="off"
189-
placeholder="Key"
190-
type="text"
191-
value={arg.key}
192-
onChange={(event) => {
193-
handleDockerArgChange(event, index, 'key')
194-
}}
195-
/>
196-
<textarea
197-
data-testid={`docker-arg-value-${index}`}
198-
className="build__value w-100 dc__bottom-radius-4 dc__no-top-border pl-10 pr-10 pt-6 pb-6 en-2 bw-1"
199-
value={arg.value}
200-
onChange={(event) => {
201-
handleDockerArgChange(event, index, 'value')
202-
}}
203-
placeholder="Value"
204-
/>
205-
</div>
206-
<Close
207-
className="icon-dim-24 pointer mt-6 ml-6"
208-
onClick={() => {
209-
removeDockerArgs(index)
210-
}}
211-
/>
212-
</div>
213-
)
214-
})}
215-
</div>
216-
)
217-
}
218-
219150
const toggleAdvancedOptions = (): void => {
220151
setCollapsedSection(!collapsedSection)
221152
}
@@ -240,6 +171,7 @@ export default function AdvancedConfigOptions({
240171
className={`allow-config-override flex h-28 ml-auto cta ${allowOverride ? 'delete' : 'ghosted'}`}
241172
data-testid={`create-build-pipeline-${allowOverride ? 'delete' : 'allow'}-override-button`}
242173
onClick={toggleAllowOverride}
174+
type="button"
243175
>
244176
{`${allowOverride ? 'Delete' : 'Allow'} Override`}
245177
</button>
@@ -256,33 +188,35 @@ export default function AdvancedConfigOptions({
256188
setLoadingStateFromParent={setLoadingState}
257189
/>
258190

259-
{parentState?.loadingState === ComponentStates.loaded &&
260-
parentState.currentCIBuildType !== CIBuildType.BUILDPACK_BUILD_TYPE && (
261-
<>
262-
<div className="white-card white-card__docker-config dc__position-rel mb-15">
263-
<TargetPlatformSelector
264-
allowOverride={allowOverride}
265-
selectedTargetPlatforms={selectedTargetPlatforms}
266-
setSelectedTargetPlatforms={setSelectedTargetPlatforms}
267-
showCustomPlatformWarning={showCustomPlatformWarning}
268-
setShowCustomPlatformWarning={setShowCustomPlatformWarning}
269-
targetPlatformMap={targetPlatformMap}
270-
targetPlatform={targetPlatforms}
271-
configOverrideView={true}
272-
updateDockerConfigOverride={updateDockerConfigOverride}
273-
/>
274-
</div>
275-
<CustomImageTags
276-
savedTagPattern={parentState.selectedCIPipeline.customTag?.tagPattern}
277-
formData={formData}
278-
setFormData={setFormData}
279-
formDataErrorObj={formDataErrorObj}
280-
setFormDataErrorObj={setFormDataErrorObj}
281-
/>
282-
283-
{renderDockerArgs()}
284-
</>
285-
)}
191+
{showNonBuildpackOptions && (
192+
<div className="white-card white-card__docker-config dc__position-rel mb-15">
193+
<TargetPlatformSelector
194+
allowOverride={allowOverride}
195+
selectedTargetPlatforms={selectedTargetPlatforms}
196+
setSelectedTargetPlatforms={setSelectedTargetPlatforms}
197+
showCustomPlatformWarning={showCustomPlatformWarning}
198+
setShowCustomPlatformWarning={setShowCustomPlatformWarning}
199+
targetPlatformMap={targetPlatformMap}
200+
targetPlatform={targetPlatforms}
201+
configOverrideView={true}
202+
updateDockerConfigOverride={updateDockerConfigOverride}
203+
/>
204+
</div>
205+
)}
206+
207+
{hasParentLoaded && (
208+
<CustomImageTags
209+
savedTagPattern={parentState.selectedCIPipeline.customTag?.tagPattern}
210+
formData={formData}
211+
setFormData={setFormData}
212+
formDataErrorObj={formDataErrorObj}
213+
setFormDataErrorObj={setFormDataErrorObj}
214+
/>
215+
)}
216+
217+
{showNonBuildpackOptions && (
218+
<DockerArgs args={formData.args} handleDockerArgsUpdate={handleDockerArgsUpdate} />
219+
)}
286220
</div>
287221
</div>
288222
)

src/components/CIPipelineN/Build.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { SourceMaterials } from '../ciPipeline/SourceMaterials'
55
import { ValidationRules } from '../ciPipeline/validationRules'
66
import { Progressing, Toggle, CiPipelineSourceTypeOption, CustomInput } from '@devtron-labs/devtron-fe-common-lib'
77
import { BuildType, WebhookCIProps } from '../ciPipeline/types'
8-
import { ReactComponent as AlertTriangle } from '../../assets/icons/ic-alert-triangle.svg'
98
import { ReactComponent as BugScanner } from '../../assets/icons/scanner.svg'
109
import AdvancedConfigOptions from './AdvancedConfigOptions'
1110
import { pipelineContext } from '../workflowEditor/workflowEditor'
@@ -50,8 +49,8 @@ export function Build({
5049
setFormData(_formData)
5150
}
5251

53-
const handleOnBlur = (event): void => {
54-
getPluginData()
52+
const handleOnBlur = async (): Promise<void> => {
53+
await getPluginData()
5554
}
5655

5756

0 commit comments

Comments
 (0)