From a04b7c0ec2b0222eb050b4e2d895171830397570 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 7 Feb 2020 16:27:18 +0100 Subject: [PATCH 1/2] backend: quicker docker rebuilds --- backend/Dockerfile | 20 +++++++++++--------- docker-compose.yaml | 5 +---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index c1278d7302..042a94aae6 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,3 +1,13 @@ +ARG base_image=debian:buster + +### Scaffolder Stage +### needs extra cookiecutter +FROM debian:buster AS scaffolder +RUN apt-get update && apt-get install -y python-pip +RUN apt-get install -y python-backports.functools-lru-cache +RUN pip install cookiecutter==1.7.0 --index-url https://pypi.python.org/simple + + ### Builder Stage FROM golang:1.13 AS build ARG service @@ -16,7 +26,7 @@ RUN go build . ### Running Container Stage -FROM debian:buster AS default +FROM ${base_image} ARG service RUN apt-get update && apt-get install -y ca-certificates @@ -26,11 +36,3 @@ WORKDIR /app/ COPY --from=build /build/$service/$service /app/service CMD ["./service"] - - -### Scaffolder Stage -### needs extra cookiecutter -FROM default AS scaffolder -RUN apt-get update && apt-get install -y python-pip -RUN apt-get install -y python-backports.functools-lru-cache -RUN pip install cookiecutter==1.7.0 --index-url https://pypi.python.org/simple diff --git a/docker-compose.yaml b/docker-compose.yaml index b917b64aeb..239e0aaf85 100755 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,7 +15,6 @@ services: container_name: boss-identity build: context: backend - target: default args: service: identity restart: unless-stopped @@ -34,7 +33,6 @@ services: container_name: boss-builds build: context: backend - target: default args: service: builds restart: unless-stopped @@ -45,12 +43,11 @@ services: - inventory links: - inventory - container_name: boss-scaffolder build: context: backend - target: scaffolder args: service: scaffolder + base_image: scaffolder restart: unless-stopped volumes: - ./backend/scaffolder/templates:/app/templates:ro From f66defbbec420a8ea784e0000fd501282e84202b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 7 Feb 2020 16:27:44 +0100 Subject: [PATCH 2/2] front/plugins/home-page: list components --- .../src/components/HomePage/HomePage.tsx | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/frontend/packages/plugins/home-page/src/components/HomePage/HomePage.tsx b/frontend/packages/plugins/home-page/src/components/HomePage/HomePage.tsx index 5167515116..a1634811b6 100644 --- a/frontend/packages/plugins/home-page/src/components/HomePage/HomePage.tsx +++ b/frontend/packages/plugins/home-page/src/components/HomePage/HomePage.tsx @@ -1,5 +1,11 @@ import React, { FC } from 'react'; -import { Typography, makeStyles, Theme, Grid } from '@material-ui/core'; +import { + Typography, + makeStyles, + Theme, + Grid, + LinearProgress, +} from '@material-ui/core'; import HomePageTimer from '../HomepageTimer'; import { EntityLink, @@ -10,6 +16,37 @@ import { theme, } from '@backstage/core'; import SquadTechHealth from './SquadTechHealth'; +import { useAsync } from 'react-use'; + +import { inventoryV1 } from '@backstage/protobuf-definitions'; + +const client = new inventoryV1.Client('http://localhost:8080'); + +const entityUriRegex = /boss:\/\/service\/(.*)/; + +async function fetchServices() { + const req = new inventoryV1.ListEntitiesRequest(); + req.setUriprefix('boss://service/'); + const res = await client.listEntities(req); + + return res + .getEntitiesList() + .map(entity => { + const match = entity.getUri()?.match(entityUriRegex); + console.log('DEBUG: match =', match); + if (!match) { + return undefined; + } + return { id: match[1], kind: 'service' }; + }) + .filter(Boolean) + .map(x => x!); +} + +const STATIC_DATA = [ + { id: 'backstage', kind: 'service' }, + { id: 'backstage-microsite', kind: 'website' }, +]; const useStyles = makeStyles(theme => ({ mainContentArea: { @@ -26,15 +63,17 @@ const useStyles = makeStyles(theme => ({ const HomePage: FC<{}> = () => { const classes = useStyles(); + const status = useAsync(fetchServices); const columns = [ { id: 'entity', label: 'ID' }, { id: 'kind', label: 'Kind' }, ]; - const data = [ - { id: 'backstage', kind: 'service' }, - { id: 'backstage-microsite', kind: 'website' }, - ].map(({ id, kind }) => { + if (status.loading) { + return ; + } + + const data = STATIC_DATA.concat(status?.value ?? []).map(({ id, kind }) => { return { id, entity: (