Merge branch 'backstage:master' into master

This commit is contained in:
Ambrish R
2025-05-20 12:10:51 +05:30
committed by GitHub
601 changed files with 13755 additions and 1678 deletions
@@ -118,7 +118,7 @@ Code-like-docs, what? Okay, its just my little play on words. This is what I
### Golden Paths
At Spotify, we have the concept of [Golden Paths](https://engineering.atspotify.com/2020/08/17/how-we-use-golden-paths-to-solve-fragmentation-in-our-software-ecosystem/) — one for each engineering discipline. My favourite definition of Golden Path is that it is the “opinionated and supported path”. Each Golden Path has an accompanying Golden Path tutorial that walks you through the opinionated and supported path.
At Spotify, we have the concept of [Golden Paths](https://engineering.atspotify.com/2020/08/how-we-use-golden-paths-to-solve-fragmentation-in-our-software-ecosystem/) — one for each engineering discipline. My favourite definition of Golden Path is that it is the “opinionated and supported path”. Each Golden Path has an accompanying Golden Path tutorial that walks you through the opinionated and supported path.
The Golden Path tutorials are Spotifys most used and important documents and have shown themselves to be the most challenging to manage within a docs-like-code environment. One reason for this is that they are long, divided into many parts, and ownership is typically spread among many different teams. We have had to make use of GitHub codeowners to handle ownership and had to create datasets and data pipelines to be able to attach GitHub Issues to the specific parts or files that a team owns. Another challenge of the Golden Path tutorials is that parts are often dependent on other parts. We are just starting to look into how we can solve these dependency challenges in order to remove friction for engineers writing tutorial documentation.
@@ -14,7 +14,7 @@ One of the greatest strengths of Backstage also presents a never-ending challeng
Before providing recommendations on getting started with Backstage, its helpful to have a bit of context as to why Spotify made the design decisions we did. No two companies are identical — and thus, no two Backstage implementations are the same.
Rolling back the clock just a few years, [Spotify was challenged](https://engineering.atspotify.com/2021/05/18/a-product-story-the-lessons-of-backstage-and-spotifys-autonomous-culture/) to continue to scale our engineering team (and the number of features and components built) but retain the speed of product development. Some user research with Spotify developers highlighted a clear problem: there was simply too much non-documented institutional knowledge needed to get things done. No one could find anything and everyone was interrupting everyone else trying to figure things out.
Rolling back the clock just a few years, [Spotify was challenged](https://engineering.atspotify.com/2021/05/a-product-story-the-lessons-of-backstage-and-spotifys-autonomous-culture/) to continue to scale our engineering team (and the number of features and components built) but retain the speed of product development. Some user research with Spotify developers highlighted a clear problem: there was simply too much non-documented institutional knowledge needed to get things done. No one could find anything and everyone was interrupting everyone else trying to figure things out.
Spotifys developers were facing three big challenges on a daily basis:
@@ -7,7 +7,7 @@ authorURL: https://www.linkedin.com/in/austinlamon
[![The Backstage community is growing! In just over a year, Backstage has gone from a few open source building blocks to a thriving platform used by engineering orgs with thousands of developers. But even with 30+ adopting companies and 400+ contributors, we are still in the very early stages of reaching the platforms potential.](assets/21-06-22/spotify-backstage-header.gif)](https://backstage.spotify.com/)
_[backstage.spotify.com](https://backstage.spotify.com)_
The Backstage community is growing! In just over [a year](https://engineering.atspotify.com/2021/03/16/happy-birthday-backstage-spotifys-biggest-open-source-project-grows-up-fast/), Backstage has gone from a few open source building blocks to a thriving platform used by engineering orgs with thousands of developers. But even with 30+ [adopting companies](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) and 400+ contributors, we are still in the very early stages of reaching the platforms potential.
The Backstage community is growing! In just over [a year](https://engineering.atspotify.com/2021/03/happy-birthday-backstage-spotifys-biggest-open-source-project-grows-up-fast/), Backstage has gone from a few open source building blocks to a thriving platform used by engineering orgs with thousands of developers. But even with 30+ [adopting companies](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) and 400+ contributors, we are still in the very early stages of reaching the platforms potential.
In order to grow Backstage further, Spotify is increasing the support we provide both adopters (the people integrating Backstage into their organizations) and contributors (the people building features and improving the code). The more companies that adopt Backstage, the more support the project gets, the stronger the platform becomes for everyone.
@@ -6,7 +6,7 @@ authorURL: https://github.com/camilaibs
authorImageURL: https://avatars.githubusercontent.com/u/6290749?v=4
---
**TL;DR** There is no shortage of content that discusses the benefits that Backstage brings to organizations (and if you want to read more on that, you can just click [here](https://engineering.atspotify.com/category/backstage/), [here](https://backstage.io/blog), or [here](https://backstage.spotify.com/discover/blog/)). But I want to share what it did for me, a developer here at Spotify. And not just what it did, but how Ive used Backstage to help me achieve goals at each stage of my journey at Spotify — from my first day as a brand new employee to today, my 1,186th day as a contributor.
**TL;DR** There is no shortage of content that discusses the benefits that Backstage brings to organizations (and if you want to read more on that, you can just click [here](https://engineering.atspotify.com/?c=backstage), [here](https://backstage.io/blog), or [here](https://backstage.spotify.com/discover/blog/)). But I want to share what it did for me, a developer here at Spotify. And not just what it did, but how Ive used Backstage to help me achieve goals at each stage of my journey at Spotify — from my first day as a brand new employee to today, my 1,186th day as a contributor.
![Backstage Engineer Journey](assets/2024-06-27/backstage-engineer-journey.svg)
+7 -10
View File
@@ -1,13 +1,10 @@
---
title: Buildkite
author: roadie.io
authorUrl: https://roadie.io/?utm_source=backstage.io&utm_medium=marketplace&utm_campaign=buildkite
author: Buildkite
authorUrl: https://buildkite.com
category: CI/CD
description: View Buildkite CI builds for your service in Backstage.
documentation: https://roadie.io/backstage/plugins/buildkite/?utm_source=backstage.io&utm_medium=marketplace&utm_campaign=buildkite
iconUrl: https://roadie.io/images/logos/buildkite.png
npmPackageName: '@roadiehq/backstage-plugin-buildkite'
tags:
- ci
- cd
addedDate: '2021-04-20'
description: View Buildkite CI builds from within Backstage
documentation: https://github.com/buildkite/backstage-plugin
iconUrl: /img/buildkite.svg
npmPackageName: '@buildkite/backstage-plugin-buildkite'
addedDate: '2025-04-12'
+1 -1
View File
@@ -228,7 +228,7 @@ export default {
'features/software-templates/migrating-from-v1beta2-to-v1beta3',
'features/software-templates/dry-run-testing',
'features/software-templates/experimental',
'features/software-templates/template-extensions',
'features/software-templates/templating-extensions',
],
},
{
+7
View File
@@ -70,6 +70,13 @@ const Community = () => {
link: 'https://www.cncf.io/training/certification/cba/',
label: 'Learn more',
},
{
title: 'KodeKloud Certified Backstage Associate Course',
content:
'KodeKloud offers an interactive course with hands-on labs to prepare you for the Certified Backstage Associate exam. Perfect for practical learners who want to gain real-world Backstage skills.',
link: 'https://learn.kodekloud.com/user/courses?search=backstage',
label: 'Learn more',
},
];
const partners: { name: string; url: string; logo: string }[] = [
+1 -1
View File
@@ -31,7 +31,7 @@ const Demos = () => {
<p>
Watch the videos below to get an introduction to Backstage and to
see how we use different plugins to customize{' '}
<Link to="https://engineering.atspotify.com/2020/04/21/how-we-use-backstage-at-spotify/">
<Link to="https://engineering.atspotify.com/2020/04/how-we-use-backstage-at-spotify/">
our internal version of Backstage at Spotify
</Link>
</p>
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 480 320"><g clip-path="url(#a)"><path fill="#14CC80" d="M320 160v160l160-80V80l-160 80Z"/><path fill="#30F2A2" d="M320 0v160l160-80L320 0Z"/><path fill="#14CC80" d="M160 80v160l160-80V0L160 80Z"/><path fill="#30F2A2" d="M0 0v160l160 80V80L0 0Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h480v320H0z"/></clipPath></defs></svg>

After

Width:  |  Height:  |  Size: 402 B

+46 -46
View File
@@ -2961,90 +2961,90 @@ __metadata:
languageName: node
linkType: hard
"@swc/core-darwin-arm64@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-darwin-arm64@npm:1.11.21"
"@swc/core-darwin-arm64@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-darwin-arm64@npm:1.11.24"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@swc/core-darwin-x64@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-darwin-x64@npm:1.11.21"
"@swc/core-darwin-x64@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-darwin-x64@npm:1.11.24"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@swc/core-linux-arm-gnueabihf@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.11.21"
"@swc/core-linux-arm-gnueabihf@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.11.24"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@swc/core-linux-arm64-gnu@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-linux-arm64-gnu@npm:1.11.21"
"@swc/core-linux-arm64-gnu@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-linux-arm64-gnu@npm:1.11.24"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@swc/core-linux-arm64-musl@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-linux-arm64-musl@npm:1.11.21"
"@swc/core-linux-arm64-musl@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-linux-arm64-musl@npm:1.11.24"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@swc/core-linux-x64-gnu@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-linux-x64-gnu@npm:1.11.21"
"@swc/core-linux-x64-gnu@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-linux-x64-gnu@npm:1.11.24"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@swc/core-linux-x64-musl@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-linux-x64-musl@npm:1.11.21"
"@swc/core-linux-x64-musl@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-linux-x64-musl@npm:1.11.24"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@swc/core-win32-arm64-msvc@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-win32-arm64-msvc@npm:1.11.21"
"@swc/core-win32-arm64-msvc@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-win32-arm64-msvc@npm:1.11.24"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@swc/core-win32-ia32-msvc@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-win32-ia32-msvc@npm:1.11.21"
"@swc/core-win32-ia32-msvc@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-win32-ia32-msvc@npm:1.11.24"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@swc/core-win32-x64-msvc@npm:1.11.21":
version: 1.11.21
resolution: "@swc/core-win32-x64-msvc@npm:1.11.21"
"@swc/core-win32-x64-msvc@npm:1.11.24":
version: 1.11.24
resolution: "@swc/core-win32-x64-msvc@npm:1.11.24"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.46":
version: 1.11.21
resolution: "@swc/core@npm:1.11.21"
version: 1.11.24
resolution: "@swc/core@npm:1.11.24"
dependencies:
"@swc/core-darwin-arm64": "npm:1.11.21"
"@swc/core-darwin-x64": "npm:1.11.21"
"@swc/core-linux-arm-gnueabihf": "npm:1.11.21"
"@swc/core-linux-arm64-gnu": "npm:1.11.21"
"@swc/core-linux-arm64-musl": "npm:1.11.21"
"@swc/core-linux-x64-gnu": "npm:1.11.21"
"@swc/core-linux-x64-musl": "npm:1.11.21"
"@swc/core-win32-arm64-msvc": "npm:1.11.21"
"@swc/core-win32-ia32-msvc": "npm:1.11.21"
"@swc/core-win32-x64-msvc": "npm:1.11.21"
"@swc/core-darwin-arm64": "npm:1.11.24"
"@swc/core-darwin-x64": "npm:1.11.24"
"@swc/core-linux-arm-gnueabihf": "npm:1.11.24"
"@swc/core-linux-arm64-gnu": "npm:1.11.24"
"@swc/core-linux-arm64-musl": "npm:1.11.24"
"@swc/core-linux-x64-gnu": "npm:1.11.24"
"@swc/core-linux-x64-musl": "npm:1.11.24"
"@swc/core-win32-arm64-msvc": "npm:1.11.24"
"@swc/core-win32-ia32-msvc": "npm:1.11.24"
"@swc/core-win32-x64-msvc": "npm:1.11.24"
"@swc/counter": "npm:^0.1.3"
"@swc/types": "npm:^0.1.21"
peerDependencies:
@@ -3073,7 +3073,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
checksum: 10/98a0f201a0a4aa026b0b07c61c8da49d94d4ac3b059b466416c90b9b2cb4f457d836ae55ccfe90b0a89c7bdde36526ba5b7747c4e616c0d556c733e3728e9dd4
checksum: 10/0b3e883f8a5652a7ab221a777386ccc8a65fc5b53d533bad15b703b22984eb3b449efd907b1872263f1a9990a9a50612f3c6deb619894a43f03cd974ec9bd1b7
languageName: node
linkType: hard
@@ -7749,8 +7749,8 @@ __metadata:
linkType: hard
"http-proxy-middleware@npm:^2.0.3":
version: 2.0.7
resolution: "http-proxy-middleware@npm:2.0.7"
version: 2.0.9
resolution: "http-proxy-middleware@npm:2.0.9"
dependencies:
"@types/http-proxy": "npm:^1.17.8"
http-proxy: "npm:^1.18.1"
@@ -7762,7 +7762,7 @@ __metadata:
peerDependenciesMeta:
"@types/express":
optional: true
checksum: 10/4a51bf612b752ad945701995c1c029e9501c97e7224c0cf3f8bf6d48d172d6a8f2b57c20fec469534fdcac3aa8a6f332224a33c6b0d7f387aa2cfff9b67216fd
checksum: 10/4ece416a91d52e96f8136c5f4abfbf7ac2f39becbad21fa8b158a12d7e7d8f808287ff1ae342b903fd1f15f2249dee87fabc09e1f0e73106b83331c496d67660
languageName: node
linkType: hard