Merge branch 'master' into new-release-31-aug-20

This commit is contained in:
Patrik Oldsberg
2020-09-02 16:17:40 +02:00
committed by GitHub
101 changed files with 2379 additions and 1145 deletions
+3
View File
@@ -45,6 +45,9 @@ class Footer extends React.Component {
<div>
<h5>Community</h5>
<a href="https://discord.gg/MUpMjP2">Support chatroom</a>
<a href="https://github.com/spotify/backstage/blob/master/CONTRIBUTING.md">
Contributing
</a>
<a href="https://mailchi.mp/spotify/backstage-community">
Subscribe to our newsletter
</a>
+9
View File
@@ -0,0 +1,9 @@
---
title: API Docs
author: SDA SE
authorUrl: https://sda.se/
category: Discovery
description: Components to discover and display API entities as an extension to the catalog plugin.
documentation: https://github.com/spotify/backstage/blob/master/plugins/api-docs/README.md
iconUrl: https://thecoders.io/wp-content/uploads/2019/11/tech-swagger.svg
npmPackageName: '@backstage/plugin-api-docs'
+9
View File
@@ -0,0 +1,9 @@
---
title: CircleCI
author: Spotify
authorUrl: https://www.spotify.com/
category: CI
description: Automate your development process with CI hosted in the cloud or on a private server.
documentation: https://github.com/spotify/backstage/tree/master/plugins/circleci
iconUrl: https://www.saaves.com/storage/brochure/logo-circleci-icon1583764538.png
npmPackageName: '@backstage/plugin-circleci'
@@ -0,0 +1,13 @@
---
title: GitHub Actions
author: Spotify
authorUrl: https://www.spotify.com/
category: CI
description: GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.
documentation: https://github.com/spotify/backstage/tree/master/plugins/github-actions
iconUrl: https://avatars2.githubusercontent.com/u/44036562?s=400&v=4
npmPackageName: '@backstage/plugin-github-actions'
tags:
- ci
- cd
- github
@@ -0,0 +1,10 @@
---
title: GitHub Pull Requests
author: roadie.io
authorUrl: https://roadie.io/
category: CI
description: View GitHub pull requests for your service in Backstage.
documentation: https://roadie.io/backstage/plugins/github-pull-requests
iconUrl: https://roadie.io/static/7f13bb8d861d8dedc5112fb939d215f9/351f2/GitHub-Mark-Light-120px-plus.png
npmPackageName: '@roadiehq/backstage-plugin-github-pull-requests'
@@ -0,0 +1,14 @@
---
title: GitOps Clusters
author: Weaveworks
authorUrl: https://www.weave.works/
category: Kubernetes
description: Create GitOps-managed Kubernetes clusters. Currently, it supports provisioning EKS clusters on GitHub via GitHub Actions.
documentation: https://github.com/spotify/backstage/tree/master/plugins/gitops-profiles
iconUrl: https://res-5.cloudinary.com/crunchbase-production/image/upload/c_lpad,h_256,w_256,f_auto,q_auto:eco/v1462316670/i9d3delzvx1erzjhmcws.png
npmPackageName: '@backstage/plugin-gitops-profiles'
tags:
- kubernetes
- gitops
- github
- eks
+13
View File
@@ -0,0 +1,13 @@
---
title: GraphiQL
author: Spotify
authorUrl: https://www.spotify.com/
category: Debugging
description: Integrates GraphiQL as a tool to browse GraphiQL endpoints inside Backstage.
documentation: https://github.com/spotify/backstage/tree/master/plugins/lighthouse
iconUrl: https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/GraphQL_Logo.svg/1024px-GraphQL_Logo.svg.png
npmPackageName: '@backstage/plugin-graphiql'
tags:
- graphql
- github
- gitlab
+14
View File
@@ -0,0 +1,14 @@
---
title: Lighthouse
author: Spotify
authorUrl: https://www.spotify.com/
category: Accessibility
description: Google's Lighthouse tool is a great resource for benchmarking and improving the accessibility, performance, SEO, and best practices of your website.
documentation: https://github.com/spotify/backstage/tree/master/plugins/lighthouse
iconUrl: https://seeklogo.com/images/G/google-lighthouse-logo-1C7FA08580-seeklogo.com.png
npmPackageName: '@backstage/plugin-lighthouse'
tags:
- web
- seo
- accessibility
- performance
+14
View File
@@ -0,0 +1,14 @@
---
title: New Relic
author: '@timwheelercom'
authorUrl: https://github.com/timwheelercom
category: Monitoring
description: Observability platform built to help engineers create and monitor their software.
documentation: https://github.com/spotify/backstage/tree/master/plugins/newrelic
iconUrl: https://www.mulesoft.com/sites/default/files/2018-10/New_relic.png
npmPackageName: '@backstage/plugin-newrelic'
tags:
- performance
- monitoring
- errors
- alerting
+9
View File
@@ -0,0 +1,9 @@
---
title: Tech Radar
author: Spotify
authorUrl: https://www.spotify.com/
category: Discovery
description: Visualize the your company's official guidelines of different areas of software development.
documentation: https://github.com/spotify/backstage/tree/master/plugins/tech-radar
iconUrl: https://img.icons8.com/officel/2x/radar.png
npmPackageName: '@backstage/plugin-tech-radar'
-325
View File
@@ -1,325 +0,0 @@
{
"_comment": "This file is auto-generated by write-translations.js",
"localized-strings": {
"next": "Next",
"previous": "Previous",
"tagline": "An open platform for building developer portals",
"docs": {
"api/backend": {
"title": "Backend"
},
"api/utility-apis": {
"title": "Utility APIs"
},
"architecture-decisions/adrs-adr001": {
"title": "ADR001: Architecture Decision Record (ADR) log",
"sidebar_label": "ADR001"
},
"architecture-decisions/adrs-adr002": {
"title": "ADR002: Default Software Catalog File Format",
"sidebar_label": "ADR002"
},
"architecture-decisions/adrs-adr003": {
"title": "ADR003: Avoid Default Exports and Prefer Named Exports",
"sidebar_label": "ADR003"
},
"architecture-decisions/adrs-adr004": {
"title": "ADR004: Module Export Structure",
"sidebar_label": "ADR004"
},
"architecture-decisions/adrs-adr005": {
"title": "ADR005: Catalog Core Entities",
"sidebar_label": "ADR005"
},
"architecture-decisions/adrs-adr006": {
"title": "ADR006: Avoid React.FC and React.SFC",
"sidebar_label": "ADR006"
},
"architecture-decisions/adrs-adr007": {
"title": "ADR007: Use MSW to mock http requests",
"sidebar_label": "ADR007"
},
"architecture-decisions/adrs-adr008": {
"title": "ADR008: Default Catalog File Name",
"sidebar_label": "ADR008"
},
"architecture-decisions/adrs-overview": {
"title": "Architecture Decision Records (ADR)",
"sidebar_label": "Overview"
},
"auth/add-auth-provider": {
"title": "Adding authentication providers"
},
"auth/auth-backend-classes": {
"title": "Auth backend classes"
},
"auth/auth-backend": {
"title": "Auth backend"
},
"auth/glossary": {
"title": "Glossary"
},
"auth/index": {
"title": "User Authentication and Authorization in Backstage"
},
"auth/oauth": {
"title": "OAuth and OpenID Connect"
},
"conf/defining": {
"title": "Defining Configuration for your Plugin"
},
"conf/index": {
"title": "Static Configuration in Backstage"
},
"conf/reading": {
"title": "Reading Backstage Configuration"
},
"conf/writing": {
"title": "Writing Backstage Configuration Files"
},
"dls/contributing-to-storybook": {
"title": "Contributing to Storybook"
},
"dls/design": {
"title": "Design"
},
"dls/figma": {
"title": "Figma"
},
"FAQ": {
"title": "FAQ"
},
"features/software-catalog/software-catalog-api": {
"title": "API"
},
"features/software-catalog/descriptor-format": {
"title": "Descriptor Format of Catalog Entities",
"sidebar_label": "YAML File Format"
},
"features/software-catalog/extending-the-model": {
"title": "Extending the model"
},
"features/software-catalog/external-integrations": {
"title": "External integrations"
},
"features/software-catalog/software-catalog-overview": {
"title": "Backstage Service Catalog (alpha)",
"sidebar_label": "Backstage Service Catalog"
},
"features/software-catalog/installation": {
"title": "features/software-catalog/installation"
},
"features/software-catalog/system-model": {
"title": "System Model"
},
"features/software-templates/adding-templates": {
"title": "Adding your own Templates"
},
"features/software-templates/extending/extending-preparer": {
"title": "Create your own Preparer"
},
"features/software-templates/extending/extending-publisher": {
"title": "Create your own Publisher"
},
"features/software-templates/extending/extending-templater": {
"title": "Creating your own Templater"
},
"features/software-templates/extending/extending-index": {
"title": "Extending the Scaffolder"
},
"features/software-templates/software-templates-index": {
"title": "Software Templates"
},
"features/software-templates/installation": {
"title": "features/software-templates/installation"
},
"features/techdocs/concepts": {
"title": "Concepts"
},
"features/techdocs/creating-and-publishing": {
"title": "Creating and publishing your docs",
"sidebar_label": "Creating and Publishing Documentation"
},
"features/techdocs/faqs": {
"title": "TechDocs FAQ",
"sidebar_label": "FAQ"
},
"features/techdocs/getting-started": {
"title": "Getting Started"
},
"features/techdocs/techdocs-overview": {
"title": "TechDocs Documentation",
"sidebar_label": "Overview"
},
"getting-started/app-custom-theme": {
"title": "Customize the look-and-feel of your App"
},
"getting-started/configure-app-with-plugins": {
"title": "Configuring App with plugins"
},
"getting-started/create-an-app": {
"title": "Create an App"
},
"getting-started/deployment-k8s": {
"title": "Kubernetes"
},
"getting-started/deployment-other": {
"title": "Other"
},
"getting-started/development-environment": {
"title": "Development Environment"
},
"getting-started/index": {
"title": "Running Backstage Locally"
},
"getting-started/installation": {
"title": "Installation"
},
"overview/adopting": {
"title": "Strategies for adopting"
},
"overview/architecture-overview": {
"title": "Architecture overview"
},
"overview/architecture-terminology": {
"title": "Architecture terminology"
},
"overview/background": {
"title": "The Spotify Story"
},
"overview/roadmap": {
"title": "Project roadmap"
},
"overview/support": {
"title": "Support and community"
},
"overview/vision": {
"title": "Vision"
},
"overview/what-is-backstage": {
"title": "What is Backstage?"
},
"plugins/add-to-marketplace": {
"title": "Add to Marketplace"
},
"plugins/backend-plugin": {
"title": "Backend plugin"
},
"plugins/call-existing-api": {
"title": "Call Existing API"
},
"plugins/create-a-plugin": {
"title": "Create a Backstage Plugin"
},
"plugins/existing-plugins": {
"title": "Existing plugins"
},
"plugins/index": {
"title": "Intro to plugins"
},
"plugins/plugin-development": {
"title": "Plugin Development"
},
"plugins/proxying": {
"title": "Proxying"
},
"plugins/publish-private": {
"title": "Publish private"
},
"plugins/publishing": {
"title": "Publishing"
},
"plugins/structure-of-a-plugin": {
"title": "Structure of a Plugin"
},
"plugins/testing": {
"title": "Testing with Jest"
},
"README": {
"title": "README"
},
"reference/createPlugin-feature-flags": {
"title": "createPlugin - feature flags"
},
"reference/createPlugin-router": {
"title": "createPlugin - router"
},
"reference/createPlugin": {
"title": "createPlugin"
},
"reference/utility-apis/AlertApi": {
"title": "reference/utility-apis/AlertApi"
},
"reference/utility-apis/AppThemeApi": {
"title": "reference/utility-apis/AppThemeApi"
},
"reference/utility-apis/BackstageIdentityApi": {
"title": "reference/utility-apis/BackstageIdentityApi"
},
"reference/utility-apis/Config": {
"title": "reference/utility-apis/Config"
},
"reference/utility-apis/ErrorApi": {
"title": "reference/utility-apis/ErrorApi"
},
"reference/utility-apis/FeatureFlagsApi": {
"title": "reference/utility-apis/FeatureFlagsApi"
},
"reference/utility-apis/IdentityApi": {
"title": "reference/utility-apis/IdentityApi"
},
"reference/utility-apis/OAuthApi": {
"title": "reference/utility-apis/OAuthApi"
},
"reference/utility-apis/OAuthRequestApi": {
"title": "reference/utility-apis/OAuthRequestApi"
},
"reference/utility-apis/OpenIdConnectApi": {
"title": "reference/utility-apis/OpenIdConnectApi"
},
"reference/utility-apis/ProfileInfoApi": {
"title": "reference/utility-apis/ProfileInfoApi"
},
"reference/utility-apis/README": {
"title": "Utility API References"
},
"reference/utility-apis/SessionStateApi": {
"title": "reference/utility-apis/SessionStateApi"
},
"reference/utility-apis/StorageApi": {
"title": "reference/utility-apis/StorageApi"
},
"tutorials/journey": {
"title": "Future developer journey"
}
},
"links": {
"GitHub": "GitHub",
"Docs": "Docs",
"Blog": "Blog",
"Demos": "Demos",
"Plugins": "Plugins",
"Newsletter": "Newsletter"
},
"categories": {
"Overview": "Overview",
"Getting Started": "Getting Started",
"Features": "Features",
"Plugins": "Plugins",
"Configuration": "Configuration",
"Auth and identity": "Auth and identity",
"Designing for Backstage": "Designing for Backstage",
"API references": "API references",
"Tutorials": "Tutorials",
"Architecture Decision Records (ADRs)": "Architecture Decision Records (ADRs)",
"Contribute": "Contribute",
"Support": "Support",
"FAQ": "FAQ"
}
},
"pages-strings": {
"Help Translate|recruit community translators for your project": "Help Translate",
"Edit this Doc|recruitment message asking to edit the doc source": "Edit",
"Translate this Doc|recruitment message asking to translate the docs": "Translate"
}
}
+3 -7
View File
@@ -455,12 +455,8 @@ class Index extends React.Component {
Share with the community
</Block.SmallTitle>
<Block.Paragraph>
Building{' '}
<a href="https://github.com/spotify/backstage/blob/master/docs/FAQ.md#how-do-i-find-out-if-a-plugin-already-exists">
open source plugins
</a>{' '}
contributes to the entire Backstage ecosystem, which benefits
everyone
Building <a href="/plugins">open source plugins</a> contributes
to the entire Backstage ecosystem, which benefits everyone
</Block.Paragraph>
</Block.TextBox>
@@ -472,7 +468,7 @@ class Index extends React.Component {
<ActionBlock className="stripe-top bg-teal">
<ActionBlock.Title>Build a plugin</ActionBlock.Title>
<ActionBlock.Link href="https://github.com/spotify/backstage/blob/master/docs/plugins/create-a-plugin.md">
<ActionBlock.Link href="/docs/plugins/create-a-plugin">
Contribute
</ActionBlock.Link>
</ActionBlock>
+35 -3
View File
@@ -29,13 +29,14 @@ const Plugins = () => (
<main className="MainContent">
<div className="PluginPageLayout">
<div className="PluginPageHeader">
<h2>Plugins</h2>
<h2>Plugin marketplace</h2>
<p>Open source plugins that you can add to your Backstage deployment</p>
<span>
<a
className="PluginAddNewButton ButtonFilled"
href={addPluginDocsLink}
>
<b>Add Plugin</b>
<b>Add to marketplace</b>
</a>
</span>
</div>
@@ -69,13 +70,44 @@ const Plugins = () => (
className="PluginCardLink ButtonFilled"
href={documentation}
>
docs
Explore
</a>
</span>
</Container>
</div>
),
)}
<div className="PluginCard" id="add-plugin-card">
<div className="PluginCardBody">
<p>
Do you have an existing plugin that you want to add to the
Marketplace?
</p>
<p
style={{
marginTop: '20px',
textAlign: 'center',
}}
>
<a className="ButtonFilled" href={addPluginDocsLink}>
<b>Add to marketplace</b>
</a>
</p>
</div>
<Container className="PluginCardFooter">
<p>
See what plugins are already{' '}
<a href="https://github.com/spotify/backstage/issues?q=is%3Aissue+is%3Aopen+label%3Aplugin+sort%3Areactions-%2B1-desc">
in progress
</a>{' '}
and 👍. Missing a plugin for your favorite tool? Please{' '}
<a href="https://github.com/spotify/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME">
suggest
</a>{' '}
a new one.
</p>
</Container>
</div>
</Container>
</div>
</main>
+1 -1
View File
@@ -216,7 +216,7 @@ td {
code {
font-family: IBM Plex Mono, Menlo, Monaco, Consolas, Courier New, monospace;
font-weight: 500;
background-color: #0e0e0e;
background-color: #272822;
}
/* .stripe {
+58 -57
View File
@@ -1,111 +1,112 @@
.PluginCard {
background-color: #272822;
height: 100%;
padding: 16px;
display: flex;
flex-direction: column;
background-color: #272822;
height: 100%;
padding: 16px;
display: flex;
flex-direction: column;
}
.grid {
display: grid;
grid-gap: 1rem;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 1fr;
padding-top: 32px;
display: grid;
grid-gap: 1rem;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 1fr;
padding-top: 32px;
}
@media (max-width: 1200px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
@media only screen and (max-width: 815px) {
.grid {
grid-template-columns: repeat(2, 1fr);
}
.grid {
grid-template-columns: repeat(2, 1fr);
}
}
.PluginCard img {
float: left;
margin: 0px 16px 8px 0px;
height: 100px;
width: 100px;
float: left;
margin: 0px 16px 8px 0px;
height: 80px;
width: 80px;
}
.PluginCardHeader {
max-height: fit-content;
min-height: fit-content;
max-height: fit-content;
min-height: fit-content;
}
.PluginCardTitle {
color: white;
vertical-align: top;
margin: 8px 0px 0px 16px;
color: white;
vertical-align: top;
margin: 8px 0px 0px 16px;
}
.PluginAddNewButton {
position: absolute;
bottom: 16px;
right: 0px;
position: absolute;
bottom: 16px;
right: 0px;
}
.ButtonFilled {
padding: 4px 8px;
border-radius: 4px;
background-color: #36BAA2;
color: white;
margin-top: 36px;
padding: 4px 8px;
border-radius: 4px;
background-color: #36baa2;
color: white;
margin-top: 36px;
}
.ButtonFilled:hover {
border: 1px solid #36BAA2;
background-color: transparent;
border: 1px solid #36baa2;
background-color: transparent;
}
.ChipOutlined {
font-size: small;
border-radius: 16px;
padding: 2px 8px;
border: 1px solid #36BAA2;
color: #36BAA2;
font-size: small;
border-radius: 16px;
padding: 2px 8px;
border: 1px solid #36baa2;
color: #36baa2;
}
.PluginCardLink {
padding: 2px 8px;
position: absolute;
bottom: 0;
right: 0;
padding: 2px 8px;
position: absolute;
bottom: 0;
right: 0;
}
.PluginPageLayout {
margin: auto;
max-width: 1430px;
padding: 20px;
margin: auto;
max-width: 1430px;
padding: 20px;
}
.PluginPageHeader {
position: relative;
position: relative;
}
.PluginPageHeader h2 {
display: inline-block;
display: inline-block;
}
.PluginCardBody {
padding-top: 8px;
padding-top: 8px;
}
.PluginCardFooter {
position: relative;
min-height: 2em;
position: relative;
min-height: 2em;
}
.Author, .Author a {
margin-bottom: 0.25em;
color: rgba(255,255,255, 0.6);
.Author,
.Author a {
margin-bottom: 0.25em;
color: rgba(255, 255, 255, 0.6);
}
.Author a:hover {
color: white;
.Author a:hover {
color: white;
}