Merge branch 'backstage:master' into topic/add-entity-pull-requests

This commit is contained in:
Andre Wanlin
2021-11-12 13:25:26 -06:00
committed by GitHub
10 changed files with 121 additions and 72 deletions
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-azure-devops': patch
'@backstage/plugin-azure-devops-backend': patch
'@backstage/plugin-azure-devops-common': minor
---
Improved Date handling for the Azure DevOps set of plugins by using strings and letting the frontend handle the conversion to DateTime
+1 -1
View File
@@ -50,7 +50,7 @@
},
"version": "1.0.0",
"dependencies": {
"@microsoft/api-documenter": "^7.13.47",
"@microsoft/api-documenter": "^7.13.68",
"@microsoft/api-extractor": "^7.18.7",
"@microsoft/api-extractor-model": "^7.13.5",
"@microsoft/tsdoc": "^0.13.2"
@@ -48,7 +48,7 @@ describe('AzureDevOpsApi', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputBuild: Build = {
@@ -56,9 +56,9 @@ describe('AzureDevOpsApi', () => {
buildNumber: 'Build-1',
status: BuildStatus.Completed,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: new Date('2020-09-12T06:10:23.932Z'),
startTime: new Date('2020-09-12T06:15:23.932Z'),
finishTime: new Date('2020-09-12T06:20:23.932Z'),
sourceBranch: 'refs/heads/develop',
sourceVersion: 'f4f78b3100b2923982bdf60c89c57ce6fd2d9a1c',
definition: inputBuildDefinition,
@@ -72,11 +72,11 @@ describe('AzureDevOpsApi', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=1',
status: BuildStatus.Completed,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: '2020-09-12T06:10:23.932Z',
startTime: '2020-09-12T06:15:23.932Z',
finishTime: '2020-09-12T06:20:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
expect(mappedRepoBuild(inputBuild)).toEqual(outputRepoBuild);
@@ -93,7 +93,7 @@ describe('AzureDevOpsApi', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputBuild: Build = {
@@ -101,9 +101,9 @@ describe('AzureDevOpsApi', () => {
buildNumber: 'Build-1',
status: BuildStatus.Completed,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: new Date('2020-09-12T06:10:23.932Z'),
startTime: new Date('2020-09-12T06:15:23.932Z'),
finishTime: new Date('2020-09-12T06:20:23.932Z'),
sourceBranch: 'refs/heads/develop',
sourceVersion: 'f4f78b3100b2923982bdf60c89c57ce6fd2d9a1c',
definition: undefined,
@@ -117,11 +117,11 @@ describe('AzureDevOpsApi', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=1',
status: BuildStatus.Completed,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: '2020-09-12T06:10:23.932Z',
startTime: '2020-09-12T06:15:23.932Z',
finishTime: '2020-09-12T06:20:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
expect(mappedRepoBuild(inputBuild)).toEqual(outputRepoBuild);
@@ -138,7 +138,7 @@ describe('AzureDevOpsApi', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputBuild: Build = {
@@ -146,9 +146,9 @@ describe('AzureDevOpsApi', () => {
buildNumber: 'Build-1',
status: undefined,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: new Date('2020-09-12T06:10:23.932Z'),
startTime: new Date('2020-09-12T06:15:23.932Z'),
finishTime: new Date('2020-09-12T06:20:23.932Z'),
sourceBranch: 'refs/heads/develop',
sourceVersion: 'f4f78b3100b2923982bdf60c89c57ce6fd2d9a1c',
definition: undefined,
@@ -162,11 +162,11 @@ describe('AzureDevOpsApi', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=1',
status: BuildStatus.None,
result: BuildResult.Succeeded,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: '2020-09-12T06:10:23.932Z',
startTime: '2020-09-12T06:15:23.932Z',
finishTime: '2020-09-12T06:20:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
expect(mappedRepoBuild(inputBuild)).toEqual(outputRepoBuild);
@@ -183,7 +183,7 @@ describe('AzureDevOpsApi', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputBuild: Build = {
@@ -191,9 +191,9 @@ describe('AzureDevOpsApi', () => {
buildNumber: 'Build-1',
status: BuildStatus.InProgress,
result: undefined,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: new Date('2020-09-12T06:10:23.932Z'),
startTime: new Date('2020-09-12T06:15:23.932Z'),
finishTime: new Date('2020-09-12T06:20:23.932Z'),
sourceBranch: 'refs/heads/develop',
sourceVersion: 'f4f78b3100b2923982bdf60c89c57ce6fd2d9a1c',
definition: undefined,
@@ -207,11 +207,11 @@ describe('AzureDevOpsApi', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=1',
status: BuildStatus.InProgress,
result: BuildResult.None,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: '2020-09-12T06:10:23.932Z',
startTime: '2020-09-12T06:15:23.932Z',
finishTime: '2020-09-12T06:20:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
expect(mappedRepoBuild(inputBuild)).toEqual(outputRepoBuild);
@@ -222,7 +222,7 @@ describe('AzureDevOpsApi', () => {
it('should return empty string for link', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputBuild: Build = {
@@ -230,9 +230,9 @@ describe('AzureDevOpsApi', () => {
buildNumber: 'Build-1',
status: BuildStatus.InProgress,
result: undefined,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: new Date('2020-09-12T06:10:23.932Z'),
startTime: new Date('2020-09-12T06:15:23.932Z'),
finishTime: new Date('2020-09-12T06:20:23.932Z'),
sourceBranch: 'refs/heads/develop',
sourceVersion: 'f4f78b3100b2923982bdf60c89c57ce6fd2d9a1c',
definition: undefined,
@@ -246,11 +246,11 @@ describe('AzureDevOpsApi', () => {
link: '',
status: BuildStatus.InProgress,
result: BuildResult.None,
queueTime: new Date('2020-09-12T06:10:23.9325232Z'),
startTime: new Date('2020-09-12T06:15:23.9325232Z'),
finishTime: new Date('2020-09-12T06:20:23.9325232Z'),
queueTime: '2020-09-12T06:10:23.932Z',
startTime: '2020-09-12T06:15:23.932Z',
finishTime: '2020-09-12T06:20:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
expect(mappedRepoBuild(inputBuild)).toEqual(outputRepoBuild);
@@ -265,7 +265,7 @@ describe('AzureDevOpsApi', () => {
const inputIdentityRef: IdentityRef = {
displayName: 'Jane Doe',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
};
const inputPullRequest: GitPullRequest = {
@@ -273,7 +273,7 @@ describe('AzureDevOpsApi', () => {
repository: inputGitRepository,
title: 'My Awesome New Feature',
createdBy: inputIdentityRef,
creationDate: new Date('2020-09-12T06:10:23.9325232Z'),
creationDate: new Date('2020-09-12T06:10:23.932Z'),
sourceRefName: 'refs/heads/topic/super-awesome-feature',
targetRefName: 'refs/heads/main',
status: PullRequestStatus.Active,
@@ -287,9 +287,9 @@ describe('AzureDevOpsApi', () => {
pullRequestId: 7181,
repoName: 'super-feature-repo',
title: 'My Awesome New Feature',
uniqueName: 'DOMAINjdoe',
uniqueName: 'DOMAIN\\jdoe',
createdBy: 'Jane Doe',
creationDate: new Date('2020-09-12T06:10:23.9325232Z'),
creationDate: '2020-09-12T06:10:23.932Z',
sourceRefName: 'refs/heads/topic/super-awesome-feature',
targetRefName: 'refs/heads/main',
status: PullRequestStatus.Active,
@@ -149,9 +149,9 @@ export function mappedRepoBuild(build: Build): RepoBuild {
link: build._links?.web.href ?? '',
status: build.status ?? BuildStatus.None,
result: build.result ?? BuildResult.None,
queueTime: build.queueTime,
startTime: build.startTime,
finishTime: build.finishTime,
queueTime: build.queueTime?.toISOString(),
startTime: build.startTime?.toISOString(),
finishTime: build.finishTime?.toISOString(),
source: `${build.sourceBranch} (${build.sourceVersion?.substr(0, 8)})`,
uniqueName: build.requestedFor?.uniqueName ?? 'N/A',
};
@@ -167,7 +167,7 @@ export function mappedPullRequest(
title: pullRequest.title,
uniqueName: pullRequest.createdBy?.uniqueName ?? 'N/A',
createdBy: pullRequest.createdBy?.displayName ?? 'N/A',
creationDate: pullRequest.creationDate,
creationDate: pullRequest.creationDate?.toISOString(),
sourceRefName: pullRequest.sourceRefName,
targetRefName: pullRequest.targetRefName,
status: pullRequest.status,
@@ -152,7 +152,7 @@ describe('createRouter', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=1',
status: BuildStatus.Completed,
result: BuildResult.PartiallySucceeded,
queueTime: undefined,
queueTime: '2020-09-12T06:10:23.932Z',
source: 'refs/heads/develop (f4f78b31)',
};
@@ -162,7 +162,7 @@ describe('createRouter', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=2',
status: BuildStatus.InProgress,
result: BuildResult.None,
queueTime: undefined,
queueTime: '2020-09-12T06:10:23.932Z',
source: 'refs/heads/develop (13c988d4)',
};
@@ -172,7 +172,7 @@ describe('createRouter', () => {
link: 'https://host.com/myOrg/0bcc0c0d-2d02/_build/results?buildId=3',
status: BuildStatus.Completed,
result: BuildResult.Succeeded,
queueTime: undefined,
queueTime: '2020-09-12T06:10:23.932Z',
source: 'refs/heads/develop (9bedf678)',
};
@@ -205,7 +205,7 @@ describe('createRouter', () => {
repoName: 'super-feature-repo',
title: 'My Awesome New Feature',
createdBy: 'Jane Doe',
creationDate: undefined,
creationDate: '2020-09-12T06:10:23.932Z',
sourceRefName: 'refs/heads/topic/super-awesome-feature',
targetRefName: 'refs/heads/main',
status: PullRequestStatus.Active,
@@ -218,7 +218,7 @@ describe('createRouter', () => {
repoName: 'super-feature-repo',
title: 'Refactoring My Awesome New Feature',
createdBy: 'Jane Doe',
creationDate: undefined,
creationDate: '2020-09-12T06:10:23.932Z',
sourceRefName: 'refs/heads/topic/refactor-super-awesome-feature',
targetRefName: 'refs/heads/main',
status: PullRequestStatus.Active,
@@ -231,7 +231,7 @@ describe('createRouter', () => {
repoName: 'super-feature-repo',
title: 'Bug Fix for My Awesome New Feature',
createdBy: 'Jane Doe',
creationDate: undefined,
creationDate: '2020-09-12T06:10:23.932Z',
sourceRefName: 'refs/heads/topic/fix-super-awesome-feature',
targetRefName: 'refs/heads/main',
status: PullRequestStatus.Active,
+4 -4
View File
@@ -36,7 +36,7 @@ export type PullRequest = {
title?: string;
uniqueName?: string;
createdBy?: string;
creationDate?: Date;
creationDate?: string;
sourceRefName?: string;
targetRefName?: string;
status?: PullRequestStatus;
@@ -72,9 +72,9 @@ export type RepoBuild = {
link?: string;
status?: BuildStatus;
result?: BuildResult;
queueTime?: Date;
startTime?: Date;
finishTime?: Date;
queueTime?: string;
startTime?: string;
finishTime?: string;
source: string;
uniqueName?: string;
};
+4 -4
View File
@@ -74,9 +74,9 @@ export type RepoBuild = {
link?: string;
status?: BuildStatus;
result?: BuildResult;
queueTime?: Date;
startTime?: Date;
finishTime?: Date;
queueTime?: string;
startTime?: string;
finishTime?: string;
source: string;
uniqueName?: string;
};
@@ -114,7 +114,7 @@ export type PullRequest = {
title?: string;
uniqueName?: string;
createdBy?: string;
creationDate?: Date;
creationDate?: string;
sourceRefName?: string;
targetRefName?: string;
status?: PullRequestStatus;
@@ -56,7 +56,7 @@ const generateTestData = (rows = 10): RepoBuild[] => {
title: `backstage ci - 1.0.0-preview-${rows - i}`,
status,
result,
queueTime: new Date(Date.now() - i * 60000),
queueTime: new Date(Date.now() - i * 60000).toISOString(),
source: 'refs/heads/main',
link: '',
});
@@ -163,7 +163,10 @@ const columns: TableColumn[] = [
field: 'queueTime',
width: 'auto',
render: (row: Partial<RepoBuild>) =>
DateTime.fromJSDate(row.queueTime ?? new Date()).toRelative(),
(row.queueTime
? DateTime.fromISO(row.queueTime)
: DateTime.now()
).toRelative(),
},
];
+46 -7
View File
@@ -4540,19 +4540,28 @@
resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
"@microsoft/api-documenter@^7.13.47":
version "7.13.47"
resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.13.47.tgz#0b7726634232b37f76c0e5e8353cdbb5b52d4ece"
integrity sha512-jk78Pf8cKL2WZf6CkKUUtwegdsTA1Jf0MfIzD50qpG7T257HLrqCi1t70ZA85VpRLR8oSeNHMayqNTWkdku9iA==
"@microsoft/api-documenter@^7.13.68":
version "7.13.68"
resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.13.68.tgz#c1e144764cac0684adefe78fd848d78c3f374681"
integrity sha512-cRjwK1TDyGxFGgCsRG8G0Yi3Z4akvfWgw1pWAxKFbm7ajlQQGZcHPnb+n4lKlSeQ5g/cxc7hcdw54Mvisne9Bg==
dependencies:
"@microsoft/api-extractor-model" "7.13.5"
"@microsoft/api-extractor-model" "7.13.16"
"@microsoft/tsdoc" "0.13.2"
"@rushstack/node-core-library" "3.40.0"
"@rushstack/ts-command-line" "4.9.0"
"@rushstack/node-core-library" "3.43.2"
"@rushstack/ts-command-line" "4.10.4"
colors "~1.2.1"
js-yaml "~3.13.1"
resolve "~1.17.0"
"@microsoft/api-extractor-model@7.13.16":
version "7.13.16"
resolved "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.13.16.tgz#1d67541ebbcea32672c5fdd9392dc1579b2fc23a"
integrity sha512-ttdxVXsTWL5dd26W1YNLe3LgDsE0EE273aZlcLe58W0opymBybCYU1Mn+OHQM8BuErrdvdN8LdpWAAbkiOEN/Q==
dependencies:
"@microsoft/tsdoc" "0.13.2"
"@microsoft/tsdoc-config" "~0.15.2"
"@rushstack/node-core-library" "3.43.2"
"@microsoft/api-extractor-model@7.13.5", "@microsoft/api-extractor-model@^7.13.5":
version "7.13.5"
resolved "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.13.5.tgz#7836a81ba47b9a654062ed0361e4eee69afae51e"
@@ -5367,6 +5376,21 @@
timsort "~0.3.0"
z-schema "~3.18.3"
"@rushstack/node-core-library@3.43.2":
version "3.43.2"
resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.43.2.tgz#f067371a94fd92ed8f9d9aa8201c5e9e17a19f0f"
integrity sha512-b7AEhSf6CvZgvuDcWMFDeKx2mQSn9AVnMQVyxNxFeHCtLz3gJicqCOlw2GOXM8HKh6PInLdil/NVCDcstwSrIw==
dependencies:
"@types/node" "12.20.24"
colors "~1.2.1"
fs-extra "~7.0.1"
import-lazy "~4.0.0"
jju "~1.4.0"
resolve "~1.17.0"
semver "~7.3.0"
timsort "~0.3.0"
z-schema "~3.18.3"
"@rushstack/rig-package@0.3.0":
version "0.3.0"
resolved "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.0.tgz#334ad2846797861361b3445d4cc9ae9164b1885c"
@@ -5375,6 +5399,16 @@
resolve "~1.17.0"
strip-json-comments "~3.1.1"
"@rushstack/ts-command-line@4.10.4":
version "4.10.4"
resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.10.4.tgz#05142b74e5cb207d3dd9b935c82f80d7fcb68042"
integrity sha512-4T5ao4UgDb6LmiRj4GumvG3VT/p6RSMgl7TN7S58ifaAGN2GeTNBajFCDdJs9QQP0d/4tA5p0SFzT7Ps5Byirg==
dependencies:
"@types/argparse" "1.0.38"
argparse "~1.0.9"
colors "~1.2.1"
string-argv "~0.3.1"
"@rushstack/ts-command-line@4.9.0":
version "4.9.0"
resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.9.0.tgz#781ba42cff73cae097b6d5241b6441e7cc2fe6e0"
@@ -7534,6 +7568,11 @@
resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c"
integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==
"@types/node@12.20.24":
version "12.20.24"
resolved "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c"
integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==
"@types/node@^12.7.1":
version "12.12.58"
resolved "https://registry.npmjs.org/@types/node/-/node-12.12.58.tgz#46dae9b2b9ee5992818c8f7cee01ff4ce03ab44c"