]> source.dussan.org Git - sonarqube.git/blob
31c33edbc1723dacba4369fec1ccee9bef14f70c
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2023 SonarSource SA
4  * mailto:info AT sonarsource DOT com
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 import { BasicSeparator, Title, TutorialStep, TutorialStepList } from 'design-system';
21 import * as React from 'react';
22 import { translate } from '../../../helpers/l10n';
23 import {
24   AlmKeys,
25   AlmSettingsInstance,
26   ProjectAlmBindingResponse,
27 } from '../../../types/alm-settings';
28 import { Component } from '../../../types/types';
29 import { LoggedInUser } from '../../../types/users';
30 import AllSet from '../components/AllSet';
31 import GithubCFamilyExampleRepositories from '../components/GithubCFamilyExampleRepositories';
32 import YamlFileStep from '../components/YamlFileStep';
33 import { BuildTools, TutorialModes } from '../types';
34 import AnalysisCommand from './AnalysisCommand';
35 import RepositoryVariables from './RepositoryVariables';
36
37 export enum Steps {
38   REPOSITORY_VARIABLES = 1,
39   YAML = 2,
40   ALL_SET = 3,
41 }
42
43 export interface BitbucketPipelinesTutorialProps {
44   almBinding?: AlmSettingsInstance;
45   baseUrl: string;
46   component: Component;
47   currentUser: LoggedInUser;
48   mainBranchName: string;
49   projectBinding?: ProjectAlmBindingResponse;
50   willRefreshAutomatically?: boolean;
51 }
52
53 export default function BitbucketPipelinesTutorial(props: BitbucketPipelinesTutorialProps) {
54   const {
55     almBinding,
56     baseUrl,
57     currentUser,
58     component,
59     projectBinding,
60     willRefreshAutomatically,
61     mainBranchName,
62   } = props;
63
64   const [done, setDone] = React.useState<boolean>(false);
65   return (
66     <>
67       <Title>{translate('onboarding.tutorial.with.bitbucket_ci.title')}</Title>
68
69       <TutorialStepList className="sw-mb-8">
70         <TutorialStep
71           title={translate('onboarding.tutorial.with.bitbucket_pipelines.variables.title')}
72         >
73           <RepositoryVariables
74             almBinding={almBinding}
75             baseUrl={baseUrl}
76             component={component}
77             currentUser={currentUser}
78             projectBinding={projectBinding}
79           />
80         </TutorialStep>
81         <TutorialStep title={translate('onboarding.tutorial.with.bitbucket_pipelines.yaml.title')}>
82           <YamlFileStep setDone={setDone}>
83             {(buildTool) => (
84               <>
85                 {buildTool === BuildTools.CFamily && (
86                   <GithubCFamilyExampleRepositories
87                     className="sw-my-4 sw-w-abs-600"
88                     ci={TutorialModes.BitbucketPipelines}
89                   />
90                 )}
91                 <AnalysisCommand
92                   buildTool={buildTool}
93                   component={component}
94                   mainBranchName={mainBranchName}
95                 />
96               </>
97             )}
98           </YamlFileStep>
99         </TutorialStep>
100
101         {done && (
102           <>
103             <BasicSeparator className="sw-my-10" />
104             <AllSet alm={AlmKeys.GitLab} willRefreshAutomatically={willRefreshAutomatically} />
105           </>
106         )}
107       </TutorialStepList>
108     </>
109   );
110 }