Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Featiure Branch
name: Branch

on:
workflow_dispatch:
push:
branches:
- feature/*
branches-ignore:
- main

jobs:
build_infra:
Expand Down
4 changes: 3 additions & 1 deletion src/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Coverage directory generated when running tests with coverage
coverage
Expand Down Expand Up @@ -52,3 +51,6 @@ site

# E2E test reports
e2e-test-report/

# Cache
.cache/
2 changes: 1 addition & 1 deletion src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ To start the app, run:

```sh
yarn install
yarn dev
yarn start
```
2 changes: 1 addition & 1 deletion src/backstage.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "1.31.1"
"version": "1.43.1"
}
16 changes: 15 additions & 1 deletion src/examples/template/template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ spec:
name: ${{ parameters.name }}

# This step publishes the contents of the working directory to GitHub.
# If you or your organization prefer another default branch name over 'main'
# you can change that here.
- id: publish
name: Publish
action: publish:github
input:
allowedHosts: ['github.com']
description: This is ${{ parameters.name }}
repoUrl: ${{ parameters.repoUrl }}
defaultBranch: 'main'

# The final step is to register our new component in the catalog.
- id: register
Expand All @@ -64,6 +66,18 @@ spec:
repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }}
catalogInfoPath: '/catalog-info.yaml'

# Let's notify the user that the template has completed using the Notification action
- id: notify
name: Notify
action: notification:send
input:
recipients: entity
entityRefs:
- user:default/guest
title: 'Template executed'
info: 'Your template has been executed'
severity: 'normal'

# Outputs are displayed to the user after a successful execution of the template.
output:
links:
Expand Down
14 changes: 6 additions & 8 deletions src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
"version": "1.0.0",
"private": true,
"engines": {
"node": "lts/iron"
"node": "lts/jod"
},
"scripts": {
"dev": "NODE_OPTIONS=--no-node-snapshot yarn workspaces foreach -A --include backend --include app --parallel -v -i run start",
"start": "yarn workspace app start",
"start-backend": "yarn workspace backend start",
"start": "backstage-cli repo start",
"build:backend": "yarn workspace backend build",
"build:all": "backstage-cli repo build --all",
"build-image": "yarn workspace backend build-image",
Expand All @@ -22,7 +20,7 @@
"lint": "backstage-cli repo lint --since origin/main",
"lint:all": "backstage-cli repo lint",
"prettier:check": "prettier --check .",
"new": "backstage-cli new --scope internal"
"new": "backstage-cli new"
},
"workspaces": {
"packages": [
Expand All @@ -31,19 +29,19 @@
]
},
"devDependencies": {
"@backstage/cli": "^0.27.1",
"@backstage/cli": "^0.34.3",
"@backstage/e2e-test-utils": "^0.1.1",
"@playwright/test": "^1.32.3",
"@spotify/prettier-config": "^12.0.0",
"node-gyp": "^10.0.0",
"prettier": "^2.3.2",
"typescript": "~5.4.0"
"typescript": "~5.8.0"
},
"resolutions": {
"@types/react": "^18",
"@types/react-dom": "^18"
},
"prettier": "@spotify/prettier-config",
"prettier": "@backstage/cli/config/prettier-config",
"lint-staged": {
"*.{js,jsx,ts,tsx,mjs,cjs}": [
"eslint --fix",
Expand Down
56 changes: 29 additions & 27 deletions src/packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,33 @@
"lint": "backstage-cli package lint"
},
"dependencies": {
"@backstage/app-defaults": "^1.5.11",
"@backstage/catalog-model": "^1.7.0",
"@backstage/cli": "^0.27.1",
"@backstage/core-app-api": "^1.15.0",
"@backstage/core-components": "^0.15.0",
"@backstage/core-plugin-api": "^1.9.4",
"@backstage/integration-react": "^1.1.31",
"@backstage/plugin-api-docs": "^0.11.9",
"@backstage/plugin-catalog": "^1.23.0",
"@backstage/plugin-catalog-common": "^1.1.0",
"@backstage/plugin-catalog-graph": "^0.4.9",
"@backstage/plugin-catalog-import": "^0.12.3",
"@backstage/plugin-catalog-react": "^1.13.0",
"@backstage/plugin-org": "^0.6.29",
"@backstage/plugin-permission-react": "^0.4.26",
"@backstage/plugin-scaffolder": "^1.25.0",
"@backstage/plugin-scaffolder-react": "^1.14.1",
"@backstage/plugin-search": "^1.4.16",
"@backstage/plugin-search-react": "^1.8.0",
"@backstage/plugin-techdocs": "^1.10.9",
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.14",
"@backstage/plugin-techdocs-react": "^1.2.8",
"@backstage/plugin-user-settings": "^0.8.12",
"@backstage/theme": "^0.5.7",
"@backstage/app-defaults": "^1.7.0",
"@backstage/catalog-model": "^1.7.5",
"@backstage/cli": "^0.34.3",
"@backstage/core-app-api": "^1.19.0",
"@backstage/core-components": "^0.18.0",
"@backstage/core-plugin-api": "^1.11.0",
"@backstage/integration-react": "^1.2.10",
"@backstage/plugin-api-docs": "^0.12.11",
"@backstage/plugin-catalog": "^1.31.3",
"@backstage/plugin-catalog-common": "^1.1.5",
"@backstage/plugin-catalog-graph": "^0.5.0",
"@backstage/plugin-catalog-import": "^0.13.5",
"@backstage/plugin-catalog-react": "^1.21.0",
"@backstage/plugin-notifications": "^0.5.9",
"@backstage/plugin-org": "^0.6.44",
"@backstage/plugin-permission-react": "^0.4.36",
"@backstage/plugin-scaffolder": "^1.34.1",
"@backstage/plugin-scaffolder-react": "^1.19.1",
"@backstage/plugin-search": "^1.4.30",
"@backstage/plugin-search-react": "^1.9.4",
"@backstage/plugin-signals": "^0.0.23",
"@backstage/plugin-techdocs": "^1.15.0",
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.28",
"@backstage/plugin-techdocs-react": "^1.3.3",
"@backstage/plugin-user-settings": "^0.8.26",
"@backstage/theme": "^0.6.8",
"@backstage/ui": "^0.7.1",
"@internal/backstage-plugin-scaffolder-entity-pickers": "workspace:^",
"@internal/backstage-plugin-serverlessops-catalog": "workspace:^",
"@material-ui/core": "^4.12.2",
Expand All @@ -46,11 +49,10 @@
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0",
"react-use": "^17.2.4"
"react-router-dom": "^6.3.0"
},
"devDependencies": {
"@backstage/test-utils": "^1.6.0",
"@backstage/test-utils": "^1.7.11",
"@playwright/test": "^1.32.3",
"@testing-library/dom": "^9.0.0",
"@testing-library/jest-dom": "^6.0.0",
Expand Down
1 change: 0 additions & 1 deletion src/packages/app/src/App.test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { render, waitFor } from '@testing-library/react';
import App from './App';

Expand Down
5 changes: 4 additions & 1 deletion src/packages/app/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { Navigate, Route } from 'react-router-dom';
import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs';
import {
Expand Down Expand Up @@ -36,6 +35,8 @@ import { AppRouter, FlatRoutes } from '@backstage/core-app-api';
import { CatalogGraphPage } from '@backstage/plugin-catalog-graph';
import { RequirePermission } from '@backstage/plugin-permission-react';
import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';
import { NotificationsPage } from '@backstage/plugin-notifications';
import { SignalsDisplay } from '@backstage/plugin-signals';
import { ScaffolderFieldExtensions } from '@backstage/plugin-scaffolder-react';

// Added imports
Expand Down Expand Up @@ -170,13 +171,15 @@ const routes = (
</Route>
<Route path="/settings" element={<UserSettingsPage />} />
<Route path="/catalog-graph" element={<CatalogGraphPage />} />
<Route path="/notifications" element={<NotificationsPage />} />
</FlatRoutes>
);

export default app.createRoot(
<>
<AlertDisplay />
<OAuthRequestDialog />
<SignalsDisplay />
<AppRouter>
<Root>{routes}</Root>
</AppRouter>
Expand Down
1 change: 0 additions & 1 deletion src/packages/app/src/components/Root/LogoFull.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { makeStyles } from '@material-ui/core';

const useStyles = makeStyles({
Expand Down
1 change: 0 additions & 1 deletion src/packages/app/src/components/Root/LogoIcon.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { makeStyles } from '@material-ui/core';

const useStyles = makeStyles({
Expand Down
5 changes: 4 additions & 1 deletion src/packages/app/src/components/Root/Root.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { PropsWithChildren } from 'react';
import { PropsWithChildren } from 'react';
import { makeStyles } from '@material-ui/core';
import MenuBookIcon from '@material-ui/icons/MenuBook';
import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
Expand All @@ -24,6 +24,7 @@ import {
import MenuIcon from '@material-ui/icons/Menu';
import SearchIcon from '@material-ui/icons/Search';
import GroupIcon from '@material-ui/icons/People';
import { NotificationsSidebarItem } from '@backstage/plugin-notifications';

const useSidebarLogoStyles = makeStyles({
root: {
Expand Down Expand Up @@ -74,6 +75,8 @@ export const Root = ({ children }: PropsWithChildren<{}>) => (
</SidebarGroup>
<SidebarSpace />
<SidebarDivider />
<NotificationsSidebarItem />
<SidebarDivider />
<SidebarGroup
label="Settings"
icon={<UserSettingsSignInAvatar />}
Expand Down
2 changes: 0 additions & 2 deletions src/packages/app/src/components/catalog/EntityPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { Button, Grid } from '@material-ui/core';
import {
EntityApiDefinitionCard,
Expand Down Expand Up @@ -73,7 +72,6 @@ const cicdContent = (
<EntityGithubActionsContent />
</EntitySwitch.Case>
*/}

<EntitySwitch.Case>
<EmptyState
title="No CI/CD available for this entity"
Expand Down
1 change: 0 additions & 1 deletion src/packages/app/src/components/search/SearchPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { makeStyles, Theme, Grid, Paper } from '@material-ui/core';

import { CatalogSearchResultListItem } from '@backstage/plugin-catalog';
Expand Down
2 changes: 1 addition & 1 deletion src/packages/app/src/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import '@backstage/cli/asset-types';
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import '@backstage/ui/css/styles.css';

ReactDOM.createRoot(document.getElementById('root')!).render(<App />);
5 changes: 3 additions & 2 deletions src/packages/backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#
# Once the commands have been run, you can build the image using `yarn build-image`

FROM node:20-bookworm-slim
FROM node:22-bookworm-slim

# Set Python interpreter for `node-gyp` to use
ENV PYTHON=/usr/bin/python3
Expand Down Expand Up @@ -40,12 +40,13 @@ WORKDIR /app
# Copy files needed by Yarn
COPY --chown=node:node .yarn ./.yarn
COPY --chown=node:node .yarnrc.yml ./
COPY --chown=node:node backstage.json ./

# This switches many Node.js dependencies to production mode.
ENV NODE_ENV=production

# This disables node snapshot for Node 20 to work with the Scaffolder
ENV NODE_OPTIONS "--no-node-snapshot"
ENV NODE_OPTIONS="--no-node-snapshot"

# Copy repo skeleton first, to avoid unnecessary docker cache invalidation.
# The skeleton contains the package.json of each package in the monorepo,
Expand Down
63 changes: 31 additions & 32 deletions src/packages/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,45 +16,44 @@
"build-image": "docker build ../.. -f Dockerfile --tag backstage"
},
"dependencies": {
"@backstage/backend-defaults": "^0.5.0",
"@backstage/config": "^1.2.0",
"@backstage/plugin-app-backend": "^0.3.74",
"@backstage/plugin-auth-backend": "^0.23.0",
"@backstage/plugin-auth-backend-module-github-provider": "^0.3.4",
"@backstage/plugin-auth-backend-module-google-provider": "^0.2.0",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.0",
"@backstage/plugin-auth-node": "^0.5.2",
"@backstage/plugin-catalog-backend": "^1.26.0",
"@backstage/plugin-catalog-backend-module-github": "^0.7.5",
"@backstage/plugin-catalog-backend-module-logs": "^0.1.0",
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.0",
"@backstage/plugin-permission-backend": "^0.5.49",
"@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.0",
"@backstage/plugin-permission-common": "^0.8.1",
"@backstage/plugin-permission-node": "^0.8.3",
"@backstage/plugin-proxy-backend": "^0.5.6",
"@backstage/plugin-scaffolder-backend": "^1.25.0",
"@backstage/plugin-scaffolder-backend-module-github": "^0.5.1",
"@backstage/plugin-search-backend": "^1.5.17",
"@backstage/plugin-search-backend-module-catalog": "^0.2.2",
"@backstage/plugin-search-backend-module-pg": "^0.5.35",
"@backstage/plugin-search-backend-module-techdocs": "^0.2.2",
"@backstage/plugin-search-backend-node": "^1.3.2",
"@backstage/plugin-techdocs-backend": "^1.10.13",
"@backstage/backend-defaults": "^0.12.1",
"@backstage/config": "^1.3.3",
"@backstage/plugin-app-backend": "^0.5.6",
"@backstage/plugin-auth-backend": "^0.25.4",
"@backstage/plugin-auth-backend-module-github-provider": "^0.3.7",
"@backstage/plugin-auth-backend-module-google-provider": "^0.3.7",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.12",
"@backstage/plugin-auth-node": "^0.6.7",
"@backstage/plugin-catalog-backend": "^3.1.0",
"@backstage/plugin-catalog-backend-module-github": "^0.11.0",
"@backstage/plugin-catalog-backend-module-logs": "^0.1.14",
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.12",
"@backstage/plugin-notifications-backend": "^0.5.10",
"@backstage/plugin-permission-backend": "^0.7.4",
"@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.12",
"@backstage/plugin-permission-common": "^0.9.1",
"@backstage/plugin-permission-node": "^0.10.4",
"@backstage/plugin-proxy-backend": "^0.6.6",
"@backstage/plugin-scaffolder-backend": "^2.2.1",
"@backstage/plugin-scaffolder-backend-module-github": "^0.9.0",
"@backstage/plugin-scaffolder-backend-module-notifications": "^0.1.14",
"@backstage/plugin-search-backend": "^2.0.6",
"@backstage/plugin-search-backend-module-catalog": "^0.3.8",
"@backstage/plugin-search-backend-module-pg": "^0.5.48",
"@backstage/plugin-search-backend-module-techdocs": "^0.4.6",
"@backstage/plugin-search-backend-node": "^1.3.15",
"@backstage/plugin-signals-backend": "^0.3.8",
"@backstage/plugin-techdocs-backend": "^2.1.0",
"@internal/backstage-plugin-catalog-backend-module-google": "workspace:^",
"@internal/backstage-plugin-catalog-backend-module-serverlessops-catalog": "workspace:^",
"@internal/backstage-plugin-scaffolder-backend-module-serverlessops": "workspace:^",
"app": "link:../app",
"better-sqlite3": "^9.0.0",
"better-sqlite3": "^12.0.0",
"node-gyp": "^10.0.0",
"pg": "^8.13.0",
"winston": "^3.2.1"
"pg": "^8.13.0"
},
"devDependencies": {
"@backstage/cli": "^0.27.1",
"@types/express": "^4.17.6",
"@types/express-serve-static-core": "^4.17.5",
"@types/luxon": "^2.0.4"
"@backstage/cli": "^0.34.3"
},
"files": [
"dist"
Expand Down
Loading
Loading