From e8c60104df09c2cc93387632d32822a701ba8211 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 22 Sep 2020 13:30:13 +0200 Subject: [PATCH 001/349] feat(scaffolder): cra add gha integration, fix imports --- packages/cli/package.json | 2 +- .../WorkflowRunLogs/WorkflowRunLogs.tsx | 2 +- plugins/scaffolder-backend/package.json | 1 + .../create-react-app/template.yaml | 7 + .../stages/templater/{cra.ts => cra/index.ts} | 33 +++-- .../cra/templates/.github/workflows/main.yml | 41 ++++++ .../JobStatusModal/JobStatusModal.tsx | 5 +- yarn.lock | 121 +++++++++++++++++- 8 files changed, 196 insertions(+), 16 deletions(-) rename plugins/scaffolder-backend/src/scaffolder/stages/templater/{cra.ts => cra/index.ts} (73%) create mode 100644 plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/templates/.github/workflows/main.yml diff --git a/packages/cli/package.json b/packages/cli/package.json index e1f51be5b7..7f84217ec5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,7 +38,7 @@ "@rollup/plugin-json": "^4.0.2", "@rollup/plugin-node-resolve": "^8.1.0", "@rollup/plugin-yaml": "^2.1.1", - "@spotify/eslint-config": "^7.0.1", + "@spotify/eslint-config": "^8.1.0", "@sucrase/webpack-loader": "^2.0.0", "@svgr/plugin-jsx": "5.4.x", "@svgr/plugin-svgo": "5.4.x", diff --git a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx index 390f35d516..d03c2d6be8 100644 --- a/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx +++ b/plugins/github-actions/src/components/WorkflowRunLogs/WorkflowRunLogs.tsx @@ -30,13 +30,13 @@ import { import React, { Suspense } from 'react'; import { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs'; -import LinePart from 'react-lazylog/build/LinePart'; import { useProjectName } from '../useProjectName'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import DescriptionIcon from '@material-ui/icons/Description'; import { Entity } from '@backstage/catalog-model'; const LazyLog = React.lazy(() => import('react-lazylog/build/LazyLog')); +const LinePart = React.lazy(() => import('react-lazylog/build/LinePart')); const useStyles = makeStyles(() => ({ button: { diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 0eaa33e1f8..a53dc96aee 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -23,6 +23,7 @@ "@backstage/backend-common": "^0.1.1-alpha.22", "@backstage/catalog-model": "^0.1.1-alpha.22", "@backstage/config": "^0.1.1-alpha.22", + "@backstage/plugin-github-actions": "^0.1.1-alpha.22", "@gitbeaker/core": "^23.5.0", "@gitbeaker/node": "^23.5.0", "@octokit/rest": "^18.0.0", diff --git a/plugins/scaffolder-backend/sample-templates/create-react-app/template.yaml b/plugins/scaffolder-backend/sample-templates/create-react-app/template.yaml index 2c8b3b3d6d..c5b500c701 100644 --- a/plugins/scaffolder-backend/sample-templates/create-react-app/template.yaml +++ b/plugins/scaffolder-backend/sample-templates/create-react-app/template.yaml @@ -18,6 +18,7 @@ spec: required: - component_id - use_typescript + - description properties: component_id: title: Name @@ -32,3 +33,9 @@ spec: type: boolean description: Include typescript default: true + use_github_actions: + title: Use Github Actions workflows to build this component + type: boolean + description: Use Github Actions + default: true + diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts similarity index 73% rename from plugins/scaffolder-backend/src/scaffolder/stages/templater/cra.ts rename to plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts index da33149c24..e771ada8c3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts @@ -14,17 +14,19 @@ * limitations under the License. */ import fs from 'fs-extra'; -import { runDockerContainer } from './helpers'; -import { TemplaterBase, TemplaterRunOptions } from '.'; +import { runDockerContainer } from '../helpers'; +import { TemplaterBase, TemplaterRunOptions } from '..'; import path from 'path'; -import { TemplaterRunResult } from './types'; +import { TemplaterRunResult } from '../types'; import * as yaml from 'yaml'; +import { GITHUB_ACTIONS_ANNOTATION } from '@backstage/plugin-github-actions'; export class CreateReactAppTemplater implements TemplaterBase { public async run(options: TemplaterRunOptions): Promise { const { component_id: componentName, use_typescript: withTypescript, + use_github_actions: withGithubActions, description, owner, } = options.values; @@ -48,6 +50,23 @@ export class CreateReactAppTemplater implements TemplaterBase { }, }); + const extraAnnotations: Record = {}; + const finalDir = path.resolve( + resultDir, + options.values.component_id as string, + ); + + if (withGithubActions) { + await fs.promises.mkdir(`${finalDir}/.github`); + await fs.promises.mkdir(`${finalDir}/.github/workflows`); + await fs.promises.copyFile( + `${__dirname}/templates/.github/workflows/main.yml`, + `${finalDir}/.github/workflows/main.yml`, + ); + + extraAnnotations[GITHUB_ACTIONS_ANNOTATION] = options.values.storePath; + } + // Need to also make a component-info.yaml to store the data about the service. const componentInfo = { apiVersion: 'backstage.io/v1alpha1', @@ -55,6 +74,9 @@ export class CreateReactAppTemplater implements TemplaterBase { metadata: { name: componentName, description, + annotations: { + ...extraAnnotations, + }, }, spec: { type: 'website', @@ -63,11 +85,6 @@ export class CreateReactAppTemplater implements TemplaterBase { }, }; - const finalDir = path.resolve( - resultDir, - options.values.component_id as string, - ); - await fs.promises.writeFile( `${finalDir}/component-info.yaml`, yaml.stringify(componentInfo), diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/templates/.github/workflows/main.yml b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/templates/.github/workflows/main.yml new file mode 100644 index 0000000000..65cae9abbb --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/templates/.github/workflows/main.yml @@ -0,0 +1,41 @@ +name: CRA Build + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x] + + steps: + - name: checkout code + uses: actions/checkout@v1 + - name: get yarn cache + id: yarn-cache + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: use node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: yarn install, build, and test + working-directory: . + run: | + yarn install + yarn build + yarn test + env: + CI: true diff --git a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx index 87b70a9553..0b6c451ff8 100644 --- a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx +++ b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx @@ -43,10 +43,11 @@ export const JobStatusModal = ({ entity, }: Props) => { const job = useJobPolling(jobId); + const jobStatus = job?.status ?? ''; useEffect(() => { - if (job?.status === 'COMPLETED') onComplete(job); - }, [job, onComplete]); + if (jobStatus === 'COMPLETED') onComplete(job); + }, [jobStatus, onComplete]); // eslint-disable-line react-hooks/exhaustive-deps return ( diff --git a/yarn.lock b/yarn.lock index 0cdce51f95..e89d95bd9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3525,6 +3525,11 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-7.0.0.tgz#36804ae09ec938f1aa5f9464ea993f3f151cfaa8" integrity sha512-XRTrTRyRRYBxPYINKNHw4B8QWlA3p4I+id/Po2sMdejtXH3LZgDgIjdschUZSdQ6J6dVYDdaVykdizRM9I+G6Q== +"@spotify/eslint-config-base@^8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-8.0.0.tgz#c3d10d8a05ad9129d579952cb80063e4c4fa216e" + integrity sha512-07Fo+KoTMl4AaZJPD6deFnYmG634wzgeqfFcWdFlIrOLAasvWSH8Lp6ZE9cJBKuffOAy8kuEE1SwFo34+5X8bQ== + "@spotify/eslint-config-oss@^1.0.1": version "1.0.2" resolved "https://registry.npmjs.org/@spotify/eslint-config-oss/-/eslint-config-oss-1.0.2.tgz#b0e56e549c78dcdd79063ce48521f10c3420f701" @@ -3537,12 +3542,22 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-7.0.1.tgz#2e70de9d7911ea9aeaa55a83a332220a28f6c431" integrity sha512-HNDHvm19EaBXiDgsg52mjMgKWZTeA0hO2Q75ACNwb8UtjIKkANqyyuzyDGo8jiGMbWIm6wJjShlRtT95emNlqQ== +"@spotify/eslint-config-react@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-8.0.2.tgz#91af3c58b22d49a96795336ed66927e722cda430" + integrity sha512-V0gzO/jWmjhODLINAfeunHj+OBdj/cQeVDw+92ZUlkonAg6BZLjX6Vy8jeIUFjfgmVOtI9eKbcApxaurj1jN6g== + "@spotify/eslint-config-typescript@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-7.0.0.tgz#fc5227e3344f74b41ac3a530df24a95ac13254e4" integrity sha512-28I/SAf68NKbWZ5IY0WYMa0D18PxWdC9DP9gRbOTlZufmsS8jEgqf3zBUWmP6XOf1nihpKWcqvbFUG5H7/JYXA== -"@spotify/eslint-config@^7.0.0", "@spotify/eslint-config@^7.0.1": +"@spotify/eslint-config-typescript@^8.0.1": + version "8.0.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-8.0.1.tgz#2d3ee56a8a3f945454109086639cde47251d1e62" + integrity sha512-ALkA4WA2ZikX7grkptZ36J1N/iap0IJeViy6/ZcxSkm6yEy2BYslmS2MdoJ5PV/DfZ3Z/21d/+XYFqVEpcbrXg== + +"@spotify/eslint-config@^7.0.0": version "7.0.1" resolved "https://registry.npmjs.org/@spotify/eslint-config/-/eslint-config-7.0.1.tgz#07a21cfd7fce89cfc2c6dd5ea5d747e741201b66" integrity sha512-8GI/TZGUhS4pr7oipT2MjrZFRgXcKzk9YImEusUdD2f5vlCniRFIBQNrvTMkyjfdQqvIVqJPLcdVPXeAgprsMw== @@ -3559,6 +3574,29 @@ eslint-plugin-react "^7.12.4" eslint-plugin-react-hooks "^4.0.0" +"@spotify/eslint-config@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config/-/eslint-config-8.1.0.tgz#00801a892a8f51df3f1074f7bc695052df4c9cd6" + integrity sha512-A3THg4Y2eK+hijUO+kt2ZL278XciFo/s/pwZ93c4/cYwFXYf1mcB2tmnmhP/6kK4QxF7rYmO8nYJMwPZ1sOkyQ== + dependencies: + "@spotify/eslint-config-base" "^8.0.0" + "@spotify/eslint-config-react" "^8.0.2" + "@spotify/eslint-config-typescript" "^8.0.1" + "@spotify/eslint-plugin" "^8.1.0" + "@spotify/web-scripts-utils" "^8.0.0" + "@typescript-eslint/eslint-plugin" "^3.4.0" + "@typescript-eslint/parser" "^3.4.0" + eslint-config-prettier "^6.0.0" + eslint-plugin-jest "^23.17.1" + eslint-plugin-jsx-a11y "^6.2.1" + eslint-plugin-react "^7.12.4" + eslint-plugin-react-hooks "^4.0.0" + +"@spotify/eslint-plugin@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@spotify/eslint-plugin/-/eslint-plugin-8.1.0.tgz#a9c5f971537c647d20d6f8c608018aec8d1b882a" + integrity sha512-/VBOF0vMRhVQFqdsNQ5NKhZeD8IWimqKZzsp2yrjLKDajXOfCsA8VpCtm/j4T6/8j/mqb7Rz9ePT+thHfGtBxg== + "@spotify/prettier-config@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-7.0.0.tgz#47750979d1282197295108b6958360660a955c16" @@ -3577,6 +3615,14 @@ glob "^7.1.4" read-pkg-up "^7.0.1" +"@spotify/web-scripts-utils@^8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@spotify/web-scripts-utils/-/web-scripts-utils-8.0.0.tgz#83e49a0050e0ca553769cea4052fe438bc0378a7" + integrity sha512-5ADUaRRW+ZJHYhfSiaJVVq+9hVfAin+WYaJzEd/3oTvd6P1BrVsAdyxBdmXtacTHu+vjlVoye/kxdpUhlIq9Iw== + dependencies: + glob "^7.1.4" + read-pkg-up "^7.0.1" + "@storybook/addon-actions@^6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.21.tgz#0de1d109d4b1eb99f644bbe84e74c25cfd2b1b6b" @@ -5457,6 +5503,18 @@ regexpp "^3.0.0" tsutils "^3.17.1" +"@typescript-eslint/eslint-plugin@^3.4.0": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" + integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== + dependencies: + "@typescript-eslint/experimental-utils" "3.10.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/experimental-utils@2.24.0", "@typescript-eslint/experimental-utils@^2.5.0": version "2.24.0" resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" @@ -5466,6 +5524,17 @@ "@typescript-eslint/typescript-estree" "2.24.0" eslint-scope "^5.0.0" +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + "@typescript-eslint/parser@^2.14.0": version "2.24.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" @@ -5476,6 +5545,22 @@ "@typescript-eslint/typescript-estree" "2.24.0" eslint-visitor-keys "^1.1.0" +"@typescript-eslint/parser@^3.4.0": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + "@typescript-eslint/typescript-estree@2.24.0": version "2.24.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" @@ -5489,6 +5574,27 @@ semver "^6.3.0" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -10069,6 +10175,13 @@ eslint-plugin-import@^2.20.2, eslint-plugin-import@^2.22.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" +eslint-plugin-jest@^23.17.1: + version "23.20.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099" + integrity sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw== + dependencies: + "@typescript-eslint/experimental-utils" "^2.5.0" + eslint-plugin-jest@^23.6.0: version "23.8.2" resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4" @@ -10114,9 +10227,9 @@ eslint-plugin-notice@^0.9.10: metric-lcs "^0.1.2" eslint-plugin-react-hooks@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.4.tgz#aed33b4254a41b045818cacb047b81e6df27fa58" - integrity sha512-equAdEIsUETLFNCmmCkiCGq6rkSK5MoJhXFPFYeUebcjKgBmWWcgVOqZyQC8Bv1BwVCnTq9tBxgJFgAJTWoJtA== + version "4.1.1" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.1.1.tgz#b37e1ff622b7800cd673901de32db1103d48411d" + integrity sha512-vFJNwsf4MLYS0lHYfz9LqxQ+GccYsGGeKPHDxgkIaKbAhNuTLnST+q44pt81MzJZyFU5K4XLF6WiCGv3Yb6tCg== eslint-plugin-react@^7.12.4: version "7.19.0" From 248f615148c7a48efc2320f330621684c55d0d27 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 22 Sep 2020 13:50:54 +0200 Subject: [PATCH 002/349] fix(scaffolder): sturdier fix for the catalog posting after success --- .../JobStatusModal/JobStatusModal.tsx | 2 +- .../components/TemplatePage/TemplatePage.tsx | 41 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx index 0b6c451ff8..e7d13e609f 100644 --- a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx +++ b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx @@ -46,7 +46,7 @@ export const JobStatusModal = ({ const jobStatus = job?.status ?? ''; useEffect(() => { - if (jobStatus === 'COMPLETED') onComplete(job); + if (jobStatus === 'COMPLETED') onComplete(job!); }, [jobStatus, onComplete]); // eslint-disable-line react-hooks/exhaustive-deps return ( diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index e68c795bd6..4ead44ab99 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -27,7 +27,7 @@ import { import { catalogApiRef } from '@backstage/plugin-catalog'; import { LinearProgress } from '@material-ui/core'; import { IChangeEvent } from '@rjsf/core'; -import React, { useState } from 'react'; +import React, { useState, useCallback } from 'react'; import { useParams } from 'react-router-dom'; import useStaleWhileRevalidate from 'swr'; import { scaffolderApiRef } from '../../api'; @@ -108,27 +108,30 @@ export const TemplatePage = () => { null, ); - const handleCreateComplete = async (job: Job) => { - const componentYaml = job.metadata.remoteUrl?.replace( - /\.git$/, - '/blob/master/component-info.yaml', - ); - - if (!componentYaml) { - errorApi.post( - new Error( - `Failed to find component-info.yaml file in ${job.metadata.remoteUrl}.`, - ), + const handleCreateComplete = useCallback( + async (job: Job) => { + const componentYaml = job.metadata.remoteUrl?.replace( + /\.git$/, + '/blob/master/component-info.yaml', ); - return; - } - const { - entities: [createdEntity], - } = await catalogApi.addLocation('github', componentYaml); + if (!componentYaml) { + errorApi.post( + new Error( + `Failed to find component-info.yaml file in ${job.metadata.remoteUrl}.`, + ), + ); + return; + } - setEntity((createdEntity as any) as TemplateEntityV1alpha1); - }; + const { + entities: [createdEntity], + } = await catalogApi.addLocation('github', componentYaml); + + setEntity((createdEntity as any) as TemplateEntityV1alpha1); + }, + [catalogApi, setEntity, errorApi], + ); if (!loading && !template) { errorApi.post(new Error('Template was not found.')); From 37da165e7088fa54e1587e3f15b1f96a37d6de87 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 29 Sep 2020 12:39:14 +0200 Subject: [PATCH 003/349] feat: universal file for github-actions --- packages/cli/src/lib/builder/config.ts | 17 ++++++++++++++++- plugins/github-actions/package.json | 3 ++- .../src/components/Cards/Cards.tsx | 2 +- .../github-actions/src/components/Router.tsx | 2 +- .../src/components/useProjectName.ts | 3 +-- plugins/github-actions/src/index.ts | 1 - plugins/github-actions/universal.js | 18 ++++++++++++++++++ .../scaffolder/stages/templater/cra/index.ts | 3 ++- 8 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 plugins/github-actions/universal.js diff --git a/packages/cli/src/lib/builder/config.ts b/packages/cli/src/lib/builder/config.ts index afcedaae59..44ccc85824 100644 --- a/packages/cli/src/lib/builder/config.ts +++ b/packages/cli/src/lib/builder/config.ts @@ -77,6 +77,21 @@ export const makeConfigs = async ( mainFields.unshift('browser'); } + const commonjsInclude: Array = [/node_modules/]; + + // Purpose of this file is + // to be bridge between + // frontend- and backend- + // plugins' code + const UNIVERSAL_FILE = 'universal.js'; + const universalPath = paths.resolveTarget(UNIVERSAL_FILE); + const universalFileExists = fs.existsSync(universalPath); + + if (universalFileExists) { + mainFields.push(UNIVERSAL_FILE); + commonjsInclude.push(UNIVERSAL_FILE); + } + configs.push({ input: 'src/index.ts', output, @@ -88,7 +103,7 @@ export const makeConfigs = async ( }), resolve({ mainFields }), commonjs({ - include: /node_modules/, + include: commonjsInclude, exclude: [/\/[^/]+\.(?:stories|test)\.[^/]+$/], }), postcss(), diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 9d1538ce99..0000e07d23 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -50,6 +50,7 @@ "jest-fetch-mock": "^3.0.3" }, "files": [ - "dist" + "dist", + "universal.js" ] } diff --git a/plugins/github-actions/src/components/Cards/Cards.tsx b/plugins/github-actions/src/components/Cards/Cards.tsx index 28783efdea..f963be7569 100644 --- a/plugins/github-actions/src/components/Cards/Cards.tsx +++ b/plugins/github-actions/src/components/Cards/Cards.tsx @@ -32,7 +32,7 @@ import { useApi, } from '@backstage/core'; import ExternalLinkIcon from '@material-ui/icons/Launch'; -import { GITHUB_ACTIONS_ANNOTATION } from '../useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from '../../../universal'; const useStyles = makeStyles({ externalLinkIcon: { diff --git a/plugins/github-actions/src/components/Router.tsx b/plugins/github-actions/src/components/Router.tsx index 7d340fb8b8..8314981ed6 100644 --- a/plugins/github-actions/src/components/Router.tsx +++ b/plugins/github-actions/src/components/Router.tsx @@ -19,7 +19,7 @@ import { Routes, Route } from 'react-router'; import { rootRouteRef, buildRouteRef } from '../plugin'; import { WorkflowRunDetails } from './WorkflowRunDetails'; import { WorkflowRunsTable } from './WorkflowRunsTable'; -import { GITHUB_ACTIONS_ANNOTATION } from './useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from '../../universal'; import { WarningPanel } from '@backstage/core'; export const isPluginApplicableToEntity = (entity: Entity) => diff --git a/plugins/github-actions/src/components/useProjectName.ts b/plugins/github-actions/src/components/useProjectName.ts index ec7158bd27..226cc6c775 100644 --- a/plugins/github-actions/src/components/useProjectName.ts +++ b/plugins/github-actions/src/components/useProjectName.ts @@ -16,8 +16,7 @@ import { useAsync } from 'react-use'; import { Entity } from '@backstage/catalog-model'; - -export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; +import { GITHUB_ACTIONS_ANNOTATION } from '../../universal'; export const useProjectName = (entity: Entity) => { const { value, loading, error } = useAsync(async () => { diff --git a/plugins/github-actions/src/index.ts b/plugins/github-actions/src/index.ts index 24fe6fc90d..5c89c7f920 100644 --- a/plugins/github-actions/src/index.ts +++ b/plugins/github-actions/src/index.ts @@ -18,4 +18,3 @@ export { plugin } from './plugin'; export * from './api'; export { Router, isPluginApplicableToEntity } from './components/Router'; export * from './components/Cards'; -export { GITHUB_ACTIONS_ANNOTATION } from './components/useProjectName'; diff --git a/plugins/github-actions/universal.js b/plugins/github-actions/universal.js new file mode 100644 index 0000000000..a414b71749 --- /dev/null +++ b/plugins/github-actions/universal.js @@ -0,0 +1,18 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file is shared between frontend and backend plugins +module.exports.GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts index e771ada8c3..61a7064dc0 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts @@ -19,7 +19,8 @@ import { TemplaterBase, TemplaterRunOptions } from '..'; import path from 'path'; import { TemplaterRunResult } from '../types'; import * as yaml from 'yaml'; -import { GITHUB_ACTIONS_ANNOTATION } from '@backstage/plugin-github-actions'; +// eslint-disable-next-line monorepo/no-internal-import +import { GITHUB_ACTIONS_ANNOTATION } from '@backstage/plugin-github-actions/universal'; export class CreateReactAppTemplater implements TemplaterBase { public async run(options: TemplaterRunOptions): Promise { From e3bb82deab77f656c935e234d0fa2c2e148a76fa Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 7 Oct 2020 16:29:32 +0200 Subject: [PATCH 004/349] refactor: universal folder, package.json --- packages/cli/src/lib/builder/config.ts | 10 +++++----- plugins/github-actions/package.json | 2 +- .../{universal.js => universal/index.js} | 6 +++++- plugins/github-actions/universal/package.json | 5 +++++ 4 files changed, 16 insertions(+), 7 deletions(-) rename plugins/github-actions/{universal.js => universal/index.js} (87%) create mode 100644 plugins/github-actions/universal/package.json diff --git a/packages/cli/src/lib/builder/config.ts b/packages/cli/src/lib/builder/config.ts index 44ccc85824..b899fc98d3 100644 --- a/packages/cli/src/lib/builder/config.ts +++ b/packages/cli/src/lib/builder/config.ts @@ -16,7 +16,7 @@ import chalk from 'chalk'; import fs from 'fs-extra'; -import { relative as relativePath } from 'path'; +import { relative as relativePath, join as joinPath } from 'path'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; @@ -83,13 +83,13 @@ export const makeConfigs = async ( // to be bridge between // frontend- and backend- // plugins' code - const UNIVERSAL_FILE = 'universal.js'; - const universalPath = paths.resolveTarget(UNIVERSAL_FILE); + const UNIVERSAL_FOLDER = 'universal'; + const universalPath = paths.resolveTarget(UNIVERSAL_FOLDER); const universalFileExists = fs.existsSync(universalPath); if (universalFileExists) { - mainFields.push(UNIVERSAL_FILE); - commonjsInclude.push(UNIVERSAL_FILE); + mainFields.push(UNIVERSAL_FOLDER); + commonjsInclude.push(joinPath(UNIVERSAL_FOLDER, '*.js')); } configs.push({ diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 0000e07d23..c4a6d8cc01 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -51,6 +51,6 @@ }, "files": [ "dist", - "universal.js" + "universal" ] } diff --git a/plugins/github-actions/universal.js b/plugins/github-actions/universal/index.js similarity index 87% rename from plugins/github-actions/universal.js rename to plugins/github-actions/universal/index.js index a414b71749..b101b61efc 100644 --- a/plugins/github-actions/universal.js +++ b/plugins/github-actions/universal/index.js @@ -1,3 +1,4 @@ +// @ts-check /* * Copyright 2020 Spotify AB * @@ -14,5 +15,8 @@ * limitations under the License. */ -// This file is shared between frontend and backend plugins +/** + * Annotation to define on the entity to enable the plugin + * @type {string} + */ module.exports.GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; diff --git a/plugins/github-actions/universal/package.json b/plugins/github-actions/universal/package.json new file mode 100644 index 0000000000..df593c690d --- /dev/null +++ b/plugins/github-actions/universal/package.json @@ -0,0 +1,5 @@ +{ + "main": "index.js", + "module": "index.js", + "description": "Provides code that can be shared between frontend- and backend-oriented packages" +} From 7b9abc0a10fa07cb482d1bbec3d085483c5e4dcb Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 7 Oct 2020 17:01:44 +0200 Subject: [PATCH 005/349] fix: import --- .../src/components/Cards/RecentWorkflowRunsCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx index e5bba7fad9..aa1fecba7d 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx @@ -15,7 +15,7 @@ */ import { Entity } from '@backstage/catalog-model'; import { errorApiRef, useApi } from '@backstage/core-api'; -import { GITHUB_ACTIONS_ANNOTATION } from '../useProjectName'; +import { GITHUB_ACTIONS_ANNOTATION } from '../../../universal'; import { useWorkflowRuns } from '../useWorkflowRuns'; import React, { useEffect } from 'react'; import { EmptyState, Table } from '@backstage/core'; From 9c3a03d20d45142bed11c126b744b971793400e9 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 7 Oct 2020 17:13:32 +0200 Subject: [PATCH 006/349] fix: eslint --- .../scaffolder/src/components/JobStatusModal/JobStatusModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx index 6561e5153d..33fdb73b2e 100644 --- a/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx +++ b/plugins/scaffolder/src/components/JobStatusModal/JobStatusModal.tsx @@ -53,7 +53,7 @@ export const JobStatusModal = ({ onComplete(job!); } else if (jobStatus === 'FAILED') setDialogTitle('Failed to create component'); - }, [jobStatus, onComplete, setDialogTitle]); + }, [jobStatus, onComplete, setDialogTitle]); // eslint-disable-line react-hooks/exhaustive-deps return ( From b314109c83bb4e6e0e33442c8ba564c57eb5f61e Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 28 Oct 2020 09:10:48 +0100 Subject: [PATCH 007/349] chore(lint): update to use the latest monorepo plugin --- packages/cli/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index c336684ba5..c855d86e04 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -58,7 +58,7 @@ "eslint": "^7.1.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-import": "^2.20.2", - "eslint-plugin-monorepo": "^0.2.1", + "eslint-plugin-monorepo": "^0.3.0", "fork-ts-checker-webpack-plugin": "^4.0.5", "fs-extra": "^9.0.0", "handlebars": "^4.7.3", diff --git a/yarn.lock b/yarn.lock index 9d7c53fb8c..3210ca0a83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10784,10 +10784,10 @@ eslint-plugin-jsx-a11y@^6.2.1: has "^1.0.3" jsx-ast-utils "^2.2.1" -eslint-plugin-monorepo@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.2.1.tgz#96cfc4af241077675f40d7017377897fb8ea537b" - integrity sha512-82JaAjuajVAsDT+pMvdt275H6F55H3MEofaMZbJurGqfXpPDT4eayTgYyyjfd1XR8VD1S+ORbuHCULnSqNyD9g== +eslint-plugin-monorepo@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.3.0.tgz#8bfab30713fbc543cb7bffae651ab37bf601a3b3" + integrity sha512-pg1Q37BSDDFh7XdKIsCAi+6/XtE/Kyltu6KokFRFsDe1vOa/R6+O9OVLmav012bBDPrChw8QzBDE7pvADg9+Jg== dependencies: eslint-module-utils "^2.1.1" get-monorepo-packages "^1.1.0" From 002e0eb1ef7a0ef4190e15bbc7d0976f6326833a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 28 Oct 2020 09:36:18 +0100 Subject: [PATCH 008/349] chore(lint): bump again as there was a problem --- packages/cli/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index c855d86e04..f6b4ff20fc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -58,7 +58,7 @@ "eslint": "^7.1.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-import": "^2.20.2", - "eslint-plugin-monorepo": "^0.3.0", + "eslint-plugin-monorepo": "^0.3.1", "fork-ts-checker-webpack-plugin": "^4.0.5", "fs-extra": "^9.0.0", "handlebars": "^4.7.3", diff --git a/yarn.lock b/yarn.lock index 3210ca0a83..18b0d93a2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10784,10 +10784,10 @@ eslint-plugin-jsx-a11y@^6.2.1: has "^1.0.3" jsx-ast-utils "^2.2.1" -eslint-plugin-monorepo@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.3.0.tgz#8bfab30713fbc543cb7bffae651ab37bf601a3b3" - integrity sha512-pg1Q37BSDDFh7XdKIsCAi+6/XtE/Kyltu6KokFRFsDe1vOa/R6+O9OVLmav012bBDPrChw8QzBDE7pvADg9+Jg== +eslint-plugin-monorepo@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.3.1.tgz#698a74b3ef2a3481faaefab6219184429a57e01e" + integrity sha512-Oz91zASwmNapr5IHP9MYh4mEmkb5ZQJ1XxXU6KFY5eLxD1+V+J4B+yYDiILkaQCf5Itz4LKgnCoiB59lD/X29A== dependencies: eslint-module-utils "^2.1.1" get-monorepo-packages "^1.1.0" From 41ed522afbb4bab16dd5c5a768d950b195f1d525 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 28 Oct 2020 10:00:04 +0100 Subject: [PATCH 009/349] chore: bump eslint-plugin-monorepo --- packages/cli/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 8a330d861b..8aceb440d0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -65,7 +65,7 @@ "eslint-plugin-import": "^2.20.2", "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsx-a11y": "^6.2.1", - "eslint-plugin-monorepo": "^0.2.1", + "eslint-plugin-monorepo": "^0.3.1", "eslint-plugin-react": "^7.12.4", "eslint-plugin-react-hooks": "^4.0.0", "fork-ts-checker-webpack-plugin": "^4.0.5", diff --git a/yarn.lock b/yarn.lock index ef52ed9918..9bc6cf9efa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10912,10 +10912,10 @@ eslint-plugin-jsx-a11y@^6.2.1: has "^1.0.3" jsx-ast-utils "^2.2.1" -eslint-plugin-monorepo@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.2.1.tgz#96cfc4af241077675f40d7017377897fb8ea537b" - integrity sha512-82JaAjuajVAsDT+pMvdt275H6F55H3MEofaMZbJurGqfXpPDT4eayTgYyyjfd1XR8VD1S+ORbuHCULnSqNyD9g== +eslint-plugin-monorepo@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.3.1.tgz#698a74b3ef2a3481faaefab6219184429a57e01e" + integrity sha512-Oz91zASwmNapr5IHP9MYh4mEmkb5ZQJ1XxXU6KFY5eLxD1+V+J4B+yYDiILkaQCf5Itz4LKgnCoiB59lD/X29A== dependencies: eslint-module-utils "^2.1.1" get-monorepo-packages "^1.1.0" From 2ceb961f4ee5d40625881ca621e03a8a47b9b7aa Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 28 Oct 2020 10:08:01 +0100 Subject: [PATCH 010/349] chore: merge upstream --- packages/cli/package.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index de447b27b5..8aceb440d0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,11 +38,7 @@ "@rollup/plugin-json": "^4.0.2", "@rollup/plugin-node-resolve": "^9.0.0", "@rollup/plugin-yaml": "^2.1.1", -<<<<<<< HEAD - "@spotify/eslint-config-base": "^9.0.0", -======= "@spotify/eslint-config-base": "^8.0.0", ->>>>>>> 88203b2fdd686da88b4d9f5ebe3564be90bcdd37 "@spotify/eslint-config-react": "^8.0.0", "@spotify/eslint-config-typescript": "^8.0.0", "@sucrase/webpack-loader": "^2.0.0", @@ -67,15 +63,11 @@ "eslint-config-prettier": "^6.0.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-import": "^2.20.2", -<<<<<<< HEAD "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsx-a11y": "^6.2.1", "eslint-plugin-monorepo": "^0.3.1", "eslint-plugin-react": "^7.12.4", "eslint-plugin-react-hooks": "^4.0.0", -======= - "eslint-plugin-monorepo": "^0.3.1", ->>>>>>> 88203b2fdd686da88b4d9f5ebe3564be90bcdd37 "fork-ts-checker-webpack-plugin": "^4.0.5", "fs-extra": "^9.0.0", "handlebars": "^4.7.3", From a569f36ce8cd04b21d8164f7dd797df5263d3191 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 28 Oct 2020 10:47:38 +0100 Subject: [PATCH 011/349] refactor: remove eslint-disable monorepo/internal-import --- packages/app/src/index.tsx | 3 +-- .../github-actions/{universal/index.js => universal.js} | 0 plugins/github-actions/universal/package.json | 5 ----- .../src/scaffolder/stages/templater/cra/index.ts | 6 ++++-- yarn.lock | 7 ------- 5 files changed, 5 insertions(+), 16 deletions(-) rename plugins/github-actions/{universal/index.js => universal.js} (100%) delete mode 100644 plugins/github-actions/universal/package.json diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index a38159a258..ed1637d2c2 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -14,8 +14,7 @@ * limitations under the License. */ -// eslint-disable-next-line monorepo/no-internal-import -import '@backstage/cli/asset-types'; +import '@backstage/cli/asset-types/asset-types'; import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; diff --git a/plugins/github-actions/universal/index.js b/plugins/github-actions/universal.js similarity index 100% rename from plugins/github-actions/universal/index.js rename to plugins/github-actions/universal.js diff --git a/plugins/github-actions/universal/package.json b/plugins/github-actions/universal/package.json deleted file mode 100644 index df593c690d..0000000000 --- a/plugins/github-actions/universal/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "index.js", - "module": "index.js", - "description": "Provides code that can be shared between frontend- and backend-oriented packages" -} diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts index 61a7064dc0..7d27688c0b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cra/index.ts @@ -19,8 +19,8 @@ import { TemplaterBase, TemplaterRunOptions } from '..'; import path from 'path'; import { TemplaterRunResult } from '../types'; import * as yaml from 'yaml'; -// eslint-disable-next-line monorepo/no-internal-import import { GITHUB_ACTIONS_ANNOTATION } from '@backstage/plugin-github-actions/universal'; +import { resolvePackagePath } from '@backstage/backend-common'; export class CreateReactAppTemplater implements TemplaterBase { public async run(options: TemplaterRunOptions): Promise { @@ -61,7 +61,9 @@ export class CreateReactAppTemplater implements TemplaterBase { await fs.promises.mkdir(`${finalDir}/.github`); await fs.promises.mkdir(`${finalDir}/.github/workflows`); await fs.promises.copyFile( - `${__dirname}/templates/.github/workflows/main.yml`, + `${resolvePackagePath( + '@backstage/plugin-scaffolder-backend', + )}/templates/.github/workflows/main.yml`, `${finalDir}/.github/workflows/main.yml`, ); diff --git a/yarn.lock b/yarn.lock index c31e12127d..9bc6cf9efa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3801,17 +3801,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" -<<<<<<< HEAD -"@spotify/eslint-config-base@^8.1.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-9.0.0.tgz#e122b2e6d1a11750170badc5be6774ded95953d2" - integrity sha512-LNGY6bBM0IlosvMIx9Ic5gqatpa5LPvrJhN4RnrUnP9oaXNLgPTKDE89p3eC5Tnh78ADdX4HD+rbHDSyP2tBgg== -======= "@spotify/eslint-config-base@^8.0.0": version "8.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-8.0.0.tgz#c3d10d8a05ad9129d579952cb80063e4c4fa216e" integrity sha512-07Fo+KoTMl4AaZJPD6deFnYmG634wzgeqfFcWdFlIrOLAasvWSH8Lp6ZE9cJBKuffOAy8kuEE1SwFo34+5X8bQ== ->>>>>>> 88203b2fdd686da88b4d9f5ebe3564be90bcdd37 "@spotify/eslint-config-oss@^1.0.1": version "1.0.2" From fcee31f99a9bec113da137205e63de427a3e4100 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 28 Oct 2020 11:18:57 +0100 Subject: [PATCH 012/349] fix: universal folder -> universal file --- packages/cli/src/lib/builder/config.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/lib/builder/config.ts b/packages/cli/src/lib/builder/config.ts index c305d248be..60b8ad20ba 100644 --- a/packages/cli/src/lib/builder/config.ts +++ b/packages/cli/src/lib/builder/config.ts @@ -16,7 +16,7 @@ import chalk from 'chalk'; import fs from 'fs-extra'; -import { relative as relativePath, join as joinPath } from 'path'; +import { relative as relativePath } from 'path'; import peerDepsExternal from 'rollup-plugin-peer-deps-external'; import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; @@ -85,13 +85,13 @@ export const makeConfigs = async ( // to be bridge between // frontend- and backend- // plugins' code - const UNIVERSAL_FOLDER = 'universal'; - const universalPath = paths.resolveTarget(UNIVERSAL_FOLDER); + const UNIVERSAL_FILE = 'universal.js'; + const universalPath = paths.resolveTarget(UNIVERSAL_FILE); const universalFileExists = fs.existsSync(universalPath); if (universalFileExists) { - mainFields.push(UNIVERSAL_FOLDER); - commonjsInclude.push(joinPath(UNIVERSAL_FOLDER, '*.js')); + mainFields.push(UNIVERSAL_FILE); + commonjsInclude.push(UNIVERSAL_FILE); } configs.push({ From cc59b3ff0c6523e7b68e93e047ae17d988d164d9 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Fri, 30 Oct 2020 10:42:05 +0530 Subject: [PATCH 013/349] feat: scaffolder full screen logs --- .../src/components/JobStage/JobStage.tsx | 16 ++++++- .../src/components/JobStage/LogModal.tsx | 48 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 plugins/scaffolder/src/components/JobStage/LogModal.tsx diff --git a/plugins/scaffolder/src/components/JobStage/JobStage.tsx b/plugins/scaffolder/src/components/JobStage/JobStage.tsx index 5128a761ec..68a9e8ead8 100644 --- a/plugins/scaffolder/src/components/JobStage/JobStage.tsx +++ b/plugins/scaffolder/src/components/JobStage/JobStage.tsx @@ -1,3 +1,5 @@ +/* eslint-disable jsx-a11y/click-events-have-key-events */ +/* eslint-disable jsx-a11y/no-static-element-interactions */ /* * Copyright 2020 Spotify AB * @@ -31,6 +33,7 @@ import moment from 'moment'; import React, { Suspense, useEffect, useState } from 'react'; import { Job } from '../../types'; +const LogModal = React.lazy(() => import('./LogModal')); const LazyLog = React.lazy(() => import('react-lazylog/build/LazyLog')); moment.relativeTimeThreshold('ss', 0); @@ -99,6 +102,9 @@ export const JobStage = ({ endedAt, startedAt, name, log, status }: Props) => { .humanize() : null; + const [logsFullScreen, setLogsFullScreen] = useState(false); + const toggleLogsFullScreen = () => setLogsFullScreen(!logsFullScreen); + return ( { ) : ( }> -
+ +
diff --git a/plugins/scaffolder/src/components/JobStage/LogModal.tsx b/plugins/scaffolder/src/components/JobStage/LogModal.tsx new file mode 100644 index 0000000000..0eefad9b04 --- /dev/null +++ b/plugins/scaffolder/src/components/JobStage/LogModal.tsx @@ -0,0 +1,48 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { + Dialog, + DialogTitle, + DialogContent, + IconButton, +} from '@material-ui/core'; +import Close from '@material-ui/icons/Close'; +import LazyLog from 'react-lazylog/build/LazyLog'; + +type Props = { + log: string[]; + open?: boolean; + onClose(): void; +}; + +export const LogModal: React.FC = ({ log, open = false, onClose }) => ( + + + Logs + + + + + +
+ +
+
+
+); + +export default LogModal; From 53d790027fa957ba44062aff98bfcd09e1769941 Mon Sep 17 00:00:00 2001 From: Omer Farooq <17722640+o-farooq@users.noreply.github.com> Date: Sun, 1 Nov 2020 19:01:34 +1300 Subject: [PATCH 014/349] add techradar entry history data structure --- plugins/tech-radar/src/api.ts | 12 ++- .../src/components/RadarComponent.tsx | 24 ++++- plugins/tech-radar/src/sampleData.ts | 101 +++++++++++++----- plugins/tech-radar/src/utils/types.ts | 8 ++ 4 files changed, 114 insertions(+), 31 deletions(-) diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index 7a6e790136..10b8f480f2 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -34,11 +34,17 @@ export interface RadarQuadrant { export interface RadarEntry { key: string; // react key id: string; - moved: MovedState; - quadrant: RadarQuadrant; - ring: RadarRing; + quadrant: string; title: string; url: string; + history: Array; +} + +export interface RadarEntryHistory { + date: Date; + ring: string; + description?: string; + moved?: MovedState; } /** diff --git a/plugins/tech-radar/src/components/RadarComponent.tsx b/plugins/tech-radar/src/components/RadarComponent.tsx index 99190202b9..525949d040 100644 --- a/plugins/tech-radar/src/components/RadarComponent.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.tsx @@ -20,6 +20,7 @@ import { useAsync } from 'react-use'; import Radar from '../components/Radar'; import { TechRadarComponentProps, TechRadarLoaderResponse } from '../api'; import getSampleData from '../sampleData'; +import { Entry } from '../utils/types'; const useTechRadarLoader = (props: TechRadarComponentProps) => { const errorApi = useApi(errorApiRef); @@ -47,6 +48,27 @@ const useTechRadarLoader = (props: TechRadarComponentProps) => { const RadarComponent = (props: TechRadarComponentProps): JSX.Element => { const { loading, error, value: data } = useTechRadarLoader(props); + const mapToEntries = ( + loaderResponse: TechRadarLoaderResponse | undefined, + ): Array => { + return loaderResponse!.entries.map(entry => { + return { + id: entry.key, + quadrant: loaderResponse!.quadrants.find(q => q.id === entry.quadrant)!, + title: entry.title, + ring: loaderResponse!.rings.find(r => r.id === entry.history[0].ring)!, + history: entry.history.map(e => { + return { + date: e.date, + ring: loaderResponse!.rings.find(a => a.id === e.ring)!, + description: e.description, + moved: e.moved, + }; + }), + }; + }); + }; + return ( <> {loading && } @@ -55,7 +77,7 @@ const RadarComponent = (props: TechRadarComponentProps): JSX.Element => { {...props} rings={data!.rings} quadrants={data!.quadrants} - entries={data!.entries} + entries={mapToEntries(data)} /> )} diff --git a/plugins/tech-radar/src/sampleData.ts b/plugins/tech-radar/src/sampleData.ts index a9fa7efd7b..7d4ff6198f 100644 --- a/plugins/tech-radar/src/sampleData.ts +++ b/plugins/tech-radar/src/sampleData.ts @@ -35,85 +35,132 @@ quadrants.push({ id: 'process', name: 'Process' }); const entries = new Array(); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', + }, + ], url: '#', key: 'javascript', id: 'javascript', title: 'JavaScript', - quadrant: { id: 'languages', name: 'Languages' }, + quadrant: 'languages', }); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + description: + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat', + }, + ], url: '#', key: 'typescript', id: 'typescript', title: 'TypeScript', - quadrant: { id: 'languages', name: 'Languages' }, + quadrant: 'languages', }); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'webpack', id: 'webpack', title: 'Webpack', - quadrant: { id: 'frameworks', name: 'Frameworks' }, + quadrant: 'frameworks', }); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'react', id: 'react', title: 'React', - quadrant: { id: 'frameworks', name: 'Frameworks' }, + quadrant: 'frameworks', }); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'code-reviews', id: 'code-reviews', title: 'Code Reviews', - quadrant: { id: 'process', name: 'Process' }, + quadrant: 'process', }); entries.push({ - moved: 0, + history: [ + { + moved: 0, + ring: 'assess', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'mob-programming', id: 'mob-programming', title: 'Mob Programming', - quadrant: { id: 'process', name: 'Process' }, - ring: { id: 'assess', name: 'ASSESS', color: '#fbdb84' }, + quadrant: 'process', }); entries.push({ - moved: 0, + history: [ + { + moved: 0, + ring: 'use', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'docs-like-code', id: 'docs-like-code', title: 'Docs-like-code', - quadrant: { id: 'process', name: 'Process' }, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + quadrant: 'process', }); entries.push({ - moved: 0, + history: [ + { + ring: 'hold', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'force-push', id: 'force-push', title: 'Force push to master', - quadrant: { id: 'process', name: 'Process' }, - ring: { id: 'hold', name: 'HOLD', color: '#93c47d' }, + quadrant: 'process', }); entries.push({ - moved: 0, - ring: { id: 'use', name: 'USE', color: '#93c47d' }, + history: [ + { + ring: 'use', + date: new Date('2020-08-06'), + }, + ], url: '#', key: 'github-actions', id: 'github-actions', title: 'GitHub Actions', - quadrant: { id: 'infrastructure', name: 'Infrastructure' }, + quadrant: 'infrastructure', }); export default function getSampleData(): Promise { diff --git a/plugins/tech-radar/src/utils/types.ts b/plugins/tech-radar/src/utils/types.ts index f3933ee584..65c14f38c6 100644 --- a/plugins/tech-radar/src/utils/types.ts +++ b/plugins/tech-radar/src/utils/types.ts @@ -69,6 +69,14 @@ export type Entry = { // How this entry has recently moved; -1 for "down", +1 for "up", 0 for not moved moved?: MovedState; active?: boolean; + history?: Array; +}; + +export type EntryHistory = { + date: Date; + ring: Ring; + description?: string; + moved?: MovedState; }; // The same as Entry except quadrant/ring are declared by their string ID instead of being the actual objects From 7ce1d4950a6cfeef7ec5300f80bfa18e4c72f113 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Mon, 2 Nov 2020 22:13:07 +0530 Subject: [PATCH 015/349] chore: update UI --- .../src/components/JobStage/JobStage.tsx | 6 ++- .../src/components/JobStage/LogModal.tsx | 50 +++++++++++++------ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/plugins/scaffolder/src/components/JobStage/JobStage.tsx b/plugins/scaffolder/src/components/JobStage/JobStage.tsx index 68a9e8ead8..a73b434cd5 100644 --- a/plugins/scaffolder/src/components/JobStage/JobStage.tsx +++ b/plugins/scaffolder/src/components/JobStage/JobStage.tsx @@ -145,7 +145,11 @@ export const JobStage = ({ endedAt, startedAt, name, log, status }: Props) => { style={{ height: '20vh', width: '100%' }} onClick={toggleLogsFullScreen} > - +
)} diff --git a/plugins/scaffolder/src/components/JobStage/LogModal.tsx b/plugins/scaffolder/src/components/JobStage/LogModal.tsx index 0eefad9b04..6c6c5b4ffd 100644 --- a/plugins/scaffolder/src/components/JobStage/LogModal.tsx +++ b/plugins/scaffolder/src/components/JobStage/LogModal.tsx @@ -20,6 +20,7 @@ import { DialogContent, IconButton, } from '@material-ui/core'; +import { makeStyles } from '@material-ui/core/styles'; import Close from '@material-ui/icons/Close'; import LazyLog from 'react-lazylog/build/LazyLog'; @@ -29,20 +30,39 @@ type Props = { onClose(): void; }; -export const LogModal: React.FC = ({ log, open = false, onClose }) => ( - - - Logs - - - - - -
- -
-
-
-); +const useStyles = makeStyles(theme => ({ + header: { + width: '100%', + padding: theme.spacing(1, 4), + }, + closeIcon: { + float: 'right', + padding: theme.spacing(0.5, 0), + }, + logs: { + boxShadow: '-3px -1px 7px 0px rgba(50, 50, 50, 0.59)', + height: '100%', + width: '100%', + }, +})); +export const LogModal: React.FC = ({ log, open = false, onClose }) => { + const classes = useStyles(); + + return ( + + + Logs + + + + + +
+ +
+
+
+ ); +}; export default LogModal; From 67da53ab33839fd748a8d108134633913e3512e2 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 3 Nov 2020 14:58:20 +0100 Subject: [PATCH 016/349] feat: add universal file to plugin template --- packages/cli/templates/default-plugin/package.json.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 41f942fb79..8afd3654df 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -46,6 +46,7 @@ "cross-fetch": "^3.0.6" }, "files": [ - "dist" + "dist", + "universal" ] } From 59e2551801954c1a81e947b4390be143af095726 Mon Sep 17 00:00:00 2001 From: Omer Farooq <17722640+o-farooq@users.noreply.github.com> Date: Sat, 7 Nov 2020 23:10:41 +1300 Subject: [PATCH 017/349] updated names and added changeset --- .changeset/wicked-impalas-tan.md | 5 +++ plugins/tech-radar/src/api.ts | 6 ++-- .../src/components/RadarComponent.tsx | 8 +++-- plugins/tech-radar/src/sampleData.ts | 36 +++++++++---------- plugins/tech-radar/src/utils/types.ts | 4 +-- 5 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 .changeset/wicked-impalas-tan.md diff --git a/.changeset/wicked-impalas-tan.md b/.changeset/wicked-impalas-tan.md new file mode 100644 index 0000000000..ea68175d74 --- /dev/null +++ b/.changeset/wicked-impalas-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': minor +--- + +Added tech radar blip history backend support and normalized the datastructure diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index 10b8f480f2..0c30c9374c 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -37,12 +37,12 @@ export interface RadarEntry { quadrant: string; title: string; url: string; - history: Array; + timeline: Array; } -export interface RadarEntryHistory { +export interface RadarEntrySnapshot { date: Date; - ring: string; + ringId: string; description?: string; moved?: MovedState; } diff --git a/plugins/tech-radar/src/components/RadarComponent.tsx b/plugins/tech-radar/src/components/RadarComponent.tsx index 525949d040..583a7c91e0 100644 --- a/plugins/tech-radar/src/components/RadarComponent.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.tsx @@ -56,11 +56,13 @@ const RadarComponent = (props: TechRadarComponentProps): JSX.Element => { id: entry.key, quadrant: loaderResponse!.quadrants.find(q => q.id === entry.quadrant)!, title: entry.title, - ring: loaderResponse!.rings.find(r => r.id === entry.history[0].ring)!, - history: entry.history.map(e => { + ring: loaderResponse!.rings.find( + r => r.id === entry.timeline[0].ringId, + )!, + history: entry.timeline.map(e => { return { date: e.date, - ring: loaderResponse!.rings.find(a => a.id === e.ring)!, + ring: loaderResponse!.rings.find(a => a.id === e.ringId)!, description: e.description, moved: e.moved, }; diff --git a/plugins/tech-radar/src/sampleData.ts b/plugins/tech-radar/src/sampleData.ts index 7d4ff6198f..914bc30931 100644 --- a/plugins/tech-radar/src/sampleData.ts +++ b/plugins/tech-radar/src/sampleData.ts @@ -35,10 +35,10 @@ quadrants.push({ id: 'process', name: 'Process' }); const entries = new Array(); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', @@ -51,10 +51,10 @@ entries.push({ quadrant: 'languages', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), description: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat', @@ -67,10 +67,10 @@ entries.push({ quadrant: 'languages', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), }, ], @@ -81,10 +81,10 @@ entries.push({ quadrant: 'frameworks', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), }, ], @@ -95,10 +95,10 @@ entries.push({ quadrant: 'frameworks', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), }, ], @@ -109,10 +109,10 @@ entries.push({ quadrant: 'process', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'assess', + ringId: 'assess', date: new Date('2020-08-06'), }, ], @@ -123,10 +123,10 @@ entries.push({ quadrant: 'process', }); entries.push({ - history: [ + timeline: [ { moved: 0, - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), }, ], @@ -137,9 +137,9 @@ entries.push({ quadrant: 'process', }); entries.push({ - history: [ + timeline: [ { - ring: 'hold', + ringId: 'hold', date: new Date('2020-08-06'), }, ], @@ -150,9 +150,9 @@ entries.push({ quadrant: 'process', }); entries.push({ - history: [ + timeline: [ { - ring: 'use', + ringId: 'use', date: new Date('2020-08-06'), }, ], diff --git a/plugins/tech-radar/src/utils/types.ts b/plugins/tech-radar/src/utils/types.ts index 65c14f38c6..3322a67dcb 100644 --- a/plugins/tech-radar/src/utils/types.ts +++ b/plugins/tech-radar/src/utils/types.ts @@ -69,10 +69,10 @@ export type Entry = { // How this entry has recently moved; -1 for "down", +1 for "up", 0 for not moved moved?: MovedState; active?: boolean; - history?: Array; + timeline?: Array; }; -export type EntryHistory = { +export type EntrySnapshot = { date: Date; ring: Ring; description?: string; From 40bb4a2c7441eb9f2cb00eb467918c5197758fb5 Mon Sep 17 00:00:00 2001 From: Omer Farooq <17722640+o-farooq@users.noreply.github.com> Date: Sat, 7 Nov 2020 23:15:14 +1300 Subject: [PATCH 018/349] fix docs --- .changeset/wicked-impalas-tan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/wicked-impalas-tan.md b/.changeset/wicked-impalas-tan.md index ea68175d74..8cfe919f5c 100644 --- a/.changeset/wicked-impalas-tan.md +++ b/.changeset/wicked-impalas-tan.md @@ -2,4 +2,4 @@ '@backstage/plugin-tech-radar': minor --- -Added tech radar blip history backend support and normalized the datastructure +Added tech radar blip history backend support and normalized the data structure From c58fa2cb139b478c1808a5ac56420f0349d1ec89 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 10 Nov 2020 15:10:41 +0100 Subject: [PATCH 019/349] fix: disable files field sync --- packages/cli/src/lib/diff/handlers.ts | 7 ++++++- packages/cli/templates/default-plugin/package.json.hbs | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/lib/diff/handlers.ts b/packages/cli/src/lib/diff/handlers.ts index 40e3d4c587..588ce2f45f 100644 --- a/packages/cli/src/lib/diff/handlers.ts +++ b/packages/cli/src/lib/diff/handlers.ts @@ -61,7 +61,12 @@ class PackageJsonHandler { await this.syncField('main:src'); } await this.syncField('types'); - await this.syncField('files'); + + // shmidt-i: Skipping `files` for now, + // need more info how to handle + // and what to allow + + // await this.syncField('files'); await this.syncScripts(); await this.syncPublishConfig(); await this.syncDependencies('dependencies'); diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 6cfdc6530b..a3f924408a 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -46,7 +46,6 @@ "cross-fetch": "^3.0.6" }, "files": [ - "dist", - "universal" + "dist" ] } From 07995f2ea042bb05879948148c6edd4b21390a87 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 19 Nov 2020 04:09:02 +0100 Subject: [PATCH 020/349] chore(git): messing around with git libraries --- plugins/scaffolder-backend/package.json | 7 +- .../src/scaffolder/stages/prepare/github.ts | 48 ++++++++----- yarn.lock | 72 ++++++++++++++++--- 3 files changed, 94 insertions(+), 33 deletions(-) diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 4bed7ea60c..09c4e0cd87 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -32,6 +32,7 @@ "command-exists-promise": "^2.0.2", "compression": "^1.7.4", "cors": "^2.8.5", + "cross-fetch": "^3.0.6", "dockerode": "^3.2.0", "express": "^4.17.1", "express-promise-router": "^3.0.3", @@ -39,20 +40,18 @@ "git-url-parse": "^11.4.0", "globby": "^11.0.0", "helmet": "^4.0.0", + "isomorphic-git": "^1.8.0", "jsonschema": "^1.2.6", "morgan": "^1.10.0", - "nodegit": "0.27.0", "uuid": "^8.2.0", "winston": "^3.2.1", - "yaml": "^1.10.0", - "cross-fetch": "^3.0.6" + "yaml": "^1.10.0" }, "devDependencies": { "@backstage/cli": "^0.2.0", "@octokit/types": "^5.4.1", "@types/fs-extra": "^9.0.1", "@types/git-url-parse": "^9.0.0", - "@types/nodegit": "0.26.11", "@types/supertest": "^2.0.8", "supertest": "^4.0.2", "yaml": "^1.10.0" diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index e6b41907be..a4ad4afe32 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -21,7 +21,8 @@ import { parseLocationAnnotation } from '../helpers'; import { InputError } from '@backstage/backend-common'; import { PreparerBase, PreparerOptions } from './types'; import GitUriParser from 'git-url-parse'; -import { Clone, CloneOptions, Cred } from 'nodegit'; +import git from 'isomorphic-git'; +import http from 'isomorphic-git/http/node'; export class GithubPreparer implements PreparerBase { token?: string; @@ -56,25 +57,36 @@ export class GithubPreparer implements PreparerBase { template.spec.path ?? '.', ); - let cloneOptions: CloneOptions = { - checkoutBranch: parsedGitLocation.ref, - }; - - if (token) { - cloneOptions = { - ...cloneOptions, - fetchOpts: { - callbacks: { - credentials() { - return Cred.userpassPlaintextNew(token, 'x-oauth-basic'); - }, - }, + console.warn(repositoryCheckoutUrl); + const finalplace = path.resolve(tempDir, templateDirectory); + try { + await git.clone({ + fs: require('fs'), + http, + url: repositoryCheckoutUrl, + dir: finalplace, + // corsProxy: 'https://cors.isomorphic-git.org', + singleBranch: true, + // need this header + headers: { + 'user-agent': 'git/@isomorphic-git/cors-proxy', }, - }; + depth: 1, + }); + // onAuth: () => ({ username: token, password: 'x-oauth-basic' }), + } catch (ex) { + console.warn(ex.data.url); + console.warn({ + fs: require('fs'), + http, + url: repositoryCheckoutUrl, + dir: templateDirectory, + depth: 1, + onAuth: () => ({ username: token, password: 'x-oauth-basic' }), + }); + throw ex; } - await Clone.clone(repositoryCheckoutUrl, tempDir, cloneOptions); - - return path.resolve(tempDir, templateDirectory); + return finalplace; } } diff --git a/yarn.lock b/yarn.lock index feacd32d97..3450a410c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5550,13 +5550,6 @@ resolved "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz#fe1cc3aa465a3ea6858b793fd380b66c39919766" integrity sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw== -"@types/nodegit@0.26.11": - version "0.26.11" - resolved "https://registry.npmjs.org/@types/nodegit/-/nodegit-0.26.11.tgz#0cbc5e929f23e5ffc536920e3a887e0b3f46d1a4" - integrity sha512-BGrY9F8lBtfU+Ne1Pjb9k/PUsfSCUAqPXgKkTkM6mc5213H5VAoM12zG/sz/cr3jI3AXcngNbAYWlqSrXsWJug== - dependencies: - "@types/node" "*" - "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -7134,6 +7127,11 @@ async-limiter@~1.0.0: resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-lock@^1.1.0: + version "1.2.4" + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" + integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== + async-retry@^1.2.1: version "1.3.1" resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" @@ -8534,6 +8532,11 @@ clean-css@^4.2.3: dependencies: source-map "~0.6.0" +clean-git-ref@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz#dcc0ca093b90e527e67adb5a5e55b1af6816dcd9" + integrity sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -9284,6 +9287,14 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -10330,6 +10341,11 @@ diff-sequences@^26.5.0: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.5.0.tgz#ef766cf09d43ed40406611f11c6d8d9dd8b2fefd" integrity sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q== +diff3@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz#d4e5c3a4cdf4e5fe1211ab42e693fcb4321580fc" + integrity sha1-1OXDpM305f4SEatC5pP8tDIVgPw= + diff@^4.0.1, diff@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -11407,6 +11423,11 @@ exit-hook@^1.0.0: resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + exit@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -14360,6 +14381,23 @@ isomorphic-form-data@~2.0.0: dependencies: form-data "^2.3.2" +isomorphic-git@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.8.0.tgz#50440650a64706a321cbea1af955c1cf1110b238" + integrity sha512-TWJvQh+++eFrEG0IFS/jLhMwsBoCOX1/Dsw9q8no59Mp1K0jEjSHXFWv2P04PwkxcIpePkXVBI5YFcFT2nkuQg== + dependencies: + async-lock "^1.1.0" + clean-git-ref "^2.0.1" + crc-32 "^1.2.0" + diff3 "0.0.3" + ignore "^5.1.4" + minimisted "^2.0.0" + pako "^1.0.10" + pify "^4.0.1" + readable-stream "^3.4.0" + sha.js "^2.4.9" + simple-get "^3.0.2" + isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" @@ -16629,6 +16667,13 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimisted@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz#d059fb905beecf0774bc3b308468699709805cb1" + integrity sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA== + dependencies: + minimist "^1.2.5" + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -17203,7 +17248,7 @@ node-request-interceptor@^0.5.1: debug "^4.1.1" headers-utils "^1.2.0" -nodegit@0.27.0, nodegit@^0.27.0: +nodegit@^0.27.0: version "0.27.0" resolved "https://registry.npmjs.org/nodegit/-/nodegit-0.27.0.tgz#4e8cc236f60e1c97324a5acff99056fe116a6ebe" integrity sha512-E9K4gPjWiA0b3Tx5lfWCzG7Cvodi2idl3V5UD2fZrOrHikIfrN7Fc2kWLtMUqqomyoToYJLeIC8IV7xb1CYRLA== @@ -17950,7 +17995,7 @@ packet-reader@1.0.0: resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== -pako@~1.0.5: +pako@^1.0.10, pako@~1.0.5: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -19111,6 +19156,11 @@ pretty-hrtime@^1.0.3: resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + prismjs@^1.21.0, prismjs@^1.8.4, prismjs@~1.21.0: version "1.21.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz#36c086ec36b45319ec4218ee164c110f9fc015a3" @@ -21270,7 +21320,7 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8, sha.js@^2.4.9: version "2.4.11" resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -21382,7 +21432,7 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^3.0.3: +simple-get@^3.0.2, simple-get@^3.0.3: version "3.1.0" resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== From 572b61825989fc42c4013beb7f9077f3ddf4092e Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 1 Dec 2020 13:44:32 +0100 Subject: [PATCH 021/349] chore(scaffolder): remove extra logging stuff --- .../src/scaffolder/stages/prepare/github.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index a4ad4afe32..1eef5397de 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -57,24 +57,23 @@ export class GithubPreparer implements PreparerBase { template.spec.path ?? '.', ); - console.warn(repositoryCheckoutUrl); - const finalplace = path.resolve(tempDir, templateDirectory); + const checkoutLocation = path.resolve(tempDir, templateDirectory); + try { await git.clone({ fs: require('fs'), http, url: repositoryCheckoutUrl, - dir: finalplace, - // corsProxy: 'https://cors.isomorphic-git.org', + dir: checkoutLocation, singleBranch: true, - // need this header - headers: { - 'user-agent': 'git/@isomorphic-git/cors-proxy', - }, depth: 1, + onAuth: () => ({ username: token, password: 'x-oauth-basic' }), }); - // onAuth: () => ({ username: token, password: 'x-oauth-basic' }), } catch (ex) { + opts.logger.error( + `Failed checking out repository:${repositoryCheckoutUrl}`, + ); + opts.logger.error(ex.message); console.warn(ex.data.url); console.warn({ fs: require('fs'), @@ -87,6 +86,6 @@ export class GithubPreparer implements PreparerBase { throw ex; } - return finalplace; + return checkoutLocation; } } From f393f300e565a50fc20fca8c9cf2ac2abe14e978 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 1 Dec 2020 20:04:36 +0100 Subject: [PATCH 022/349] chore: refactiring the on progress callback so we can see more ata and failures --- .../src/scaffolder/stages/prepare/github.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index 1eef5397de..ff814c20ba 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -67,22 +67,22 @@ export class GithubPreparer implements PreparerBase { dir: checkoutLocation, singleBranch: true, depth: 1, + onProgress: event => { + const total = event.total + ? `${event.loaded / event.total}%` + : event.loaded; + opts.logger.info({ status: event.phase, total }); + }, + headers: { + 'user-agent': 'git/@isomorphic-git', + }, onAuth: () => ({ username: token, password: 'x-oauth-basic' }), }); } catch (ex) { opts.logger.error( - `Failed checking out repository:${repositoryCheckoutUrl}`, + `Failed checking out repository: ${repositoryCheckoutUrl}`, ); opts.logger.error(ex.message); - console.warn(ex.data.url); - console.warn({ - fs: require('fs'), - http, - url: repositoryCheckoutUrl, - dir: templateDirectory, - depth: 1, - onAuth: () => ({ username: token, password: 'x-oauth-basic' }), - }); throw ex; } From a5414403bd15232a231fd44ba67c233852d9b05c Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 1 Dec 2020 21:07:20 +0100 Subject: [PATCH 023/349] chore: reworking more of the github flow so that we can move to isomorphic git instead of nodegit :() --- .../src/scaffolder/stages/prepare/github.ts | 2 +- .../src/scaffolder/stages/publish/github.ts | 12 ++-- .../src/scaffolder/stages/publish/helpers.ts | 68 ++++++++++--------- 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index ff814c20ba..f202c609cc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -61,7 +61,7 @@ export class GithubPreparer implements PreparerBase { try { await git.clone({ - fs: require('fs'), + fs, http, url: repositoryCheckoutUrl, dir: checkoutLocation, diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts index d5542e8800..0306bb72e9 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts @@ -16,7 +16,7 @@ import { PublisherBase } from './types'; import { Octokit } from '@octokit/rest'; -import { pushToRemoteUserPass } from './helpers'; +import { pushToRemoteCred } from './helpers'; import { JsonValue } from '@backstage/config'; import { RequiredTemplateValues } from '../templater'; @@ -51,12 +51,10 @@ export class GithubPublisher implements PublisherBase { directory: string; }): Promise<{ remoteUrl: string }> { const remoteUrl = await this.createRemote(values); - await pushToRemoteUserPass( - directory, - remoteUrl, - this.token, - 'x-oauth-basic', - ); + await pushToRemoteCred(directory, remoteUrl, { + username: this.token, + password: 'x-auth-basic', + }); return { remoteUrl }; } diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts index 51f5a4c854..61e76a31be 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts @@ -13,43 +13,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Repository, Remote, Signature, Cred } from 'nodegit'; + +import git from 'isomorphic-git'; +import globby from 'globby'; +import fs from 'fs'; +import http from 'isomorphic-git/http/node'; export async function pushToRemoteCred( - directory: string, + dir: string, remote: string, - credentialsProvider: () => Cred, + auth?: { username: string; password: string }, ): Promise { - const repo = await Repository.init(directory, 0); - const index = await repo.refreshIndex(); - await index.addAll(); - await index.write(); - const oid = await index.writeTree(); - await repo.createCommit( - 'HEAD', - Signature.now('Scaffolder', 'scaffolder@backstage.io'), - Signature.now('Scaffolder', 'scaffolder@backstage.io'), - 'initial commit', - oid, - [], - ); + await git.init({ + fs, + dir, + }); - const remoteRepo = await Remote.create(repo, 'origin', remote); + const paths = await globby(['./**', './**/.*'], { gitignore: true }); + for (const filepath of paths) { + await git.add({ fs, dir, filepath }); + } - await remoteRepo.push(['refs/heads/master:refs/heads/master'], { - callbacks: { - credentials: credentialsProvider, - }, + await git.commit({ + fs, + dir, + message: 'Initial commit', + author: { name: 'Scaffolder', email: 'scaffolder@backstage.io' }, + committer: { name: 'Scaffolder', email: 'scaffolder@backstage.io' }, + }); + + await git.addRemote({ + fs, + dir, + remote: 'origin', + url: remote, + }); + + await git.push({ + fs, + dir, + http, + remote: 'origin', + onAuth: () => auth, }); } - -export async function pushToRemoteUserPass( - directory: string, - remote: string, - username: string, - password: string, -): Promise { - return pushToRemoteCred(directory, remote, () => - Cred.userpassPlaintextNew(username, password), - ); -} From d1f588a38b956128339b8833fa5b05dc2d9c17e1 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 1 Dec 2020 21:36:35 +0100 Subject: [PATCH 024/349] chore: pushing works with github! --- .../src/scaffolder/stages/publish/github.ts | 1 + .../src/scaffolder/stages/publish/helpers.ts | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts index 0306bb72e9..1b7852adcc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts @@ -54,6 +54,7 @@ export class GithubPublisher implements PublisherBase { await pushToRemoteCred(directory, remoteUrl, { username: this.token, password: 'x-auth-basic', + token: this.token, }); return { remoteUrl }; diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts index 61e76a31be..8e76649989 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts @@ -19,17 +19,28 @@ import globby from 'globby'; import fs from 'fs'; import http from 'isomorphic-git/http/node'; +/* +username password +GitHub | token 'x-oauth-basic' +GitHub App | token 'x-access-token' +BitBucket | 'x-token-auth' token +GitLab | 'oauth2' token +From : https://isomorphic-git.org/docs/en/onAuth +*/ export async function pushToRemoteCred( dir: string, remote: string, - auth?: { username: string; password: string }, + auth?: { username: string; password: string; token: string }, ): Promise { await git.init({ fs, dir, }); - const paths = await globby(['./**', './**/.*'], { gitignore: true }); + const paths = await globby(['./**', './**/.*'], { + cwd: dir, + gitignore: true, + }); for (const filepath of paths) { await git.add({ fs, dir, filepath }); } @@ -49,11 +60,15 @@ export async function pushToRemoteCred( url: remote, }); + console.warn({ username: auth.token, password: 'x-oauth-basic' }); await git.push({ fs, dir, http, + headers: { + 'user-agent': 'git/@isomorphic-git', + }, remote: 'origin', - onAuth: () => auth, + onAuth: () => ({ username: auth.token, password: 'x-oauth-basic' }), }); } From 462591800b5c69fa11baf219dbe5ccb9a34ca932 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Dec 2020 04:45:43 +0000 Subject: [PATCH 025/349] build(deps): bump jose from 1.27.1 to 3.2.0 Bumps [jose](https://github.com/panva/jose) from 1.27.1 to 3.2.0. - [Release notes](https://github.com/panva/jose/releases) - [Changelog](https://github.com/panva/jose/blob/master/CHANGELOG.md) - [Commits](https://github.com/panva/jose/compare/v1.27.1...v3.2.0) Signed-off-by: dependabot[bot] --- plugins/auth-backend/package.json | 2 +- yarn.lock | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index a0e0e0f56f..dfc1b6cd97 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -35,7 +35,7 @@ "fs-extra": "^9.0.0", "got": "^11.5.2", "helmet": "^4.0.0", - "jose": "^1.27.1", + "jose": "^3.2.0", "jwt-decode": "^3.1.0", "knex": "^0.21.6", "moment": "^2.26.0", diff --git a/yarn.lock b/yarn.lock index 5c2a8253d3..bbc292d6d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15149,13 +15149,6 @@ jest@^26.0.1: import-local "^3.0.2" jest-cli "^26.5.3" -jose@^1.27.1: - version "1.27.1" - resolved "https://registry.npmjs.org/jose/-/jose-1.27.1.tgz#a1de2ecb5b3ae1ae28f0d9d0cc536349ada27ec8" - integrity sha512-VyHM6IJPw0TTGqHVNlPWg16/ASDPAmcChcLqSb3WNBvwWFoWPeFqlmAUCm8/oIG1GjZwAlUDuRKFfycowarcVA== - dependencies: - "@panva/asn1.js" "^1.0.0" - jose@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/jose/-/jose-2.0.2.tgz#fb22385b80c658cc7a0cae05b7086c04c6be49f4" @@ -15163,6 +15156,11 @@ jose@^2.0.2: dependencies: "@panva/asn1.js" "^1.0.0" +jose@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jose/-/jose-3.2.0.tgz#cdf41918c00a1511cbbb89667ef033c68b1015ef" + integrity sha512-H7Ho/MP9YBiFTHibyvak8rxn+gSr9ZngUEcvnk5XxoPF4Ler05z3NtRZrU0VzjRx6J00YZgZ7VSgsuPWtE/LFw== + joycon@^2.2.5: version "2.2.5" resolved "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" From c15ccbff5182df181c691c0f3ebf4eccea0f07b1 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Thu, 3 Dec 2020 09:12:14 +0100 Subject: [PATCH 026/349] Create new GitHub release when a new tag is created --- .github/workflows/create-github-release.yml | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/create-github-release.yml diff --git a/.github/workflows/create-github-release.yml b/.github/workflows/create-github-release.yml new file mode 100644 index 0000000000..e3c6a4e80b --- /dev/null +++ b/.github/workflows/create-github-release.yml @@ -0,0 +1,25 @@ +# New tags and releases are created by changeset https://github.com/atlassian/changesets +name: Create a new release on GitHub when a new tag is created + +on: + push: + tags: + - 'v*' # Push events to matching v*, i.e. v0.4.0, v1.1.0 + +jobs: + build: + name: Create a new release on GitHub when a new tag is created + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Create release on GitHub + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + body: 'Changelog https://github.com/backstage/backstage/blob/master/CHANGELOG.md' + draft: false + prerelease: false From f9f4846a58876d9b2f9bdc99497713309d140296 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Dec 2020 18:10:39 +0100 Subject: [PATCH 027/349] chore: add back nodegit for testing --- plugins/scaffolder-backend/package.json | 2 ++ yarn.lock | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 09c4e0cd87..ce740f0ec2 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -43,6 +43,7 @@ "isomorphic-git": "^1.8.0", "jsonschema": "^1.2.6", "morgan": "^1.10.0", + "nodegit": "^0.27.0", "uuid": "^8.2.0", "winston": "^3.2.1", "yaml": "^1.10.0" @@ -52,6 +53,7 @@ "@octokit/types": "^5.4.1", "@types/fs-extra": "^9.0.1", "@types/git-url-parse": "^9.0.0", + "@types/nodegit": "^0.26.12", "@types/supertest": "^2.0.8", "supertest": "^4.0.2", "yaml": "^1.10.0" diff --git a/yarn.lock b/yarn.lock index 3450a410c2..26bf43335c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1290,40 +1290,34 @@ to-fast-properties "^2.0.0" "@backstage/core@^0.2.0": - version "0.3.0" + version "0.2.0" + resolved "https://registry.npmjs.org/@backstage/core/-/core-0.2.0.tgz#543246b2d87563c9aa4d9fb96e40fdfc7e827520" + integrity sha512-75m2u3FoUngBOvt9l65xZcYTzzB+49OXpY1A9VNFUR1+jMs3cL/0HDfByQV2H0xXaHzMngQ8C5u/sWhkQsij1w== dependencies: "@backstage/config" "^0.1.1" - "@backstage/core-api" "^0.2.1" - "@backstage/theme" "^0.2.1" + "@backstage/core-api" "^0.2.0" + "@backstage/theme" "^0.2.0" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" - "@types/dagre" "^0.7.44" "@types/react" "^16.9" "@types/react-sparklines" "^1.7.0" classnames "^2.2.6" clsx "^1.1.0" - d3-selection "^2.0.0" - d3-shape "^2.0.0" - d3-zoom "^2.0.0" - dagre "^0.8.5" immer "^7.0.9" lodash "^4.17.15" material-table "^1.69.1" prop-types "^15.7.2" - qs "^6.9.4" rc-progress "^3.0.0" react "^16.12.0" react-dom "^16.12.0" react-helmet "6.1.0" react-hook-form "^6.6.0" - react-markdown "^5.0.2" react-router "6.0.0-beta.0" react-router-dom "6.0.0-beta.0" react-sparklines "^1.7.0" react-syntax-highlighter "^13.5.1" react-use "^15.3.3" - remark-gfm "^1.0.0" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -5550,6 +5544,13 @@ resolved "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz#fe1cc3aa465a3ea6858b793fd380b66c39919766" integrity sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw== +"@types/nodegit@^0.26.12": + version "0.26.12" + resolved "https://registry.npmjs.org/@types/nodegit/-/nodegit-0.26.12.tgz#93afb4cb85d3a48d392c3232699c9c07d8251a36" + integrity sha512-4YpeTImFZNJ1cve4lEueHFVS8rAs8XpZqlmx+Bm9bMc+XMiCrcwaUf6peN7pod7Rl3esVlGP1zdBB7Z12eMVAA== + dependencies: + "@types/node" "*" + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" From 7cfcd58eef1b02d951e814101abebbc7197fb331 Mon Sep 17 00:00:00 2001 From: Omer Levi Hevroni Date: Sun, 6 Dec 2020 11:12:17 +0200 Subject: [PATCH 028/349] chore: use node 14 for backend dockerfile --- .changeset/chilled-pigs-destroy.md | 5 +++++ packages/backend/Dockerfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/chilled-pigs-destroy.md diff --git a/.changeset/chilled-pigs-destroy.md b/.changeset/chilled-pigs-destroy.md new file mode 100644 index 0000000000..15e9cad18e --- /dev/null +++ b/.changeset/chilled-pigs-destroy.md @@ -0,0 +1,5 @@ +--- +'example-backend': patch +--- + +use node 14 for backend dockerfile diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index 1aa5a355cf..f1bc764fd0 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:12-buster +FROM node:14-buster WORKDIR /usr/src/app From 15e5d6a76398eb414b8d41e533eb1aa1f392c710 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 7 Dec 2020 13:26:02 +0100 Subject: [PATCH 029/349] feat: use better logging for the publish step and the new helper with isomorphic-git --- .../src/scaffolder/stages/prepare/github.ts | 4 ++-- .../src/scaffolder/stages/publish/github.ts | 6 +++--- .../src/scaffolder/stages/publish/helpers.ts | 19 +++++++++++++++---- .../src/scaffolder/stages/publish/types.ts | 2 ++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index f202c609cc..8e5581d63d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -69,9 +69,9 @@ export class GithubPreparer implements PreparerBase { depth: 1, onProgress: event => { const total = event.total - ? `${event.loaded / event.total}%` + ? `${Math.round((event.loaded / event.total) * 100)}%` : event.loaded; - opts.logger.info({ status: event.phase, total }); + opts.logger.info(`status={${event.phase},total={${total}}}`); }, headers: { 'user-agent': 'git/@isomorphic-git', diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts index 612e676207..e262c59274 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts @@ -46,13 +46,13 @@ export class GithubPublisher implements PublisherBase { async publish({ values, directory, + logger, }: PublisherOptions): Promise { const remoteUrl = await this.createRemote(values); - await pushToRemoteCred(directory, remoteUrl, { + await pushToRemoteCred(directory, remoteUrl, logger, { username: this.token, - password: 'x-auth-basic', - token: this.token, + password: 'x-oauth-basic', }); const catalogInfoUrl = remoteUrl.replace( diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts index 8e76649989..39b1513d2e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts @@ -18,7 +18,7 @@ import git from 'isomorphic-git'; import globby from 'globby'; import fs from 'fs'; import http from 'isomorphic-git/http/node'; - +import { Logger } from 'winston'; /* username password GitHub | token 'x-oauth-basic' @@ -30,8 +30,10 @@ From : https://isomorphic-git.org/docs/en/onAuth export async function pushToRemoteCred( dir: string, remote: string, - auth?: { username: string; password: string; token: string }, + logger: Logger, + auth: { username: string; password: string }, ): Promise { + logger.info('Initializing Git Repo', dir); await git.init({ fs, dir, @@ -41,10 +43,13 @@ export async function pushToRemoteCred( cwd: dir, gitignore: true, }); + + logger.info('Adding files to repository', dir); for (const filepath of paths) { await git.add({ fs, dir, filepath }); } + logger.info('Creating commit', dir); await git.commit({ fs, dir, @@ -60,7 +65,7 @@ export async function pushToRemoteCred( url: remote, }); - console.warn({ username: auth.token, password: 'x-oauth-basic' }); + logger.info('Pushing code to remote', remote); await git.push({ fs, dir, @@ -68,7 +73,13 @@ export async function pushToRemoteCred( headers: { 'user-agent': 'git/@isomorphic-git', }, + onProgress: event => { + const total = event.total + ? `${Math.round((event.loaded / event.total) * 100)}%` + : event.loaded; + logger.info(`status={${event.phase},total={${total}}}`); + }, remote: 'origin', - onAuth: () => ({ username: auth.token, password: 'x-oauth-basic' }), + onAuth: () => auth, }); } diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts index f3bc59e19d..bc6b63cc57 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts @@ -17,6 +17,7 @@ import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { RequiredTemplateValues } from '../templater'; import { JsonValue } from '@backstage/config'; import { RemoteProtocol } from '../types'; +import { Logger } from 'winston'; /** * Publisher is in charge of taking a folder created by @@ -34,6 +35,7 @@ export type PublisherBase = { export type PublisherOptions = { values: RequiredTemplateValues & Record; + logger: Logger; directory: string; }; From 9d7af28e8725d13b04c318ae27ff6e505cf360e9 Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:10:39 +0100 Subject: [PATCH 030/349] add AboutCard and IconLinkVertical to core --- .../src/components/AboutCard/AboutCard.tsx | 72 ++++++++++++ .../components/AboutCard/IconLinkVertical.tsx | 104 ++++++++++++++++++ .../src/components/AboutCard/SubHeader.tsx | 44 ++++++++ .../core/src/components/AboutCard/index.ts | 18 +++ .../core/src/components/AboutCard/types.ts | 24 ++++ 5 files changed, 262 insertions(+) create mode 100644 packages/core/src/components/AboutCard/AboutCard.tsx create mode 100644 packages/core/src/components/AboutCard/IconLinkVertical.tsx create mode 100644 packages/core/src/components/AboutCard/SubHeader.tsx create mode 100644 packages/core/src/components/AboutCard/index.ts create mode 100644 packages/core/src/components/AboutCard/types.ts diff --git a/packages/core/src/components/AboutCard/AboutCard.tsx b/packages/core/src/components/AboutCard/AboutCard.tsx new file mode 100644 index 0000000000..e18894f3fb --- /dev/null +++ b/packages/core/src/components/AboutCard/AboutCard.tsx @@ -0,0 +1,72 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { + Card, + CardContent, + CardHeader, + Divider, + makeStyles, +} from '@material-ui/core'; +import { SubHeader } from './SubHeader'; +import { SubHeaderLink } from './types'; + +const useStyles = makeStyles({ + gridItemCard: { + display: 'flex', + flexDirection: 'column', + height: 'calc(100% - 10px)', // for pages without content header + marginBottom: '10px', + }, + gridItemCardContent: { + flex: 1, + }, +}); + +type Props = { + title: string; + headerClass?: string; + headerAction?: React.ReactNode; + links: SubHeaderLink[]; + contentClass?: string; + content: React.ReactNode; + variant?: string; +}; + +export const AboutCard = ({ + title, + headerAction, + links, + content, + variant, +}: Props) => { + const classes = useStyles(); + return ( + + } + /> + + + {content} + + + ); +}; diff --git a/packages/core/src/components/AboutCard/IconLinkVertical.tsx b/packages/core/src/components/AboutCard/IconLinkVertical.tsx new file mode 100644 index 0000000000..f935d2fa6e --- /dev/null +++ b/packages/core/src/components/AboutCard/IconLinkVertical.tsx @@ -0,0 +1,104 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import classnames from 'classnames'; +import { makeStyles, Link } from '@material-ui/core'; +import LinkIcon from '@material-ui/icons/Link'; +import { Link as RouterLink } from 'react-router-dom'; + +type IconLinkVerticalProps = { + icon?: React.ReactNode; + href?: string; + disabled?: boolean; + title?: string; + label: string; + action?: React.ReactNode; +}; + +const useIconStyles = makeStyles(theme => ({ + link: { + display: 'grid', + justifyItems: 'center', + gridGap: 4, + textAlign: 'center', + }, + disabled: { + color: 'gray', + }, + label: { + fontSize: '0.7rem', + textTransform: 'uppercase', + fontWeight: 600, + letterSpacing: 1.2, + }, + linkStyle: { + color: theme.palette.secondary.main, + }, +})); + +export function IconLinkVertical({ + icon = , + href = '#', + disabled = false, + action, + ...props +}: IconLinkVerticalProps) { + const classes = useIconStyles(); + + if (disabled) { + return ( + + {icon} + {props.label} + + ); + } + + if (action) { + return ( + + {icon} + {action} + + ); + } + + // Absolute links should not be using RouterLink + if (href?.startsWith('//') || href?.includes('://')) { + return ( + + {icon} + {props.label} + + ); + } + + return ( + + {icon} + {props.label} + + ); +} diff --git a/packages/core/src/components/AboutCard/SubHeader.tsx b/packages/core/src/components/AboutCard/SubHeader.tsx new file mode 100644 index 0000000000..861821f89b --- /dev/null +++ b/packages/core/src/components/AboutCard/SubHeader.tsx @@ -0,0 +1,44 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { IconLinkVertical } from './IconLinkVertical'; +import { SubHeaderLink } from './types'; +import { makeStyles } from '@material-ui/core'; + +const useStyles = makeStyles(theme => ({ + links: { + margin: theme.spacing(2, 0), + display: 'grid', + gridAutoFlow: 'column', + gridAutoColumns: 'min-content', + gridGap: theme.spacing(3), + }, +})); + +type Props = { + links: SubHeaderLink[]; +}; + +export const SubHeader = ({ links }: Props) => { + const classes = useStyles(); + return ( + + ); +}; diff --git a/packages/core/src/components/AboutCard/index.ts b/packages/core/src/components/AboutCard/index.ts new file mode 100644 index 0000000000..0491d467f8 --- /dev/null +++ b/packages/core/src/components/AboutCard/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { AboutCard } from './AboutCard'; +export { IconLinkVertical } from './IconLinkVertical'; diff --git a/packages/core/src/components/AboutCard/types.ts b/packages/core/src/components/AboutCard/types.ts new file mode 100644 index 0000000000..e1c3948797 --- /dev/null +++ b/packages/core/src/components/AboutCard/types.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type SubHeaderLink = { + icon?: React.ReactNode; + href?: string; + disabled?: boolean; + title?: string; + label: string; + action?: React.ReactNode; + edithref?: string; +}; From 97c3a71d568490a2610c49012b55f2164766cc3a Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:13:47 +0100 Subject: [PATCH 031/349] remove IconLinkVertical from catalog --- .../IconLinkVertical/IconLinkVertical.tsx | 86 ------------------- .../AboutCard/IconLinkVertical/index.ts | 17 ---- 2 files changed, 103 deletions(-) delete mode 100644 plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx delete mode 100644 plugins/catalog/src/components/AboutCard/IconLinkVertical/index.ts diff --git a/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx b/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx deleted file mode 100644 index dd267dde35..0000000000 --- a/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as React from 'react'; -import classnames from 'classnames'; -import { makeStyles, Link } from '@material-ui/core'; -import LinkIcon from '@material-ui/icons/Link'; -import { Link as RouterLink } from 'react-router-dom'; - -export type IconLinkVerticalProps = { - icon?: React.ReactNode; - href?: string; - disabled?: boolean; - title?: string; - label: string; -}; - -const useIconStyles = makeStyles({ - link: { - display: 'grid', - justifyItems: 'center', - gridGap: 4, - textAlign: 'center', - }, - disabled: { - color: 'gray', - }, - label: { - fontSize: '0.7rem', - textTransform: 'uppercase', - fontWeight: 600, - letterSpacing: 1.2, - }, -}); - -export function IconLinkVertical({ - icon = , - href = '#', - disabled = false, - ...props -}: IconLinkVerticalProps) { - const classes = useIconStyles(); - - if (disabled) { - return ( - - {icon} - {props.label} - - ); - } - - // Absolute links should not be using RouterLink - if (href?.startsWith('//') || href?.includes('://')) { - return ( - - {icon} - {props.label} - - ); - } - - return ( - - {icon} - {props.label} - - ); -} diff --git a/plugins/catalog/src/components/AboutCard/IconLinkVertical/index.ts b/plugins/catalog/src/components/AboutCard/IconLinkVertical/index.ts deleted file mode 100644 index ddc146dbd8..0000000000 --- a/plugins/catalog/src/components/AboutCard/IconLinkVertical/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { IconLinkVertical } from './IconLinkVertical'; From 4c8097894a958dac21424f7fb8799b73e85983d2 Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:18:23 +0100 Subject: [PATCH 032/349] remove AboutCard from pagerduty --- .../src/components/About/AboutCard.tsx | 33 ------- .../src/components/About/SubHeader.tsx | 50 ----------- .../src/components/About/VerticalIcon.tsx | 85 ------------------- .../pagerduty/src/components/About/index.ts | 19 ----- 4 files changed, 187 deletions(-) delete mode 100644 plugins/pagerduty/src/components/About/AboutCard.tsx delete mode 100644 plugins/pagerduty/src/components/About/SubHeader.tsx delete mode 100644 plugins/pagerduty/src/components/About/VerticalIcon.tsx delete mode 100644 plugins/pagerduty/src/components/About/index.ts diff --git a/plugins/pagerduty/src/components/About/AboutCard.tsx b/plugins/pagerduty/src/components/About/AboutCard.tsx deleted file mode 100644 index 7d5419908a..0000000000 --- a/plugins/pagerduty/src/components/About/AboutCard.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { Card, CardContent, CardHeader, Divider } from '@material-ui/core'; -import { SubHeader } from './SubHeader'; -import { SubHeaderLink } from '../types'; - -type Props = { - title: string; - links: SubHeaderLink[]; - content: React.ReactNode; -}; - -export const AboutCard = ({ title, links, content }: Props) => ( - - } /> - - {content} - -); diff --git a/plugins/pagerduty/src/components/About/SubHeader.tsx b/plugins/pagerduty/src/components/About/SubHeader.tsx deleted file mode 100644 index 5e4ea96fe0..0000000000 --- a/plugins/pagerduty/src/components/About/SubHeader.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { VerticalIcon } from './VerticalIcon'; -import { SubHeaderLink } from '../types'; -import { makeStyles } from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - links: { - margin: theme.spacing(2, 0), - display: 'grid', - gridAutoFlow: 'column', - gridAutoColumns: 'min-content', - gridGap: theme.spacing(3), - }, -})); - -type Props = { - links: SubHeaderLink[]; -}; - -export const SubHeader = ({ links }: Props) => { - const classes = useStyles(); - return ( - - ); -}; diff --git a/plugins/pagerduty/src/components/About/VerticalIcon.tsx b/plugins/pagerduty/src/components/About/VerticalIcon.tsx deleted file mode 100644 index 5463372ac0..0000000000 --- a/plugins/pagerduty/src/components/About/VerticalIcon.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import classnames from 'classnames'; -import { makeStyles, Link } from '@material-ui/core'; -import LinkIcon from '@material-ui/icons/Link'; -import { Link as RouterLink } from 'react-router-dom'; - -export type VerticalIconProps = { - icon?: React.ReactNode; - href?: string; - title?: string; - label: string; - action?: React.ReactNode; -}; - -const useIconStyles = makeStyles(theme => ({ - link: { - display: 'grid', - justifyItems: 'center', - gridGap: 4, - textAlign: 'center', - }, - label: { - fontSize: '0.7rem', - textTransform: 'uppercase', - fontWeight: 600, - letterSpacing: 1.2, - }, - linkStyle: { - color: theme.palette.secondary.main, - }, -})); - -export function VerticalIcon({ - icon = , - href = '#', - action, - ...props -}: VerticalIconProps) { - const classes = useIconStyles(); - - if (action) { - return ( - - {icon} - {action} - - ); - } - - // Absolute links should not be using RouterLink - if (href?.startsWith('//') || href?.includes('://')) { - return ( - - {icon} - {props.label} - - ); - } - - return ( - - {icon} - {props.label} - - ); -} diff --git a/plugins/pagerduty/src/components/About/index.ts b/plugins/pagerduty/src/components/About/index.ts deleted file mode 100644 index 4e495daa54..0000000000 --- a/plugins/pagerduty/src/components/About/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { AboutCard } from './AboutCard'; -// export { SubHeader } from './SubHeader'; -// export { VerticalIcon } from './VerticalIcon'; From 7e6debad673b6e829ad256bc0264c83722267966 Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:24:06 +0100 Subject: [PATCH 033/349] add AboutCard to core --- packages/core/src/components/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/src/components/index.ts b/packages/core/src/components/index.ts index bcc56debea..8664b79c6f 100644 --- a/packages/core/src/components/index.ts +++ b/packages/core/src/components/index.ts @@ -37,3 +37,4 @@ export * from './TrendLine'; export * from './WarningPanel'; export * from './EmptyState'; export * from './MarkdownContent'; +export * from './AboutCard'; From f9f59f9b4b197a7e289666619327c00fa893c46e Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:27:53 +0100 Subject: [PATCH 034/349] remove IconLinkVertical from catalog --- plugins/catalog/src/components/AboutCard/index.ts | 1 - plugins/catalog/src/index.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/catalog/src/components/AboutCard/index.ts b/plugins/catalog/src/components/AboutCard/index.ts index 0491d467f8..93765ff942 100644 --- a/plugins/catalog/src/components/AboutCard/index.ts +++ b/plugins/catalog/src/components/AboutCard/index.ts @@ -15,4 +15,3 @@ */ export { AboutCard } from './AboutCard'; -export { IconLinkVertical } from './IconLinkVertical'; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index 5949209128..606ad9028d 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -15,7 +15,7 @@ */ export * from '@backstage/catalog-client'; -export { AboutCard, IconLinkVertical } from './components/AboutCard'; +export { AboutCard } from './components/AboutCard'; export { EntityPageLayout } from './components/EntityPageLayout'; export { Router } from './components/Router'; export { useEntityCompoundName } from './components/useEntityCompoundName'; From f59f7c2fe77bade185540273a3a687451ee5e659 Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:29:52 +0100 Subject: [PATCH 035/349] refactor code: add AboutContent and AboutField to catalog --- .../src/components/AboutCard/AboutContent.tsx | 83 +++++++++++++++++++ .../src/components/AboutCard/AboutField.tsx | 64 ++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 plugins/catalog/src/components/AboutCard/AboutContent.tsx create mode 100644 plugins/catalog/src/components/AboutCard/AboutField.tsx diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx new file mode 100644 index 0000000000..b8d5d84316 --- /dev/null +++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx @@ -0,0 +1,83 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { Grid, Typography, Chip, makeStyles } from '@material-ui/core'; +import { AboutField } from './AboutField'; +import { + Entity, + ENTITY_DEFAULT_NAMESPACE, + RELATION_OWNED_BY, + serializeEntityRef, +} from '@backstage/catalog-model'; + +const useStyles = makeStyles({ + description: { + wordBreak: 'break-word', + }, +}); + +type Props = { + entity: Entity; +}; + +export const AboutContent = ({ entity }: Props) => { + const classes = useStyles(); + return ( + + + + {entity?.metadata?.description || 'No description'} + + + r.type === RELATION_OWNED_BY) + .map(({ target: { kind, name, namespace } }) => + // TODO(Rugvip): we want to provide some utils for this + serializeEntityRef({ + kind, + name, + namespace: + namespace === ENTITY_DEFAULT_NAMESPACE ? undefined : namespace, + }), + ) + .join(', ')} + gridSizes={{ xs: 12, sm: 6, lg: 4 }} + /> + + + + {(entity?.metadata?.tags || []).map(t => ( + + ))} + + + ); +}; diff --git a/plugins/catalog/src/components/AboutCard/AboutField.tsx b/plugins/catalog/src/components/AboutCard/AboutField.tsx new file mode 100644 index 0000000000..fdcb3ace1b --- /dev/null +++ b/plugins/catalog/src/components/AboutCard/AboutField.tsx @@ -0,0 +1,64 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { makeStyles, Typography, Grid } from '@material-ui/core'; + +const useStyles = makeStyles(theme => ({ + value: { + fontWeight: 'bold', + overflow: 'hidden', + lineHeight: '24px', + wordBreak: 'break-word', + }, + label: { + color: theme.palette.text.secondary, + textTransform: 'uppercase', + fontSize: '10px', + fontWeight: 'bold', + letterSpacing: 0.5, + overflow: 'hidden', + whiteSpace: 'nowrap', + }, +})); + +type Props = { + label: string; + value?: string; + gridSizes?: Record; + children?: React.ReactNode; +}; + +export const AboutField = ({ label, value, gridSizes, children }: Props) => { + const classes = useStyles(); + + // Content is either children or a string prop `value` + const content = React.Children.count(children) ? ( + children + ) : ( + + {value || `unknown`} + + ); + return ( + + + {label} + + {content} + + ); +}; From 5cd9ac16ae9fd66c7b185eedc70687395884d4d0 Mon Sep 17 00:00:00 2001 From: Samira Mokaram Date: Fri, 11 Dec 2020 17:32:42 +0100 Subject: [PATCH 036/349] use AboutCard in pagerduty and catalog --- .../src/components/AboutCard/AboutCard.tsx | 218 ++++-------------- .../src/components/PagerDutyCard.tsx | 7 +- 2 files changed, 42 insertions(+), 183 deletions(-) diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 49653fe981..cf85cee66a 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -17,66 +17,18 @@ import { Entity, ENTITY_DEFAULT_NAMESPACE, - RELATION_OWNED_BY, RELATION_PROVIDES_API, - serializeEntityRef, } from '@backstage/catalog-model'; -import { - Card, - CardContent, - CardHeader, - Chip, - Divider, - Grid, - IconButton, - makeStyles, - Typography, -} from '@material-ui/core'; +import { IconButton } from '@material-ui/core'; import ExtensionIcon from '@material-ui/icons/Extension'; import DocsIcon from '@material-ui/icons/Description'; import EditIcon from '@material-ui/icons/Edit'; import GitHubIcon from '@material-ui/icons/GitHub'; import React from 'react'; -import { IconLinkVertical } from './IconLinkVertical'; import { findLocationForEntityMeta } from '../../data/utils'; import { createEditLink, determineUrlType } from '../createEditLink'; - -const useStyles = makeStyles(theme => ({ - links: { - margin: theme.spacing(2, 0), - display: 'grid', - gridAutoFlow: 'column', - gridAutoColumns: 'min-content', - gridGap: theme.spacing(3), - }, - label: { - color: theme.palette.text.secondary, - textTransform: 'uppercase', - fontSize: '10px', - fontWeight: 'bold', - letterSpacing: 0.5, - overflow: 'hidden', - whiteSpace: 'nowrap', - }, - value: { - fontWeight: 'bold', - overflow: 'hidden', - lineHeight: '24px', - wordBreak: 'break-word', - }, - description: { - wordBreak: 'break-word', - }, - gridItemCard: { - display: 'flex', - flexDirection: 'column', - height: 'calc(100% - 10px)', // for pages without content header - marginBottom: '10px', - }, - gridItemCardContent: { - flex: 1, - }, -})); +import { AboutCard as CoreAboutCard } from '@backstage/core'; +import { AboutContent } from './AboutContent'; const iconMap: Record = { github: , @@ -110,138 +62,46 @@ type AboutCardProps = { }; export function AboutCard({ entity, variant }: AboutCardProps) { - const classes = useStyles(); const codeLink = getCodeLinkInfo(entity); // TODO: Also support RELATION_CONSUMES_API here const hasApis = entity.relations?.some(r => r.type === RELATION_PROVIDES_API); + const viewInSource = { + label: 'View Source', + ...codeLink, + }; + const viewInTechDocs = { + label: 'View TechDocs', + disabled: !entity.metadata.annotations?.['backstage.io/techdocs-ref'], + icon: , + href: `/docs/${entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE}/${ + entity.kind + }/${entity.metadata.name}`, + }; + const viewApi = { + title: hasApis ? '' : 'No APIs available', + label: 'View API', + disabled: !hasApis, + icon: , + href: 'api', + }; return ( - - { - window.open(codeLink.edithref || '#', '_blank'); - }} - > - - - } - subheader={ - - } - /> - - - - - - {entity?.metadata?.description || 'No description'} - - - r.type === RELATION_OWNED_BY) - .map(({ target: { kind, name, namespace } }) => - // TODO(Rugvip): we want to provide some utils for this - serializeEntityRef({ - kind, - name, - namespace: - namespace === ENTITY_DEFAULT_NAMESPACE - ? undefined - : namespace, - }), - ) - .join(', ')} - gridSizes={{ xs: 12, sm: 6, lg: 4 }} - /> - - - - {(entity?.metadata?.tags || []).map(t => ( - - ))} - - - - - ); -} - -function AboutField({ - label, - value, - gridSizes, - children, -}: { - label: string; - value?: string; - gridSizes?: Record; - children?: React.ReactNode; -}) { - const classes = useStyles(); - - // Content is either children or a string prop `value` - const content = React.Children.count(children) ? ( - children - ) : ( - - {value || `unknown`} - - ); - return ( - - - {label} - - {content} - + { + window.open(codeLink.edithref || '#', '_blank'); + }} + > + + + } + links={[viewInSource, viewInTechDocs, viewApi]} + content={} + /> ); } diff --git a/plugins/pagerduty/src/components/PagerDutyCard.tsx b/plugins/pagerduty/src/components/PagerDutyCard.tsx index 8fd20f37e8..10081f8939 100644 --- a/plugins/pagerduty/src/components/PagerDutyCard.tsx +++ b/plugins/pagerduty/src/components/PagerDutyCard.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React, { useState, useCallback } from 'react'; -import { useApi, Progress } from '@backstage/core'; +import { useApi, Progress, AboutCard } from '@backstage/core'; import { Entity } from '@backstage/catalog-model'; import { Button, makeStyles } from '@material-ui/core'; import { Incidents } from './Incident'; @@ -26,7 +26,6 @@ import AlarmAddIcon from '@material-ui/icons/AlarmAdd'; import { TriggerDialog } from './TriggerDialog'; import { MissingTokenError } from './Errors/MissingTokenError'; import WebIcon from '@material-ui/icons/Web'; -import { AboutCard } from './About/AboutCard'; const useStyles = makeStyles({ triggerAlarm: { @@ -98,13 +97,13 @@ export const PagerDutyCard = ({ entity }: Props) => { } const serviceLink = { - title: 'Service Directory', + label: 'Service Directory', href: service!.url, icon: , }; const triggerLink = { - title: 'Create Incident', + label: 'Create Incident', action: ( From 20ec8ddc996fd583780d8efb60e0d346e04a4842 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 21 Dec 2020 11:29:40 -0500 Subject: [PATCH 085/349] Reference deprecation --- plugins/register-component/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/register-component/README.md b/plugins/register-component/README.md index d324b3941f..0abf27590f 100644 --- a/plugins/register-component/README.md +++ b/plugins/register-component/README.md @@ -1,5 +1,7 @@ # Register component plugin +> This plugin is deprecated in favor of [`@backstage/catalog-import`](https://github.com/backstage/backstage/tree/master/plugins/catalog-import), and will be soon removed from the project. + Welcome to the register-component plugin! This plugin allows you to submit your Backstage component using your software's YAML config. From 9161531b2b5c6786cc4b4723ee5af838e4548bfc Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 21 Dec 2020 11:32:14 -0500 Subject: [PATCH 086/349] Add changeset --- .changeset/gentle-dragons-marry.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gentle-dragons-marry.md diff --git a/.changeset/gentle-dragons-marry.md b/.changeset/gentle-dragons-marry.md new file mode 100644 index 0000000000..d9ef443932 --- /dev/null +++ b/.changeset/gentle-dragons-marry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Link register API to catalog-import plugin From 9838c202d3ffbd14cb9bdfb57fe77f4a262ea1cf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 21 Dec 2020 18:14:25 +0100 Subject: [PATCH 087/349] core-api: implement mount point gathering for entity page tabs Co-authored-by: blam --- .../core-api/src/routing/collectors.test.tsx | 205 ++++++++++++++---- packages/core-api/src/routing/collectors.tsx | 54 ++++- 2 files changed, 211 insertions(+), 48 deletions(-) diff --git a/packages/core-api/src/routing/collectors.test.tsx b/packages/core-api/src/routing/collectors.test.tsx index 200846f175..7622cdc70a 100644 --- a/packages/core-api/src/routing/collectors.test.tsx +++ b/packages/core-api/src/routing/collectors.test.tsx @@ -24,21 +24,22 @@ import { } from '../extensions/traversal'; import { createRouteRef } from './RouteRef'; import { createPlugin } from '../plugin'; -import { createRoutableExtension } from '../extensions'; +import { attachComponentData, createRoutableExtension } from '../extensions'; import { MemoryRouter, Routes, Route } from 'react-router-dom'; +import { RouteRef } from './types'; -const mockConfig = () => ({ path: '/foo', title: 'Foo' }); const MockComponent = ({ children }: PropsWithChildren<{ path?: string }>) => ( <>{children} ); const plugin = createPlugin({ id: 'my-plugin' }); -const ref1 = createRouteRef(mockConfig()); -const ref2 = createRouteRef(mockConfig()); -const ref3 = createRouteRef(mockConfig()); -const ref4 = createRouteRef(mockConfig()); -const ref5 = createRouteRef(mockConfig()); +const ref1 = createRouteRef({ path: '/foo1', title: 'Foo' }); +const ref2 = createRouteRef({ path: '/foo2', title: 'Foo' }); +const ref3 = createRouteRef({ path: '/foo3', title: 'Foo' }); +const ref4 = createRouteRef({ path: '/foo4', title: 'Foo' }); +const ref5 = createRouteRef({ path: '/foo5', title: 'Foo' }); +const refOrder = [ref1, ref2, ref3, ref4, ref5]; const Extension1 = plugin.provide( createRoutableExtension({ @@ -71,6 +72,20 @@ const Extension5 = plugin.provide( }), ); +const AggregationComponent = ({ + children, +}: PropsWithChildren<{ + path: string; +}>) => <>{children}; + +attachComponentData(AggregationComponent, 'core.gatherMountPoints', true); + +function sortedEntries(map: Map): [RouteRef, T][] { + return Array.from(map).sort( + ([a], [b]) => refOrder.indexOf(a) - refOrder.indexOf(b), + ); +} + describe('discovery', () => { it('should collect routes', () => { const list = [ @@ -117,25 +132,20 @@ describe('discovery', () => { routeParents: routeParentCollector, }, }); - expect(routes).toEqual( - new Map([ - [ref1, '/foo'], - [ref2, '/bar/:id'], - [ref3, '/baz'], - [ref4, '/divsoup'], - [ref5, '/blop'], - ]), - ); - - expect(routeParents).toEqual( - new Map([ - [ref1, undefined], - [ref2, ref1], - [ref3, ref2], - [ref4, undefined], - [ref5, ref1], - ]), - ); + expect(sortedEntries(routes)).toEqual([ + [ref1, '/foo'], + [ref2, '/bar/:id'], + [ref3, '/baz'], + [ref4, '/divsoup'], + [ref5, '/blop'], + ]); + expect(sortedEntries(routeParents)).toEqual([ + [ref1, undefined], + [ref2, ref1], + [ref3, ref2], + [ref4, undefined], + [ref5, ref1], + ]); }); it('should handle all react router Route patterns', () => { @@ -168,24 +178,135 @@ describe('discovery', () => { routeParents: routeParentCollector, }, }); - expect(routes).toEqual( - new Map([ - [ref1, '/foo'], - [ref2, '/bar/:id'], - [ref3, '/baz'], - [ref4, '/divsoup'], - [ref5, '/blop'], - ]), + expect(sortedEntries(routes)).toEqual([ + [ref1, '/foo'], + [ref2, '/bar/:id'], + [ref3, '/baz'], + [ref4, '/divsoup'], + [ref5, '/blop'], + ]); + expect(sortedEntries(routeParents)).toEqual([ + [ref1, undefined], + [ref2, ref1], + [ref3, undefined], + [ref4, ref3], + [ref5, ref3], + ]); + }); + + it('should use the route aggregator key to bind child routes to the same path', () => { + const root = ( + + + + +
+ +
+ HELLO +
+ + + + + + + +
+
); - expect(routeParents).toEqual( - new Map([ - [ref1, undefined], - [ref2, ref1], - [ref3, undefined], - [ref4, ref3], - [ref5, ref3], - ]), + + const { routes, routeParents } = traverseElementTree({ + root, + discoverers: [childDiscoverer, routeElementDiscoverer], + collectors: { + routes: routePathCollector, + routeParents: routeParentCollector, + }, + }); + expect(sortedEntries(routes)).toEqual([ + [ref1, '/foo'], + [ref2, '/foo'], + [ref3, '/bar'], + [ref4, '/baz'], + [ref5, '/baz'], + ]); + expect(sortedEntries(routeParents)).toEqual([ + [ref1, undefined], + [ref2, undefined], + [ref3, undefined], + [ref4, ref3], + [ref5, ref3], + ]); + }); + + it('should use the route aggregator but stop when encountering explicit path', () => { + const root = ( + + + + + + + + + + + + + + ); + + const { routes, routeParents } = traverseElementTree({ + root, + discoverers: [childDiscoverer, routeElementDiscoverer], + collectors: { + routes: routePathCollector, + routeParents: routeParentCollector, + }, + }); + expect(sortedEntries(routes)).toEqual([ + [ref1, '/foo'], + [ref2, '/bar'], + [ref3, '/baz'], + [ref4, '/blop'], + [ref5, '/bar'], + ]); + expect(sortedEntries(routeParents)).toEqual([ + [ref1, undefined], + [ref2, ref1], + [ref3, ref1], + [ref4, ref3], + [ref5, ref1], + ]); + }); + + it('should stop gathering mount points after encountering explicit path', () => { + const root = ( + + + + + + + + + + + + ); + + expect(() => { + traverseElementTree({ + root, + discoverers: [childDiscoverer, routeElementDiscoverer], + collectors: { + routes: routePathCollector, + routeParents: routeParentCollector, + }, + }); + }).toThrow('Mounted routable extension must have a path'); }); it('should not visit the same element twice', () => { diff --git a/packages/core-api/src/routing/collectors.tsx b/packages/core-api/src/routing/collectors.tsx index e47a59aa85..1bf9558d06 100644 --- a/packages/core-api/src/routing/collectors.tsx +++ b/packages/core-api/src/routing/collectors.tsx @@ -32,25 +32,48 @@ function getMountPoint(node: ReactElement): RouteRef | undefined { export const routePathCollector = createCollector( () => new Map(), - (acc, node, parent) => { + (acc, node, parent, ctxPath: string | undefined) => { + // The context path is used during mount point gathering to assign the same path + // to all discovered mount points + let currentCtxPath = ctxPath; + if (parent?.props.element === node) { - return; + return currentCtxPath; + } + + // Start gathering mount points when we encounter a mount point gathering flag + if (getComponentData(node, 'core.gatherMountPoints')) { + const path: string | undefined = node.props?.path; + if (!path) { + throw new Error('Mount point gatherer must have a path'); + } + currentCtxPath = path; } const routeRef = getMountPoint(node); if (routeRef) { - const path: string | undefined = node.props?.path; + let path: string | undefined = node.props?.path; + // If we're gathering mount points we use the context path as out path, unless + // the element has its own path, in which case we use that instead and stop gathering + if (currentCtxPath) { + if (path) { + currentCtxPath = undefined; + } else { + path = currentCtxPath; + } + } if (!path) { throw new Error('Mounted routable extension must have a path'); } acc.set(routeRef, path); } + return currentCtxPath; }, ); export const routeParentCollector = createCollector( () => new Map(), - (acc, node, parent, parentRouteRef?: RouteRef) => { + (acc, node, parent, parentRouteRef?: RouteRef | { sticky: RouteRef }) => { if (parent?.props.element === node) { return parentRouteRef; } @@ -59,8 +82,27 @@ export const routeParentCollector = createCollector( const routeRef = getMountPoint(node); if (routeRef) { - acc.set(routeRef, parentRouteRef); - nextParent = routeRef; + // "sticky" route ref is when we've encountered a mount point gatherer, and we want a + // mount points beneath it to have the same parent, regardless of internal structure + if (parentRouteRef && 'sticky' in parentRouteRef) { + acc.set(routeRef, parentRouteRef.sticky); + + // When we encounter a mount point with an explicit path, we stop gathering + // mount points withing the children and remove the sticky state + if (node.props?.path) { + nextParent = routeRef; + } else { + nextParent = parentRouteRef; + } + } else { + acc.set(routeRef, parentRouteRef); + nextParent = routeRef; + } + } + + // Mount point gatherers are marked as "sticky" + if (getComponentData(node, 'core.gatherMountPoints')) { + return { sticky: nextParent }; } return nextParent; From 1517876fd8d67b77c4f24e5bc20d9e70657d23b9 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 21 Dec 2020 12:46:17 -0500 Subject: [PATCH 088/349] Add register-compomnent changeset --- .changeset/famous-eagles-swim.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/famous-eagles-swim.md diff --git a/.changeset/famous-eagles-swim.md b/.changeset/famous-eagles-swim.md new file mode 100644 index 0000000000..49f2724b5b --- /dev/null +++ b/.changeset/famous-eagles-swim.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-register-component': patch +--- + +Register component plugin is deprecated in favor of @backstage/plugin-catalog-import From f78cf32e6782842f3fdaa8d219ca22b8939529c8 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 21 Dec 2020 14:00:39 -0500 Subject: [PATCH 089/349] Add deprecated TSDOC --- plugins/register-component/src/components/Router.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/register-component/src/components/Router.tsx b/plugins/register-component/src/components/Router.tsx index eee7fd3806..16aa1fa695 100644 --- a/plugins/register-component/src/components/Router.tsx +++ b/plugins/register-component/src/components/Router.tsx @@ -20,6 +20,13 @@ import { RouteRef } from '@backstage/core'; // As we don't know which path the catalog's router mounted on // We need to inject this from the app + +/** + * Provides a router for registering a component. + * + * @deprecated The router for this component is deprecated and replaced with the `catalog-import` plugin. + * @see https://github.com/backstage/backstage/tree/master/plugins/catalog-import + */ export const Router = ({ catalogRouteRef }: { catalogRouteRef: RouteRef }) => ( Date: Tue, 22 Dec 2020 04:38:08 +0000 Subject: [PATCH 090/349] build(deps-dev): bump @types/tar from 4.0.3 to 4.0.4 Bumps [@types/tar](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/tar) from 4.0.3 to 4.0.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/tar) Signed-off-by: dependabot[bot] --- yarn.lock | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index afc2047087..eb847ddbdf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6377,9 +6377,9 @@ integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== "@types/tar@^4.0.3": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/tar/-/tar-4.0.3.tgz#e2cce0b8ff4f285293243f5971bd7199176ac489" - integrity sha512-Z7AVMMlkI8NTWF0qGhC4QIX0zkV/+y0J8x7b/RsHrN0310+YNjoJd8UrApCiGBCWtKjxS9QhNqLi2UJNToh5hA== + version "4.0.4" + resolved "https://registry.npmjs.org/@types/tar/-/tar-4.0.4.tgz#d680de60855e7778a51c672b755869a3b8d2889f" + integrity sha512-0Xv+xcmkTsOZdIF4yCnd7RkOOyfyqPaqJ7RZFKnwdxfDbkN3eAAE9sHl8zJFqBz4VhxolW9EErbjR1oyH7jK2A== dependencies: "@types/minipass" "*" "@types/node" "*" @@ -13195,13 +13195,6 @@ git-url-parse@^11.4.3: dependencies: git-up "^4.0.0" -git-url-parse@^11.4.3: - version "11.4.3" - resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.3.tgz#1610284edf1f14964180f5b3399ec68b692cfd87" - integrity sha512-LZTTk0nqJnKN48YRtOpR8H5SEfp1oM2tls90NuZmBxN95PnCvmuXGzqQ4QmVirBgKx2KPYfPGteX3/raWjKenQ== - dependencies: - git-up "^4.0.0" - gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" From a80169f317e448c3d1a40d949c8a7fd382da4f55 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Dec 2020 13:10:50 +0100 Subject: [PATCH 091/349] microsite: add stability-index blog post --- microsite/blog/2020-12-22-stability-index.md | 40 ++++++++++++++++++ .../2020-12-22/stability-index-hero.gif | Bin 0 -> 400506 bytes .../blog/assets/2020-12-22/versions-bump.png | Bin 0 -> 147370 bytes 3 files changed, 40 insertions(+) create mode 100644 microsite/blog/2020-12-22-stability-index.md create mode 100644 microsite/blog/assets/2020-12-22/stability-index-hero.gif create mode 100644 microsite/blog/assets/2020-12-22/versions-bump.png diff --git a/microsite/blog/2020-12-22-stability-index.md b/microsite/blog/2020-12-22-stability-index.md new file mode 100644 index 0000000000..77381ef801 --- /dev/null +++ b/microsite/blog/2020-12-22-stability-index.md @@ -0,0 +1,40 @@ +--- +title: Announcing the Backstage Stability Index +author: Patrik Oldsberg, Spotify +authorURL: https://github.com/Rugvip +--- + +**TL;DR** Backstage is heading out of alpha and moving onto the path to stable releases and an eventual version 1.0. As the community and ecosystem continue to grow at an increasing rate, we want to provide a solid foundation for everyone building things in, with, and around Backstage. So, today we’re introducing the [Stability Index](https://backstage.io/docs/overview/stability-index) — a simple way to find out how likely (or unlikely) a specific package or plugin inside Backstage might be updated with major changes. By indicating the reliability of key features and APIs, this quick reference will help contributors and adopters better plan and coordinate their development efforts going forward. + +![Animation cycling between stability index scores](assets/2020-12-22/stability-index-hero.gif) + +Backstage has a great and growing community of users and contributors. With so much valuable feedback, this inevitably means that sometimes we will go back and revise design decisions that introduce breaking changes. Furthermore, as we continue to ship new features and systems, we’ll continue this cycle of iterating, gathering feedback, and iterating again before reaching a stable API. + +This rapid evolution can create uncertainty around which parts of the project are considered stable and which are not. Regardless of whether you're contributing to the project directly, setting up your own Backstage, or building plugins, you will be using various parts of the project that vary in stability. While many API surfaces of Backstage are reasonably solid and are unlikely to see any big breaking changes, others are more unstable or experimental. + +## The Stability Index + +In order to tackle the problem of uncertainty, and help align contributors, we have recently introduced a Stability Index. Inspired by a [similar concept with the same name in Node.js](https://nodejs.org/docs/latest-v4.x/api/documentation.html#documentation_stability_index), it’s a score assigned to subsets of the project, indicating the level of maturity of the API and the commitment to backwards compatibility. However, because of the current phase of the project, we have used a slightly different implementation. Rather than the score indicating a perceived stability, a higher score is instead a commitment to providing a smoother upgrade path for users, both through better documentation and backwards compatibility. Importantly, the Stability Index does not supersede [semantic versioning](https://semver.org/) (or semver), meaning we will still adhere to semver and only do breaking changes in minor releases as long as we are on 0.x. + +You can find more details about the scores on the [Stability Index](https://backstage.io/docs/overview/stability-index) page, but the following is a TL;DR of the 0–3 scores: + +- **0** — There's a changelog entry. +- **1** — There's a migration guide. +- **2** — Two weeks of deprecation. +- **3** — Three months of deprecation. + +The Stability Index has been tailored for the phase that the project is currently in, and we do not intend to keep it in place in its current form forever. It is, for example, likely that we in the future will increase the deprecation time limits. + +## Staying up to date + +In addition to the Stability Index, we have also recently adopted a weekly release cadence where we cut new releases every Thursday. Along with the two-week deprecation period of many of the API surfaces in Backstage, there is an excellent opportunity to form a routine to update your own Backstage projects either weekly or biweekly. + +In order to make the update process easier, we’ve added a new command to the Backstage CLI that allows you to easily update your project to use the latest Backstage release. The command is called `version:bump` and is executed in the root of your project using the CLI. You can see what it looks like in action below. + +![Output of the `backstage-cli` `version:bump` command](assets/2020-12-22/versions-bump.png) + +## Impact + +The Stability Index has already been active for a couple of weeks, and we have immediately seen an impact on the consideration and care taken when working in parts of the project that we have committed to keeping more stable. Both members of the core maintainer team and contributors from the community have taken care to roll out updates responsibly, with examples such as [PR #3524](https://github.com/backstage/backstage/pull/3524) and [PR #3465](https://github.com/backstage/backstage/pull/3465). + +The core team is working hard to bring more stability to broader parts of Backstage, and engineering it in a way that allows for long-term evolution. There are more learnings to be discovered as we continue evolving Backstage, but we are confident that the Stability Index will allow for a clearer path and a smoother ride for everyone involved! diff --git a/microsite/blog/assets/2020-12-22/stability-index-hero.gif b/microsite/blog/assets/2020-12-22/stability-index-hero.gif new file mode 100644 index 0000000000000000000000000000000000000000..6744cf977dd03a9c9ca261900cbd588b76e9797c GIT binary patch literal 400506 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≷phSooHqKsSOnV)>j+5|h+A~B_-TH$>+9ZNH_ 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

*yd+sz;=OxsWG6pjCRI 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

^|I+f%U}Og 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

8aX!Q#onHx_u2scAvztfzqUPfk5-|ItAMX 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