From 43e60d1b0316663c97e049064ee42ce81bb85abc Mon Sep 17 00:00:00 2001 From: Vardan Bansal Date: Tue, 19 Sep 2023 13:35:17 -0700 Subject: [PATCH] auto generate pipeline --- web/src/framework/strings/stringTypes.ts | 3 + web/src/i18n/strings.en.yaml | 3 + .../AddUpdatePipeline.module.scss | 8 ++ .../AddUpdatePipeline.module.scss.d.ts | 2 + .../AddUpdatePipeline/AddUpdatePipeline.tsx | 77 +++++++++++++------ 5 files changed, 71 insertions(+), 22 deletions(-) diff --git a/web/src/framework/strings/stringTypes.ts b/web/src/framework/strings/stringTypes.ts index ee064e0e0..1386739e1 100644 --- a/web/src/framework/strings/stringTypes.ts +++ b/web/src/framework/strings/stringTypes.ts @@ -234,8 +234,10 @@ export interface StringsMap { findOrCreateBranch: string firstTimeTitle: string general: string + generate: string generateCloneCred: string generateCloneText: string + generateHelptext: string getMyCloneTitle: string gitIgnore: string gitness: string @@ -409,6 +411,7 @@ export interface StringsMap { 'pipelines.executionStarted': string 'pipelines.failedToCreatePipeline': string 'pipelines.failedToFindPath': string + 'pipelines.failedToGenerate': string 'pipelines.failedToUpdatePipeline': string 'pipelines.lastExecution': string 'pipelines.name': string diff --git a/web/src/i18n/strings.en.yaml b/web/src/i18n/strings.en.yaml index 4e7a739f6..03ccac310 100644 --- a/web/src/i18n/strings.en.yaml +++ b/web/src/i18n/strings.en.yaml @@ -668,6 +668,7 @@ pipelines: executionCancelled: Pipeline execution cancelled. executionCouldNotCancel: Failure while cancelling Pipeline execution. failedToFindPath: failed to find path + failedToGenerate: Failed to generate pipeline executions: noData: There are no executions newExecutionButton: Run Pipeline @@ -789,3 +790,5 @@ exportSpace: exportRepoCompleted: Exported {{repoCount}} repositories exportRepo: Exporting {{repoCount}} repositories spaceUpdate: Project Updated +generate: Generate +generateHelptext: Let Gitness build your Pipeline for you. diff --git a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss index 0b5f9d508..f09bdbae7 100644 --- a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss +++ b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss @@ -58,3 +58,11 @@ } } } + +.generate { + width: fit-content; +} + +.generateHeader { + border-bottom: 1px solid var(--grey-100); +} diff --git a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss.d.ts b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss.d.ts index e2de635a5..81b62d151 100644 --- a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss.d.ts +++ b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.module.scss.d.ts @@ -3,6 +3,8 @@ export declare const breadcrumb: string export declare const drawer: string export declare const editorContainer: string +export declare const generate: string +export declare const generateHeader: string export declare const header: string export declare const layout: string export declare const main: string diff --git a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.tsx b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.tsx index 110b69f10..0f9106c98 100644 --- a/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.tsx +++ b/web/src/pages/AddUpdatePipeline/AddUpdatePipeline.tsx @@ -86,6 +86,7 @@ const AddUpdatePipeline = (): JSX.Element => { const repoPath = useMemo(() => repoMetadata?.path || '', [repoMetadata]) const [isExistingPipeline, setIsExistingPipeline] = useState(false) const [isDirty, setIsDirty] = useState(false) + const [generatingPipeline, setGeneratingPipeline] = useState(false) const pipelineSaveOption: PipelineSaveAndRunOption = { title: getString('save'), @@ -241,6 +242,22 @@ const AddUpdatePipeline = (): JSX.Element => { [yamlVersion, isExistingPipeline, originalPipelineYAMLFileContent, pipelineAsYAML] ) + const handleGeneratePipeline = useCallback(async (): Promise => { + try { + const response = await fetch(`/api/v1/repos/${repoPath}/+/pipelines/generate`) + if (response.ok && response.status === 200) { + const pipelineAsYAML = await response.text() + if (pipelineAsYAML) { + setPipelineAsYaml(pipelineAsYAML) + } + } + setGeneratingPipeline(false) + } catch (exception) { + showError(getErrorMessage(exception), 0, getString('pipelines.failedToGenerate')) + setGeneratingPipeline(false) + } + }, [repoPath]) + const renderCTA = useCallback(() => { /* Do not render CTA till pipeline existence info is obtained */ if (fetchingPipeline || !pipelineData) { @@ -325,28 +342,44 @@ const AddUpdatePipeline = (): JSX.Element => { return ( <> - {renderCTA()}} - /> + + {renderCTA()}} + /> + +