|
| 1 | +diff --git a/app-config.production.yaml b/app-config.production.yaml |
| 2 | +index 05b02ac..5d426f5 100644 |
| 3 | +--- a/app-config.production.yaml |
| 4 | ++++ b/app-config.production.yaml |
| 5 | +@@ -15,3 +15,3 @@ backend: |
| 6 | + |
| 7 | +- # config options: https://node-postgres.com/api/client |
| 8 | ++ # config options: https://node-postgres.com/apis/client |
| 9 | + database: |
| 10 | +@@ -32,3 +32,3 @@ auth: |
| 11 | + providers: |
| 12 | +- guest: null |
| 13 | ++ guest: {} |
| 14 | + |
| 15 | +@@ -38,2 +38,18 @@ catalog: |
| 16 | + # on how to get entities into the catalog. |
| 17 | +- locations: [] |
| 18 | ++ locations: |
| 19 | ++ # Local example data, replace this with your production config, these are intended for demo use only. |
| 20 | ++ # File locations are relative to the backend process, typically in a deployed context, such as in a Docker container, this will be the root |
| 21 | ++ - type: file |
| 22 | ++ target: ./examples/entities.yaml |
| 23 | ++ |
| 24 | ++ # Local example template |
| 25 | ++ - type: file |
| 26 | ++ target: ./examples/template/template.yaml |
| 27 | ++ rules: |
| 28 | ++ - allow: [Template] |
| 29 | ++ |
| 30 | ++ # Local example organizational data |
| 31 | ++ - type: file |
| 32 | ++ target: ./examples/org.yaml |
| 33 | ++ rules: |
| 34 | ++ - allow: [User, Group] |
| 35 | +diff --git a/app-config.yaml b/app-config.yaml |
| 36 | +index 248cff1..f784d5b 100644 |
| 37 | +--- a/app-config.yaml |
| 38 | ++++ b/app-config.yaml |
| 39 | +@@ -105 +105,4 @@ catalog: |
| 40 | + # - allow: [User, Group] |
| 41 | ++ |
| 42 | ++kubernetes: |
| 43 | ++ # see https://backstage.io/docs/features/kubernetes/configuration for kubernetes configuration options |
| 44 | +diff --git a/backstage.json b/backstage.json |
| 45 | +index 39708a0..d289f50 100644 |
| 46 | +--- a/backstage.json |
| 47 | ++++ b/backstage.json |
| 48 | +@@ -1,3 +1,3 @@ |
| 49 | + { |
| 50 | +- "version": "1.24.0" |
| 51 | ++ "version": "1.30.0-next.2" |
| 52 | + } |
| 53 | +diff --git a/package.json b/package.json |
| 54 | +index 5460719..89fb962 100644 |
| 55 | +--- a/package.json |
| 56 | ++++ b/package.json |
| 57 | +@@ -33,3 +33,3 @@ |
| 58 | + "devDependencies": { |
| 59 | +- "@backstage/cli": "^0.26.0", |
| 60 | ++ "@backstage/cli": "^0.27.0-next.2", |
| 61 | + "@backstage/e2e-test-utils": "^0.1.1", |
| 62 | +@@ -39,5 +39,5 @@ |
| 63 | + "lerna": "^7.3.0", |
| 64 | +- "node-gyp": "^9.0.0", |
| 65 | ++ "node-gyp": "^10.0.0", |
| 66 | + "prettier": "^2.3.2", |
| 67 | +- "typescript": "~5.3.0" |
| 68 | ++ "typescript": "~5.4.0" |
| 69 | + }, |
| 70 | +diff --git a/packages/app/package.json b/packages/app/package.json |
| 71 | +index 400f6cc..82496b9 100644 |
| 72 | +--- a/packages/app/package.json |
| 73 | ++++ b/packages/app/package.json |
| 74 | +@@ -16,27 +16,26 @@ |
| 75 | + "dependencies": { |
| 76 | +- "@backstage/app-defaults": "^1.5.1", |
| 77 | +- "@backstage/catalog-model": "^1.4.5", |
| 78 | +- "@backstage/cli": "^0.26.0", |
| 79 | +- "@backstage/core-app-api": "^1.12.1", |
| 80 | +- "@backstage/core-components": "^0.14.1", |
| 81 | +- "@backstage/core-plugin-api": "^1.9.1", |
| 82 | +- "@backstage/integration-react": "^1.1.25", |
| 83 | +- "@backstage/plugin-api-docs": "^0.11.1", |
| 84 | +- "@backstage/plugin-catalog": "^1.18.0", |
| 85 | +- "@backstage/plugin-catalog-common": "^1.0.22", |
| 86 | +- "@backstage/plugin-catalog-graph": "^0.4.1", |
| 87 | +- "@backstage/plugin-catalog-import": "^0.10.7", |
| 88 | +- "@backstage/plugin-catalog-react": "^1.11.0", |
| 89 | +- "@backstage/plugin-github-actions": "^0.6.12", |
| 90 | +- "@backstage/plugin-org": "^0.6.21", |
| 91 | +- "@backstage/plugin-permission-react": "^0.4.21", |
| 92 | +- "@backstage/plugin-scaffolder": "^1.19.0", |
| 93 | +- "@backstage/plugin-search": "^1.4.7", |
| 94 | +- "@backstage/plugin-search-react": "^1.7.7", |
| 95 | +- "@backstage/plugin-tech-radar": "^0.7.0", |
| 96 | +- "@backstage/plugin-techdocs": "^1.10.1", |
| 97 | +- "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.6", |
| 98 | +- "@backstage/plugin-techdocs-react": "^1.2.0", |
| 99 | +- "@backstage/plugin-user-settings": "^0.8.2", |
| 100 | +- "@backstage/theme": "^0.5.2", |
| 101 | ++ "@backstage/app-defaults": "^1.5.10-next.1", |
| 102 | ++ "@backstage/catalog-model": "^1.5.0", |
| 103 | ++ "@backstage/cli": "^0.27.0-next.2", |
| 104 | ++ "@backstage/core-app-api": "^1.14.2-next.0", |
| 105 | ++ "@backstage/core-components": "^0.14.10-next.0", |
| 106 | ++ "@backstage/core-plugin-api": "^1.9.3", |
| 107 | ++ "@backstage/integration-react": "^1.1.30-next.0", |
| 108 | ++ "@backstage/plugin-api-docs": "^0.11.8-next.1", |
| 109 | ++ "@backstage/plugin-catalog": "^1.21.2-next.1", |
| 110 | ++ "@backstage/plugin-catalog-common": "^1.0.26-next.0", |
| 111 | ++ "@backstage/plugin-catalog-graph": "^0.4.8-next.2", |
| 112 | ++ "@backstage/plugin-catalog-import": "^0.12.2-next.1", |
| 113 | ++ "@backstage/plugin-catalog-react": "^1.12.3-next.1", |
| 114 | ++ "@backstage/plugin-kubernetes": "^0.11.13-next.1", |
| 115 | ++ "@backstage/plugin-org": "^0.6.28-next.1", |
| 116 | ++ "@backstage/plugin-permission-react": "^0.4.25-next.0", |
| 117 | ++ "@backstage/plugin-scaffolder": "^1.23.1-next.1", |
| 118 | ++ "@backstage/plugin-search": "^1.4.15-next.1", |
| 119 | ++ "@backstage/plugin-search-react": "^1.7.14-next.1", |
| 120 | ++ "@backstage/plugin-techdocs": "^1.10.8-next.1", |
| 121 | ++ "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.13-next.0", |
| 122 | ++ "@backstage/plugin-techdocs-react": "^1.2.7-next.0", |
| 123 | ++ "@backstage/plugin-user-settings": "^0.8.11-next.1", |
| 124 | ++ "@backstage/theme": "^0.5.6", |
| 125 | + "@material-ui/core": "^4.12.2", |
| 126 | +@@ -51,3 +50,3 @@ |
| 127 | + "devDependencies": { |
| 128 | +- "@backstage/test-utils": "^1.5.1", |
| 129 | ++ "@backstage/test-utils": "^1.5.10-next.1", |
| 130 | + "@playwright/test": "^1.32.3", |
| 131 | +diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx |
| 132 | +index f751cf6..e24c468 100644 |
| 133 | +--- a/packages/app/src/App.tsx |
| 134 | ++++ b/packages/app/src/App.tsx |
| 135 | +@@ -15,3 +15,2 @@ import { orgPlugin } from '@backstage/plugin-org'; |
| 136 | + import { SearchPage } from '@backstage/plugin-search'; |
| 137 | +-import { TechRadarPage } from '@backstage/plugin-tech-radar'; |
| 138 | + import { |
| 139 | +@@ -85,6 +84,2 @@ const routes = ( |
| 140 | + <Route path="/api-docs" element={<ApiExplorerPage />} /> |
| 141 | +- <Route |
| 142 | +- path="/tech-radar" |
| 143 | +- element={<TechRadarPage width={1500} height={800} />} |
| 144 | +- /> |
| 145 | + <Route |
| 146 | +diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx |
| 147 | +index 6768b48..853d175 100644 |
| 148 | +--- a/packages/app/src/components/Root/Root.tsx |
| 149 | ++++ b/packages/app/src/components/Root/Root.tsx |
| 150 | +@@ -4,3 +4,2 @@ import HomeIcon from '@material-ui/icons/Home'; |
| 151 | + import ExtensionIcon from '@material-ui/icons/Extension'; |
| 152 | +-import MapIcon from '@material-ui/icons/MyLocation'; |
| 153 | + import LibraryBooks from '@material-ui/icons/LibraryBooks'; |
| 154 | +@@ -28,2 +27,4 @@ import MenuIcon from '@material-ui/icons/Menu'; |
| 155 | + import SearchIcon from '@material-ui/icons/Search'; |
| 156 | ++import { MyGroupsSidebarItem } from '@backstage/plugin-org'; |
| 157 | ++import GroupIcon from '@material-ui/icons/People'; |
| 158 | + |
| 159 | +@@ -68,2 +69,7 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( |
| 160 | + <SidebarItem icon={HomeIcon} to="catalog" text="Home" /> |
| 161 | ++ <MyGroupsSidebarItem |
| 162 | ++ singularTitle="My Group" |
| 163 | ++ pluralTitle="My Groups" |
| 164 | ++ icon={GroupIcon} |
| 165 | ++ /> |
| 166 | + <SidebarItem icon={ExtensionIcon} to="api-docs" text="APIs" /> |
| 167 | +@@ -74,3 +80,3 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( |
| 168 | + <SidebarScrollWrapper> |
| 169 | +- <SidebarItem icon={MapIcon} to="tech-radar" text="Tech Radar" /> |
| 170 | ++ {/* Items in this group will be scrollable if they run out of space */} |
| 171 | + </SidebarScrollWrapper> |
| 172 | +diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx |
| 173 | +index 7c6a71e..6164c76 100644 |
| 174 | +--- a/packages/app/src/components/catalog/EntityPage.tsx |
| 175 | ++++ b/packages/app/src/components/catalog/EntityPage.tsx |
| 176 | +@@ -30,6 +30,2 @@ import { |
| 177 | + } from '@backstage/plugin-catalog'; |
| 178 | +-import { |
| 179 | +- isGithubActionsAvailable, |
| 180 | +- EntityGithubActionsContent, |
| 181 | +-} from '@backstage/plugin-github-actions'; |
| 182 | + import { |
| 183 | +@@ -60,2 +56,7 @@ import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; |
| 184 | + |
| 185 | ++import { |
| 186 | ++ EntityKubernetesContent, |
| 187 | ++ isKubernetesAvailable, |
| 188 | ++} from '@backstage/plugin-kubernetes'; |
| 189 | ++ |
| 190 | + const techdocsContent = ( |
| 191 | +@@ -72,5 +73,9 @@ const cicdContent = ( |
| 192 | + <EntitySwitch> |
| 193 | +- <EntitySwitch.Case if={isGithubActionsAvailable}> |
| 194 | +- <EntityGithubActionsContent /> |
| 195 | +- </EntitySwitch.Case> |
| 196 | ++ {/* |
| 197 | ++ Here you can add support for different CI/CD services, for example |
| 198 | ++ using @backstage-community/plugin-github-actions as follows: |
| 199 | ++ <EntitySwitch.Case if={isGithubActionsAvailable}> |
| 200 | ++ <EntityGithubActionsContent /> |
| 201 | ++ </EntitySwitch.Case> |
| 202 | ++ */} |
| 203 | + |
| 204 | +@@ -152,2 +157,10 @@ const serviceEntityPage = ( |
| 205 | + |
| 206 | ++ <EntityLayout.Route |
| 207 | ++ path="/kubernetes" |
| 208 | ++ title="Kubernetes" |
| 209 | ++ if={isKubernetesAvailable} |
| 210 | ++ > |
| 211 | ++ <EntityKubernetesContent /> |
| 212 | ++ </EntityLayout.Route> |
| 213 | ++ |
| 214 | + <EntityLayout.Route path="/api" title="API"> |
| 215 | +@@ -190,2 +203,10 @@ const websiteEntityPage = ( |
| 216 | + |
| 217 | ++ <EntityLayout.Route |
| 218 | ++ path="/kubernetes" |
| 219 | ++ title="Kubernetes" |
| 220 | ++ if={isKubernetesAvailable} |
| 221 | ++ > |
| 222 | ++ <EntityKubernetesContent /> |
| 223 | ++ </EntityLayout.Route> |
| 224 | ++ |
| 225 | + <EntityLayout.Route path="/dependencies" title="Dependencies"> |
| 226 | +diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile |
| 227 | +index 18548e9..bef67b5 100644 |
| 228 | +--- a/packages/backend/Dockerfile |
| 229 | ++++ b/packages/backend/Dockerfile |
| 230 | +@@ -47,2 +47,5 @@ RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid |
| 231 | + |
| 232 | ++# This will include the examples, if you don't need these simply remove this line |
| 233 | ++COPY --chown=node:node examples ./examples |
| 234 | ++ |
| 235 | + # Then copy the rest of the backend bundle, along with any other files we might want. |
| 236 | +diff --git a/packages/backend/package.json b/packages/backend/package.json |
| 237 | +index 454444e..2c47cc7 100644 |
| 238 | +--- a/packages/backend/package.json |
| 239 | ++++ b/packages/backend/package.json |
| 240 | +@@ -18,28 +18,30 @@ |
| 241 | + "dependencies": { |
| 242 | +- "@backstage/backend-common": "^0.21.4", |
| 243 | +- "@backstage/backend-defaults": "^0.2.14", |
| 244 | +- "@backstage/backend-tasks": "^0.5.19", |
| 245 | ++ "@backstage/backend-common": "^0.23.4-next.1", |
| 246 | ++ "@backstage/backend-defaults": "^0.4.2-next.1", |
| 247 | ++ "@backstage/backend-tasks": "^0.5.28-next.1", |
| 248 | + "@backstage/config": "^1.2.0", |
| 249 | +- "@backstage/plugin-app-backend": "^0.3.62", |
| 250 | +- "@backstage/plugin-auth-backend": "^0.22.0", |
| 251 | +- "@backstage/plugin-auth-backend-module-github-provider": "^0.1.11", |
| 252 | +- "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.0", |
| 253 | +- "@backstage/plugin-auth-node": "^0.4.9", |
| 254 | +- "@backstage/plugin-catalog-backend": "^1.18.0", |
| 255 | +- "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.11", |
| 256 | +- "@backstage/plugin-permission-backend": "^0.5.37", |
| 257 | +- "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.1.11", |
| 258 | +- "@backstage/plugin-permission-common": "^0.7.13", |
| 259 | +- "@backstage/plugin-permission-node": "^0.7.25", |
| 260 | +- "@backstage/plugin-proxy-backend": "^0.4.12", |
| 261 | +- "@backstage/plugin-scaffolder-backend": "^1.22.0", |
| 262 | +- "@backstage/plugin-search-backend": "^1.5.4", |
| 263 | +- "@backstage/plugin-search-backend-module-catalog": "^0.1.18", |
| 264 | +- "@backstage/plugin-search-backend-module-techdocs": "^0.1.18", |
| 265 | +- "@backstage/plugin-search-backend-node": "^1.2.18", |
| 266 | +- "@backstage/plugin-techdocs-backend": "^1.10.0", |
| 267 | ++ "@backstage/plugin-app-backend": "^0.3.72-next.1", |
| 268 | ++ "@backstage/plugin-auth-backend": "^0.22.10-next.1", |
| 269 | ++ "@backstage/plugin-auth-backend-module-github-provider": "^0.1.20-next.1", |
| 270 | ++ "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.9-next.1", |
| 271 | ++ "@backstage/plugin-auth-node": "^0.4.18-next.1", |
| 272 | ++ "@backstage/plugin-catalog-backend": "^1.24.1-next.1", |
| 273 | ++ "@backstage/plugin-catalog-backend-module-logs": "^0.0.2-next.1", |
| 274 | ++ "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.21-next.1", |
| 275 | ++ "@backstage/plugin-kubernetes-backend": "^0.18.4-next.1", |
| 276 | ++ "@backstage/plugin-permission-backend": "^0.5.47-next.1", |
| 277 | ++ "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.1.20-next.1", |
| 278 | ++ "@backstage/plugin-permission-common": "^0.8.1-next.0", |
| 279 | ++ "@backstage/plugin-permission-node": "^0.8.1-next.1", |
| 280 | ++ "@backstage/plugin-proxy-backend": "^0.5.4-next.1", |
| 281 | ++ "@backstage/plugin-scaffolder-backend": "^1.23.1-next.1", |
| 282 | ++ "@backstage/plugin-search-backend": "^1.5.15-next.1", |
| 283 | ++ "@backstage/plugin-search-backend-module-catalog": "^0.1.29-next.1", |
| 284 | ++ "@backstage/plugin-search-backend-module-pg": "^0.5.33-next.1", |
| 285 | ++ "@backstage/plugin-search-backend-module-techdocs": "^0.1.28-next.1", |
| 286 | ++ "@backstage/plugin-search-backend-node": "^1.2.28-next.1", |
| 287 | ++ "@backstage/plugin-techdocs-backend": "^1.10.10-next.1", |
| 288 | + "app": "link:../app", |
| 289 | + "better-sqlite3": "^9.0.0", |
| 290 | +- "dockerode": "^3.3.1", |
| 291 | +- "node-gyp": "^9.0.0", |
| 292 | ++ "node-gyp": "^10.0.0", |
| 293 | + "pg": "^8.11.3", |
| 294 | +@@ -48,4 +50,3 @@ |
| 295 | + "devDependencies": { |
| 296 | +- "@backstage/cli": "^0.26.0", |
| 297 | +- "@types/dockerode": "^3.3.0", |
| 298 | ++ "@backstage/cli": "^0.27.0-next.2", |
| 299 | + "@types/express": "^4.17.6", |
| 300 | +diff --git a/packages/backend/src/index.test.ts b/packages/backend/src/index.test.ts |
| 301 | +deleted file mode 100644 |
| 302 | +index 7814b8c..0000000 |
| 303 | +--- a/packages/backend/src/index.test.ts |
| 304 | ++++ /dev/null |
| 305 | +@@ -1,8 +0,0 @@ |
| 306 | +-import { PluginEnvironment } from './types'; |
| 307 | +- |
| 308 | +-describe('test', () => { |
| 309 | +- it('unbreaks the test runner', () => { |
| 310 | +- const unbreaker = {} as PluginEnvironment; |
| 311 | +- expect(unbreaker).toBeTruthy(); |
| 312 | +- }); |
| 313 | +-}); |
| 314 | +diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts |
| 315 | +index 44fde69..cf2caae 100644 |
| 316 | +--- a/packages/backend/src/index.ts |
| 317 | ++++ b/packages/backend/src/index.ts |
| 318 | +@@ -21,3 +21,3 @@ backend.add(import('@backstage/plugin-auth-backend')); |
| 319 | + backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); |
| 320 | +-// See https://github.com/backstage/backstage/blob/master/docs/auth/guest/provider.md |
| 321 | ++// See https://backstage.io/docs/auth/guest/provider |
| 322 | + |
| 323 | +@@ -29,2 +29,5 @@ backend.add( |
| 324 | + |
| 325 | ++// See https://backstage.io/docs/features/software-catalog/configuration#subscribing-to-catalog-errors |
| 326 | ++backend.add(import('@backstage/plugin-catalog-backend-module-logs')); |
| 327 | ++ |
| 328 | + // permission plugin |
| 329 | +@@ -37,2 +40,8 @@ backend.add( |
| 330 | + backend.add(import('@backstage/plugin-search-backend/alpha')); |
| 331 | ++ |
| 332 | ++// search engine |
| 333 | ++// See https://backstage.io/docs/features/search/search-engines |
| 334 | ++backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); |
| 335 | ++ |
| 336 | ++// search collators |
| 337 | + backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); |
| 338 | +@@ -40,2 +49,5 @@ backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); |
| 339 | + |
| 340 | ++// kubernetes |
| 341 | ++backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); |
| 342 | ++ |
| 343 | + backend.start(); |
| 344 | +diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts |
| 345 | +deleted file mode 100644 |
| 346 | +index 9cd2c74..0000000 |
| 347 | +--- a/packages/backend/src/types.ts |
| 348 | ++++ /dev/null |
| 349 | +@@ -1,25 +0,0 @@ |
| 350 | +-import { Logger } from 'winston'; |
| 351 | +-import { Config } from '@backstage/config'; |
| 352 | +-import { |
| 353 | +- PluginCacheManager, |
| 354 | +- PluginDatabaseManager, |
| 355 | +- PluginEndpointDiscovery, |
| 356 | +- TokenManager, |
| 357 | +- UrlReader, |
| 358 | +-} from '@backstage/backend-common'; |
| 359 | +-import { PluginTaskScheduler } from '@backstage/backend-tasks'; |
| 360 | +-import { PermissionEvaluator } from '@backstage/plugin-permission-common'; |
| 361 | +-import { IdentityApi } from '@backstage/plugin-auth-node'; |
| 362 | +- |
| 363 | +-export type PluginEnvironment = { |
| 364 | +- logger: Logger; |
| 365 | +- database: PluginDatabaseManager; |
| 366 | +- cache: PluginCacheManager; |
| 367 | +- config: Config; |
| 368 | +- reader: UrlReader; |
| 369 | +- discovery: PluginEndpointDiscovery; |
| 370 | +- tokenManager: TokenManager; |
| 371 | +- scheduler: PluginTaskScheduler; |
| 372 | +- permissions: PermissionEvaluator; |
| 373 | +- identity: IdentityApi; |
| 374 | +-}; |
0 commit comments