0.2.1 • Published 12 months ago

@codeowners/backstage-plugin v0.2.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
12 months ago

CODEOWNERS.com Backstage Plugin

Welcome to the codeowners plugin!

Backstage Configuration

You'll need to configure a proxy to CODEOWNERS.com and place the CODEOWNERS.com cards in your catalog entity pages.

Create a CODEOWNERS.com Personal Access Token

  1. Login to your CODEOWNERS.com account
  2. Create a Personal Access Token (PAT)
  3. Set your PAT as an environment variable, CODEOWNERS_API_KEY in the environment where you run Backstage.

Configure API Proxy

Configure Backstage so that the Codeowners plugin can communicate to the codeowners.com API:

# in app-config.yaml
proxy:
  '/codeowners/api':
    target: https://api.codeowners.com/api/v1
    headers:
      Authorization: Bearer ${CODEOWNERS_API_KEY}

Reminder: Be sure to create CODEOWNERS_API_KEY environment variable where you run your Backstage server.

Add the CODEOWNERS.com Settings Page

  1. Add a route to the Codeowners settings page:
// packages/app/src/App.tsx
import { CodeownersSettingsPage } from "@codeowners/backstage-plugin";

const routes = (
  <FlatRoutes>
    {/* snip... */}
    <Route path="/codeowners" element={<CodeownersSettingsPage />} />
  </FlatRoutes>
);
  1. Create a link in the Backstage sidebar to the Codeowners settings page
// packages/app/src/components/Root/Root.tsx
import { CodeownersIcon } from "@codeowners/backstage-plugin";

export const Root = ({ children }: PropsWithChildren<{}>) => (
  <SidebarPage>
    <Sidebar>
      {/* snip...  */}
      <SidebarItem icon={CodeownersIcon} to="codeowners" text="CODEOWNERS.com" />
    </Sidebar>
  </SidebarPage>
);

Add the CODEOWNERS.com Backstage Plugin Cards

Add the CODEOWNERS.com module to your Backstage instance:

yarn add --cwd packages/app @codeowners/backstage-plugin

Import the cards you want to use in the Backstage entity overview page:

 // packages/app/src/components/catalog/EntityPage.tsx

 // Add the following in the imports
 import { ServiceCodeownersCard, RecentChangesCard } from "@codeowners/backstage-plugin";

In the same file, look for the overviewContent object and add the cards you want to use in its Grid:

const overviewContent = (
  <Grid container spacing={3} alignItems="stretch">
    {entityWarningContent}
    { /*  snip other cards... */ }
    <Grid item xs={4}>
      <ServiceCodeownersCard />
    </Grid>
    <Grid item xs={8}>
      <RecentChangesCard />
    </Grid>
  </Grid>
);