This is an automated email from the ASF dual-hosted git repository.
likyh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 01ee5c76b fix(config-ui): some bugs (#4587)
01ee5c76b is described below
commit 01ee5c76bc3b295415bde2e529b63912467d0cab
Author: 青湛 <[email protected]>
AuthorDate: Mon Mar 6 15:18:18 2023 +0800
fix(config-ui): some bugs (#4587)
* fix(config-ui): bp not properly filtered
* fix(config-ui): rate limit lost default value
* feat(config-ui): add default value for transformation
* fix(config-ui): adjust the rules for project name
* fix(config-ui): not reset value after project create
* fix(config-ui): adjust the list page parameter pageSize
* fix(config-ui): endpoint subLabel error for gitlab
* feat(config-ui): add plugin customize
* fix(config-ui): add default value for use-operator's formatReason
* fix(config-ui): optimize the creation of webhook in the project
* fix(config-ui): project name regular problem
* fix(config-ui): project name regular problem
---
config-ui/src/hooks/use-operator.ts | 4 +-
.../advanced-editor/example/customize.ts} | 22 +++++++-
.../components/advanced-editor/example/index.ts | 14 ++++--
config-ui/src/pages/blueprint/home/api.ts | 7 ++-
config-ui/src/pages/blueprint/home/use-home.ts | 7 ++-
.../src/pages/project/detail/panel/settings.tsx | 2 +-
config-ui/src/pages/project/detail/use-project.ts | 2 +-
config-ui/src/pages/project/home/index.tsx | 7 ++-
config-ui/src/pages/project/home/use-project.ts | 4 +-
.../connection-form/fields/rate-limit.tsx | 2 +-
config-ui/src/plugins/config.ts | 2 +
.../src/plugins/register/bitbucket/config.tsx | 7 ++-
.../plugins/register/bitbucket/transformation.tsx | 58 ++++++++++++----------
.../register/customize/config.ts} | 10 +++-
.../api.ts => plugins/register/customize/index.ts} | 4 +-
config-ui/src/plugins/register/github/config.tsx | 28 ++++++-----
.../src/plugins/register/github/transformation.tsx | 28 +++++++----
.../register/gitlab/components/ci-cd/index.tsx | 4 +-
config-ui/src/plugins/register/gitlab/config.tsx | 6 +--
config-ui/src/plugins/register/jenkins/config.ts | 4 +-
config-ui/src/plugins/register/jira/config.tsx | 2 +-
.../register/webook/create-dialog/use-create.ts | 3 +-
config-ui/src/store/connections/api.ts | 4 +-
config-ui/src/store/transformations/api.ts | 8 ++-
.../src/store/transformations/use-context-value.ts | 2 +-
25 files changed, 155 insertions(+), 86 deletions(-)
diff --git a/config-ui/src/hooks/use-operator.ts
b/config-ui/src/hooks/use-operator.ts
index 1dba1f79c..58e917457 100644
--- a/config-ui/src/hooks/use-operator.ts
+++ b/config-ui/src/hooks/use-operator.ts
@@ -24,7 +24,7 @@ export const useOperator = <T>(
request: (paylod?: any) => Promise<T>,
options?: {
callback?: () => void;
- formatReason?: () => string;
+ formatReason?: (err: unknown) => string;
formatMessage?: () => string;
},
) => {
@@ -33,7 +33,7 @@ export const useOperator = <T>(
const handleSubmit = async (paylod?: any) => {
const [success] = await operator(() => request(paylod), {
setOperating,
- formatReason: options?.formatReason,
+ formatReason: options?.formatReason ? options?.formatMessage : (err) =>
(err as any).response?.data?.message,
formatMessage: options?.formatMessage,
});
diff --git a/config-ui/src/store/transformations/api.ts
b/config-ui/src/pages/blueprint/components/advanced-editor/example/customize.ts
similarity index 66%
copy from config-ui/src/store/transformations/api.ts
copy to
config-ui/src/pages/blueprint/components/advanced-editor/example/customize.ts
index da7ad6e04..d3dd971ad 100644
--- a/config-ui/src/store/transformations/api.ts
+++
b/config-ui/src/pages/blueprint/components/advanced-editor/example/customize.ts
@@ -16,6 +16,24 @@
*
*/
-import { request } from '@/utils';
+const customize = [
+ [
+ {
+ plugin: 'customize',
+ options: {
+ transformationRules: [
+ {
+ table: 'issues',
+ rawDataTable: '_raw_jira_api_issues',
+ rawDataParams: '{"ConnectionId":1,"BoardId":8}',
+ mapping: {
+ x_test: 'fields.status.name',
+ },
+ },
+ ],
+ },
+ },
+ ],
+];
-export const getTransformation = (plugin: string) =>
request(`/plugins/${plugin}/transformation_rules`);
+export default customize;
diff --git
a/config-ui/src/pages/blueprint/components/advanced-editor/example/index.ts
b/config-ui/src/pages/blueprint/components/advanced-editor/example/index.ts
index 454afea12..7da6da3ca 100644
--- a/config-ui/src/pages/blueprint/components/advanced-editor/example/index.ts
+++ b/config-ui/src/pages/blueprint/components/advanced-editor/example/index.ts
@@ -16,15 +16,16 @@
*
*/
+import customize from './customize';
+import dbt from './dbt';
+import feishu from './feishu';
import general from './general';
-import refdiff from './refdiff';
import gitextractor from './gitextractor';
import github from './github';
import gitlab from './gitlab';
-import jira from './jira';
import jenkins from './jenkins';
-import feishu from './feishu';
-import dbt from './dbt';
+import jira from './jira';
+import refdiff from './refdiff';
import starrocks from './starrocks';
import tapd from './tapd';
import zentao from './zentao';
@@ -90,4 +91,9 @@ export const EXAMPLE_CONFIG = [
name: 'Load StarRocks Configuration',
config: starrocks,
},
+ {
+ id: 'customize',
+ name: 'Load Customize Configuration',
+ config: customize,
+ },
];
diff --git a/config-ui/src/pages/blueprint/home/api.ts
b/config-ui/src/pages/blueprint/home/api.ts
index 83ce14174..b31204b0e 100644
--- a/config-ui/src/pages/blueprint/home/api.ts
+++ b/config-ui/src/pages/blueprint/home/api.ts
@@ -18,4 +18,9 @@
import { request } from '@/utils';
-export const getBlueprints = () => request('/blueprints');
+type GetBlueprintsParams = {
+ page: number;
+ pageSize: number;
+};
+
+export const getBlueprints = (params: GetBlueprintsParams) =>
request('/blueprints', { data: params });
diff --git a/config-ui/src/pages/blueprint/home/use-home.ts
b/config-ui/src/pages/blueprint/home/use-home.ts
index ac55b02d0..0295666f8 100644
--- a/config-ui/src/pages/blueprint/home/use-home.ts
+++ b/config-ui/src/pages/blueprint/home/use-home.ts
@@ -35,7 +35,10 @@ export const useHome = () => {
const getBlueprints = async () => {
setLoading(true);
try {
- const res = await API.getBlueprints();
+ const res = await API.getBlueprints({
+ page: 1,
+ pageSize: 200,
+ });
setBlueprints(res.blueprints);
} finally {
setLoading(false);
@@ -57,7 +60,7 @@ export const useHome = () => {
case 'custom':
return !presets.includes(bp.cronConfig);
default:
- return bp.cronConfig === type;
+ return !bp.isManual && bp.cronConfig === type;
}
}),
);
diff --git a/config-ui/src/pages/project/detail/panel/settings.tsx
b/config-ui/src/pages/project/detail/panel/settings.tsx
index f22045507..807e504fb 100644
--- a/config-ui/src/pages/project/detail/panel/settings.tsx
+++ b/config-ui/src/pages/project/detail/panel/settings.tsx
@@ -47,7 +47,7 @@ export const SettingsPanel = ({ project, onUpdate }: Props)
=> {
<S.Settings>
<div className="block">
<h3>Project Name *</h3>
- <p>Edit your project name.</p>
+ <p>Edit your project name with letters, numbers, -, _ or /</p>
<InputGroup value={name} onChange={(e) => setName(e.target.value)} />
</div>
<div className="block">
diff --git a/config-ui/src/pages/project/detail/use-project.ts
b/config-ui/src/pages/project/detail/use-project.ts
index 01c1a3523..227b1ec23 100644
--- a/config-ui/src/pages/project/detail/use-project.ts
+++ b/config-ui/src/pages/project/detail/use-project.ts
@@ -55,7 +55,7 @@ export const useProject = (name: string) => {
}, []);
const handleUpdate = async (newName: string, enableDora: boolean) => {
- if (!/^\w+$/.test(newName)) {
+ if (!/^(\w|-|\/)+$/.test(newName)) {
toast.error('Please enter alphanumeric or underscore');
return;
}
diff --git a/config-ui/src/pages/project/home/index.tsx
b/config-ui/src/pages/project/home/index.tsx
index eed3215f4..bad481272 100644
--- a/config-ui/src/pages/project/home/index.tsx
+++ b/config-ui/src/pages/project/home/index.tsx
@@ -37,7 +37,10 @@ export const ProjectHomePage = () => {
const history = useHistory();
const handleShowDialog = () => setIsOpen(true);
- const handleHideDialog = () => setIsOpen(false);
+ const handleHideDialog = () => {
+ setIsOpen(false);
+ setName('');
+ };
const { loading, operating, projects, onSave } = useProject<ProjectItem>({
name,
@@ -111,7 +114,7 @@ export const ProjectHomePage = () => {
<S.DialogInner>
<div className="block">
<h3>Project Name *</h3>
- <p>Give your project a unique name.</p>
+ <p>Give your project a unique name with letters, numbers, -, _ or
/</p>
<InputGroup placeholder="Your Project Name" value={name}
onChange={(e) => setName(e.target.value)} />
</div>
<div className="block">
diff --git a/config-ui/src/pages/project/home/use-project.ts
b/config-ui/src/pages/project/home/use-project.ts
index 17245fa0d..be902d630 100644
--- a/config-ui/src/pages/project/home/use-project.ts
+++ b/config-ui/src/pages/project/home/use-project.ts
@@ -37,7 +37,7 @@ export const useProject = <T>({ name, enableDora,
onHideDialog }: Props) => {
const getProjects = async () => {
setLoading(true);
try {
- const res = await API.getProjects({ page: 1, pageSize: 100 });
+ const res = await API.getProjects({ page: 1, pageSize: 200 });
setProjects(
res.projects.map((it: any) => ({
name: it.name,
@@ -53,7 +53,7 @@ export const useProject = <T>({ name, enableDora,
onHideDialog }: Props) => {
}, []);
const handleSave = async () => {
- if (!/^\w+$/.test(name)) {
+ if (!/^(\w|-|\/)+$/.test(name)) {
toast.error('Please enter alphanumeric or underscore');
return;
}
diff --git
a/config-ui/src/plugins/components/connection-form/fields/rate-limit.tsx
b/config-ui/src/plugins/components/connection-form/fields/rate-limit.tsx
index a92e72a4d..8e6e4f09b 100644
--- a/config-ui/src/plugins/components/connection-form/fields/rate-limit.tsx
+++ b/config-ui/src/plugins/components/connection-form/fields/rate-limit.tsx
@@ -70,7 +70,7 @@ export const ConnectionRateLimit = ({
useEffect(() => {
setChecked(value ? true : false);
- }, []);
+ }, [value]);
const handleChange = (e: React.FormEvent<HTMLInputElement>) => {
const checked = (e.target as HTMLInputElement).checked;
diff --git a/config-ui/src/plugins/config.ts b/config-ui/src/plugins/config.ts
index 6cf92c667..b4d836e05 100644
--- a/config-ui/src/plugins/config.ts
+++ b/config-ui/src/plugins/config.ts
@@ -20,6 +20,7 @@ import type { PluginConfigType } from './types';
import { AEConfig } from './register/ae';
import { AzureConfig } from './register/azure';
import { BitBucketConfig } from './register/bitbucket';
+import { CustomizeConfig } from './register/customize';
import { DBTConfig } from './register/dbt';
import { DORAConfig } from './register/dora';
import { FeiShuConfig } from './register/feishu';
@@ -41,6 +42,7 @@ export const PluginConfig: PluginConfigType[] = [
AEConfig,
AzureConfig,
BitBucketConfig,
+ CustomizeConfig,
DBTConfig,
DORAConfig,
FeiShuConfig,
diff --git a/config-ui/src/plugins/register/bitbucket/config.tsx
b/config-ui/src/plugins/register/bitbucket/config.tsx
index c3db9da8d..88ac22f37 100644
--- a/config-ui/src/plugins/register/bitbucket/config.tsx
+++ b/config-ui/src/plugins/register/bitbucket/config.tsx
@@ -62,10 +62,13 @@ export const BitBucketConfig: PluginConfigType = {
transformation: {
issueStatusTodo: 'new,open',
issueStatusInProgress: '',
- issueStatusDone: 'resolved,closed',
+ issueStatusDone: 'closed',
issueStatusOther: 'on hold,wontfix,duplicate,invalid',
productionPattern: '',
deploymentPattern: '',
- refdiff: null,
+ refdiff: {
+ tagsOrder: 10,
+ tagsPattern: /v\d+\.\d+(\.\d+(-rc)*\d*)*$/,
+ },
},
};
diff --git a/config-ui/src/plugins/register/bitbucket/transformation.tsx
b/config-ui/src/plugins/register/bitbucket/transformation.tsx
index 20bac6b3e..16a8d4332 100644
--- a/config-ui/src/plugins/register/bitbucket/transformation.tsx
+++ b/config-ui/src/plugins/register/bitbucket/transformation.tsx
@@ -16,17 +16,8 @@
*
*/
-import React, {useMemo, useState} from 'react';
-import {
- FormGroup,
- InputGroup,
- Tag,
- Radio,
- Icon,
- Collapse,
- Intent,
- Checkbox,
-} from '@blueprintjs/core';
+import React, { useMemo, useState, useEffect } from 'react';
+import { FormGroup, InputGroup, Tag, Radio, Icon, Collapse, Intent, Checkbox }
from '@blueprintjs/core';
import { ExternalLink, HelpTooltip, Divider, MultiSelector } from
'@/components';
@@ -42,12 +33,22 @@ const ALL_STATES = ['new', 'open', 'resolved', 'closed',
'on hold', 'wontfix', '
export const BitbucketTransformation = ({ transformation, setTransformation }:
Props) => {
const [enableCICD, setEnableCICD] = useState(false);
const [openAdditionalSettings, setOpenAdditionalSettings] = useState(false);
- const selectedStates = useMemo(() => [
- ...transformation.issueStatusTodo ?
transformation.issueStatusTodo.split(',') : [],
- ...transformation.issueStatusInProgress ?
transformation.issueStatusInProgress.split(',') : [],
- ...transformation.issueStatusDone ?
transformation.issueStatusDone.split(',') : [],
- ...transformation.issueStatusOther ?
transformation.issueStatusOther.split(',') : [],
- ], [transformation]);
+
+ useEffect(() => {
+ if (transformation.refdiff) {
+ setOpenAdditionalSettings(true);
+ }
+ }, [transformation]);
+
+ const selectedStates = useMemo(
+ () => [
+ ...(transformation.issueStatusTodo ?
transformation.issueStatusTodo.split(',') : []),
+ ...(transformation.issueStatusInProgress ?
transformation.issueStatusInProgress.split(',') : []),
+ ...(transformation.issueStatusDone ?
transformation.issueStatusDone.split(',') : []),
+ ...(transformation.issueStatusOther ?
transformation.issueStatusOther.split(',') : []),
+ ],
+ [transformation],
+ );
const handleChangeCICDEnable = (b: boolean) => {
if (b) {
@@ -156,12 +157,19 @@ export const BitbucketTransformation = ({ transformation,
setTransformation }: P
</h3>
<p>
DevLake uses BitBucket{' '}
- <ExternalLink
link="https://support.atlassian.com/bitbucket-cloud/docs/set-up-and-monitor-deployments/">deployments</ExternalLink>
- {' '}as DevLake deployments. If you are NOT using BitBucket
deployments, DevLake provides the option to detect deployments from BitBucket
pipeline steps.{' '}
- <ExternalLink
link="https://devlake.apache.org/docs/Configuration/BitBucket#step-3---adding-transformation-rules-optional">Learn
more</ExternalLink>
+ <ExternalLink
link="https://support.atlassian.com/bitbucket-cloud/docs/set-up-and-monitor-deployments/">
+ deployments
+ </ExternalLink>{' '}
+ as DevLake deployments. If you are NOT using BitBucket deployments,
DevLake provides the option to detect
+ deployments from BitBucket pipeline steps.{' '}
+ <ExternalLink
link="https://devlake.apache.org/docs/Configuration/BitBucket#step-3---adding-transformation-rules-optional">
+ Learn more
+ </ExternalLink>
</p>
- <Checkbox label="Detect Deployments from Pipeline steps in BitBucket"
checked={enableCICD}
- onChange={(e) => handleChangeCICDEnable((e.target as
HTMLInputElement).checked)}
+ <Checkbox
+ label="Detect Deployments from Pipeline steps in BitBucket"
+ checked={enableCICD}
+ onChange={(e) => handleChangeCICDEnable((e.target as
HTMLInputElement).checked)}
/>
{enableCICD && (
<>
@@ -176,7 +184,7 @@ export const BitbucketTransformation = ({ transformation,
setTransformation }: P
}
>
<InputGroup
- placeholder="(?i)deploy"
+ placeholder="(deploy|push-image)"
value={transformation.deploymentPattern}
onChange={(e) =>
setTransformation({
@@ -196,7 +204,7 @@ export const BitbucketTransformation = ({ transformation,
setTransformation }: P
}
>
<InputGroup
- placeholder="(?i)production"
+ placeholder="production"
value={transformation.productionPattern}
onChange={(e) =>
setTransformation({
@@ -214,7 +222,7 @@ export const BitbucketTransformation = ({ transformation,
setTransformation }: P
{/* Additional Settings */}
<div className="additional-settings">
<h2 onClick={handleChangeAdditionalSettingsOpen}>
- <Icon icon={openAdditionalSettings ? 'chevron-up' : 'chevron-down'}
size={18} />
+ <Icon icon={!openAdditionalSettings ? 'chevron-up' : 'chevron-down'}
size={18} />
<span>Additional Settings</span>
</h2>
<Collapse isOpen={openAdditionalSettings}>
diff --git a/config-ui/src/pages/blueprint/home/api.ts
b/config-ui/src/plugins/register/customize/config.ts
similarity index 78%
copy from config-ui/src/pages/blueprint/home/api.ts
copy to config-ui/src/plugins/register/customize/config.ts
index 83ce14174..e5bebbb5d 100644
--- a/config-ui/src/pages/blueprint/home/api.ts
+++ b/config-ui/src/plugins/register/customize/config.ts
@@ -16,6 +16,12 @@
*
*/
-import { request } from '@/utils';
+import type { PluginConfigType } from '@/plugins';
-export const getBlueprints = () => request('/blueprints');
+import { BasePipelineConfig } from '../base';
+
+export const CustomizeConfig: PluginConfigType = {
+ ...BasePipelineConfig,
+ plugin: 'customize',
+ name: 'customize',
+};
diff --git a/config-ui/src/pages/blueprint/home/api.ts
b/config-ui/src/plugins/register/customize/index.ts
similarity index 89%
copy from config-ui/src/pages/blueprint/home/api.ts
copy to config-ui/src/plugins/register/customize/index.ts
index 83ce14174..de415db39 100644
--- a/config-ui/src/pages/blueprint/home/api.ts
+++ b/config-ui/src/plugins/register/customize/index.ts
@@ -16,6 +16,4 @@
*
*/
-import { request } from '@/utils';
-
-export const getBlueprints = () => request('/blueprints');
+export * from './config';
diff --git a/config-ui/src/plugins/register/github/config.tsx
b/config-ui/src/plugins/register/github/config.tsx
index bd7f180ec..5732c2338 100644
--- a/config-ui/src/plugins/register/github/config.tsx
+++ b/config-ui/src/plugins/register/github/config.tsx
@@ -79,17 +79,21 @@ export const GitHubConfig: PluginConfigType = {
},
entities: ['CODE', 'TICKET', 'CODEREVIEW', 'CROSS', 'CICD'],
transformation: {
- issueSeverity: '',
- issueComponent: '',
- issuePriority: '',
- issueTypeRequirement: '',
- issueTypeBug: '',
- issueTypeIncident: '',
- prType: '',
- prComponent: '',
- prBodyClosePattern: '',
- productionPattern: '',
- deploymentPattern: '',
- refdiff: null,
+ issueTypeRequirement: '(feat|feature|proposal|requirement)',
+ issueTypeBug: '(bug|broken)',
+ issueTypeIncident: '(incident|failure)',
+ issuePriority: '(highest|high|medium|low|p0|p1|p2|p3)',
+ issueComponent: 'component(.*)',
+ issueSeverity: 'severity(.*)',
+ deploymentPattern: '(deploy|push-image)',
+ productionPattern: 'production',
+ prType: 'type(.*)',
+ prComponent: 'component(.*)',
+ prBodyClosePattern:
+
'(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[s]*.*(((and
)?(#|https://github.com/%s/%s/issues/)d+[ ]*)+)',
+ refdiff: {
+ tagsOrder: 10,
+ tagsPattern: /v\d+\.\d+(\.\d+(-rc)*\d*)*$/,
+ },
},
};
diff --git a/config-ui/src/plugins/register/github/transformation.tsx
b/config-ui/src/plugins/register/github/transformation.tsx
index 01d33df07..4dea066ff 100644
--- a/config-ui/src/plugins/register/github/transformation.tsx
+++ b/config-ui/src/plugins/register/github/transformation.tsx
@@ -16,7 +16,7 @@
*
*/
-import React, { useState } from 'react';
+import React, { useEffect, useState } from 'react';
import {
FormGroup,
InputGroup,
@@ -43,6 +43,12 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
const [enableCICD, setEnableCICD] = useState(1);
const [openAdditionalSettings, setOpenAdditionalSettings] = useState(false);
+ useEffect(() => {
+ if (transformation.refdiff) {
+ setOpenAdditionalSettings(true);
+ }
+ }, [transformation]);
+
const handleChangeCICDEnable = (e: number) => {
if (e === 0) {
setTransformation({
@@ -91,7 +97,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
<div className="list">
<FormGroup inline label="Feature">
<InputGroup
- placeholder="(feat|feature|proposal|requirement)$"
+ placeholder="(feat|feature|proposal|requirement)"
value={transformation.issueTypeRequirement}
onChange={(e) =>
setTransformation({
@@ -103,7 +109,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
</FormGroup>
<FormGroup inline label="Bug">
<InputGroup
- placeholder="(bug|broken)$"
+ placeholder="(bug|broken)"
value={transformation.issueTypeBug}
onChange={(e) =>
setTransformation({
@@ -125,7 +131,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="(incident|p0|p1|p2)$"
+ placeholder="(incident|failure)"
value={transformation.issueTypeIncident}
onChange={(e) =>
setTransformation({
@@ -147,7 +153,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="(highest|high|medium|low)$"
+ placeholder="(highest|high|medium|low|p0|p1|p2|p3)"
value={transformation.issuePriority}
onChange={(e) =>
setTransformation({
@@ -167,7 +173,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="component(.*)$"
+ placeholder="component(.*)"
value={transformation.issueComponent}
onChange={(e) =>
setTransformation({
@@ -187,7 +193,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="severity(.*)$"
+ placeholder="severity(.*)"
value={transformation.issueSeverity}
onChange={(e) =>
setTransformation({
@@ -233,7 +239,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="^.*(deploy|push-image).*$"
+ placeholder="(deploy|push-image)"
value={transformation.deploymentPattern}
onChange={(e) =>
setTransformation({
@@ -253,7 +259,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
}
>
<InputGroup
- placeholder="^.*product.*$"
+ placeholder="production"
value={transformation.productionPattern}
onChange={(e) =>
setTransformation({
@@ -353,7 +359,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
>
<TextArea
value={transformation.prBodyClosePattern}
-
placeholder="(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and
)?(#|https:\/\/github.com\/%s\/issues\/)\d+[ ]*)+)"
+
placeholder="(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[s]*.*(((and
)?(#|https://github.com/%s/%s/issues/)d+[ ]*)+)"
onChange={(e) =>
setTransformation({
...transformation,
@@ -369,7 +375,7 @@ export const GitHubTransformation = ({ transformation,
setTransformation }: Prop
{/* Additional Settings */}
<div className="additional-settings">
<h2 onClick={handleChangeAdditionalSettingsOpen}>
- <Icon icon={openAdditionalSettings ? 'chevron-up' : 'chevron-down'}
size={18} />
+ <Icon icon={!openAdditionalSettings ? 'chevron-up' : 'chevron-down'}
size={18} />
<span>Additional Settings</span>
</h2>
<Collapse isOpen={openAdditionalSettings}>
diff --git a/config-ui/src/plugins/register/gitlab/components/ci-cd/index.tsx
b/config-ui/src/plugins/register/gitlab/components/ci-cd/index.tsx
index 17aba5fe9..00fabc485 100644
--- a/config-ui/src/plugins/register/gitlab/components/ci-cd/index.tsx
+++ b/config-ui/src/plugins/register/gitlab/components/ci-cd/index.tsx
@@ -61,7 +61,7 @@ export const CiCd = ({ transformation, setTransformation }:
Props) => {
<p>A GitLab CI job with a name that matches the given regEx will
be considered as a Deployment.</p>
<FormGroup inline label="Deployment">
<InputGroup
- placeholder="(?i)deploy"
+ placeholder="(deploy|push-image)"
value={transformation.deploymentPattern}
onChange={(e) =>
setTransformation({
@@ -77,7 +77,7 @@ export const CiCd = ({ transformation, setTransformation }:
Props) => {
</p>
<FormGroup inline label="Production">
<InputGroup
- placeholder="(?i)production"
+ placeholder="production"
value={transformation.productionPattern}
onChange={(e) =>
setTransformation({
diff --git a/config-ui/src/plugins/register/gitlab/config.tsx
b/config-ui/src/plugins/register/gitlab/config.tsx
index 0518b2263..589d2afd5 100644
--- a/config-ui/src/plugins/register/gitlab/config.tsx
+++ b/config-ui/src/plugins/register/gitlab/config.tsx
@@ -45,7 +45,7 @@ export const GitLabConfig: PluginConfigType = {
server: '(v11+)',
},
subLabel:
- 'If you are using GitLab Cloud, you do not need to enter the
endpoint URL, which is https://gitlab.com/api/v4/.',
+ 'If you are using GitLab Server, please enter the endpoint URL. E.g.
https://gitlab.your-company.com/api/v4/',
},
{
key: 'token',
@@ -70,7 +70,7 @@ export const GitLabConfig: PluginConfigType = {
},
entities: ['CODE', 'TICKET', 'CODEREVIEW', 'CROSS', 'CICD'],
transformation: {
- productionPattern: '',
- deploymentPattern: '',
+ deploymentPattern: '(deploy|push-image)',
+ productionPattern: 'production',
},
};
diff --git a/config-ui/src/plugins/register/jenkins/config.ts
b/config-ui/src/plugins/register/jenkins/config.ts
index 58dd0b7b7..2aca5d0f5 100644
--- a/config-ui/src/plugins/register/jenkins/config.ts
+++ b/config-ui/src/plugins/register/jenkins/config.ts
@@ -50,7 +50,7 @@ export const JenkinsConfig: PluginConfigType = {
},
entities: ['CICD'],
transformation: {
- productionPattern: '',
- deploymentPattern: '',
+ deploymentPattern: '(deploy|push-image)',
+ productionPattern: 'production',
},
};
diff --git a/config-ui/src/plugins/register/jira/config.tsx
b/config-ui/src/plugins/register/jira/config.tsx
index abf1a39c5..fff6dee17 100644
--- a/config-ui/src/plugins/register/jira/config.tsx
+++ b/config-ui/src/plugins/register/jira/config.tsx
@@ -86,7 +86,7 @@ export const JiraConfig: PluginConfigType = {
entities: ['TICKET', 'CROSS'],
transformation: {
storyPointField: '',
- remotelinkCommitShaPattern: '',
typeMappings: {},
+ remotelinkCommitShaPattern: /commit\/([0-9a-f]{40})$/,
},
};
diff --git a/config-ui/src/plugins/register/webook/create-dialog/use-create.ts
b/config-ui/src/plugins/register/webook/create-dialog/use-create.ts
index 13ff1abde..84a1ccd9d 100644
--- a/config-ui/src/plugins/register/webook/create-dialog/use-create.ts
+++ b/config-ui/src/plugins/register/webook/create-dialog/use-create.ts
@@ -49,7 +49,7 @@ export const useCreate = ({ onSubmitAfter }: UseCreateProps)
=> {
},
);
- if (success) {
+ if (success && !onSubmitAfter) {
setStep(2);
setRecord({
postIssuesEndpoint: `${prefix}${res.postIssuesEndpoint}`,
@@ -60,6 +60,7 @@ export const useCreate = ({ onSubmitAfter }: UseCreateProps)
=> {
\\"start_time\\":\\"Optional, eg. 2020-01-01T12:00:00+00:00\\"
}"`,
});
+ } else if (success) {
onSubmitAfter?.(res.id);
}
};
diff --git a/config-ui/src/store/connections/api.ts
b/config-ui/src/store/connections/api.ts
index 5b7b7acde..e2ff846ef 100644
--- a/config-ui/src/store/connections/api.ts
+++ b/config-ui/src/store/connections/api.ts
@@ -18,6 +18,8 @@
import { request } from '@/utils';
+export const getConnection = (plugin: string) =>
request(`/plugins/${plugin}/connections`);
+
type TestConnectionPayload = {
endpoint: string;
proxy: string;
@@ -27,8 +29,6 @@ type TestConnectionPayload = {
authMethod?: string;
};
-export const getConnection = (plugin: string) =>
request(`/plugins/${plugin}/connections`);
-
export const testConnection = (plugin: string, data: TestConnectionPayload) =>
request(`/plugins/${plugin}/test`, {
method: 'post',
diff --git a/config-ui/src/store/transformations/api.ts
b/config-ui/src/store/transformations/api.ts
index da7ad6e04..92ab91588 100644
--- a/config-ui/src/store/transformations/api.ts
+++ b/config-ui/src/store/transformations/api.ts
@@ -18,4 +18,10 @@
import { request } from '@/utils';
-export const getTransformation = (plugin: string) =>
request(`/plugins/${plugin}/transformation_rules`);
+type GetTransformationParams = {
+ page: number;
+ pageSize: number;
+};
+
+export const getTransformation = (plugin: string, params:
GetTransformationParams) =>
+ request(`/plugins/${plugin}/transformation_rules`, { data: params });
diff --git a/config-ui/src/store/transformations/use-context-value.ts
b/config-ui/src/store/transformations/use-context-value.ts
index a448d5496..6cf03ff84 100644
--- a/config-ui/src/store/transformations/use-context-value.ts
+++ b/config-ui/src/store/transformations/use-context-value.ts
@@ -34,7 +34,7 @@ export const useContextValue = () => {
const getTransformation = async (plugin: string) => {
try {
- return await API.getTransformation(plugin);
+ return await API.getTransformation(plugin, { page: 1, pageSize: 200 });
} catch {
return [];
}