As a prerequisite, you need to have installed and configured the Azure DevOps Backend plugin before you move forward with any of these steps.
Installation Instructions
These instructions apply to self-hosted Backstage only. To use this plugin on Roadie, visit the docs.
Install the frotnend plugin for Azure DevOps.
yarn --cwd packages/app add @backstage-community/plugin-azure-devops
To use , add the EntityAzurePipelinesContent
card.
// In packages/app/src/components/catalog/EntityPage.tsx
// If you're using `dev.azure.com/project-repo annotation` use this:
import {
EntityAzurePipelinesContent,
isAzureDevOpsAvailable,
} from '@backstage-community/plugin-azure-devops';
// For example in the CI/CD section
const cicdContent = (
<EntitySwitch>
// ...
<EntitySwitch.Case if={isAzureDevOpsAvailable}>
<EntityAzurePipelinesContent defaultLimit={25} />
</EntitySwitch.Case>
// ...
</EntitySwitch>
// If you're using `dev.azure.com/project annotation` use this:
import {
EntityAzurePipelinesContent,
isAzurePipelinesAvailable,
} from '@backstage-community/plugin-azure-devops';
// For example in the CI/CD section
const cicdContent = (
<EntitySwitch>
// ...
<EntitySwitch.Case if={isAzurePipelinesAvailable}>
<EntityAzurePipelinesContent defaultLimit={25} />
</EntitySwitch.Case>
// ...
</EntitySwitch>
To use the EntityAzurePullRequestsContent
add the extension to your Entity page.
// In packages/app/src/components/catalog/EntityPage.tsx
import {
EntityAzurePullRequestsContent,
isAzureDevOpsAvailable,
} from '@backstage-community/plugin-azure-devops';
// For example in the Service section
const serviceEntityPage = (
<EntityLayout>
// ...
<EntityLayout.Route if={isAzureDevOpsAvailable} path="/pull-requests" title="Pull Requests">
<EntityAzurePullRequestsContent defaultLimit={25} />
</EntityLayout.Route>
// ...
</EntityLayout>
To use the EntityAzureGitTagsContent
component, add the extension to your Entity page.
// In packages/app/src/components/catalog/EntityPage.tsx
import {
EntityAzureGitTagsContent,
isAzureDevOpsAvailable,
} from '@backstage-community/plugin-azure-devops';
// For example in the Service section
const serviceEntityPage = (
<EntityLayout>
// ...
<EntityLayout.Route if={isAzureDevOpsAvailable} path="/git-tags" title="Git Tags">
<EntityAzureGitTagsContent />
</EntityLayout.Route>
// ...
</EntityLayout>
To use the Git Readme feature, add the EntityAzureReadmeCard
component to your Entity page.
// In packages/app/src/components/catalog/EntityPage.tsx
import {
EntityAzureReadmeCard,
isAzureDevOpsAvailable,
} from '@backstage-community/plugin-azure-devops';
// As it is a card, you can customize it the way you prefer
// For example in the Service section
const overviewContent = (
<Grid container spacing={3} alignItems="stretch">
<EntitySwitch>
<EntitySwitch.Case if={isAzureDevOpsAvailable}>
<Grid item md={6}>
...
</Grid>
<Grid item md={6}>
<EntityAzureReadmeCard maxHeight={350} />
</Grid>
</EntitySwitch.Case>
</EntitySwitch>
</Grid>
);
For relevant entities, add annotations to their respective catalog-info.yaml files
# Example catalog-info.yaml entity definition file
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
# ...
annotations:
dev.azure.com/project-repo: my-project/my-repo
dev.azure.com/build-definition: <build-definition-name> // if you have multiple entities in a single monorepo you'll need to specify the builds
dev.azure.com/readme-path: /<path-to>/<my-readme-file>.md
dev.azure.com/project: <project-with-build-code> // if your code is in a diferent repo
dev.azure.com/host-org: <host>/<organization> // if you have multiple organisations
spec:
type: service
# ...
Things to Know
Changelog
The Azure DevOps plugin has not seen any significant changes since 13 days ago.
Set up Backstage in minutes with Roadie
Focus on using Backstage, rather than building and maintaining it.