e44cb85b22
* 'master' of github.com:spotify/backstage: (66 commits) chore: fix lerna linting v0.1.1-alpha.25 Add Code Insights plugin to sample app and marketplace (#2833) Improve main CI build status badge in README (#2866) Update roadmap: Design System 🚢 (#2858) github/codecov: switch to informational mode github/workflows: use the tip of master as the base for comparing PR code coverage make saml provider path from globalConfig (#2855) fix(catalog-backend): limit search value lengths Update project Copyright (#2852) fix(catalog-backend): actually use modified entity output (default namespace was broken) remove unnecessary center keyword Move card header bg to up contrast, fix #2558 Update name of env authentication env vars Fix feedback from dtuite Remove chart testing workflow for now Only lint charts on Pull Requests Move the k8s deployment docs to its own helm deployment page Remove line in initdb script that creates backend db Use app-config.development.yaml to provide configuration instead of local ...
CircleCI Plugin
Website: https://circleci.com/
Setup
- If you have standalone app (you didn't clone this repo), then do
yarn add @backstage/plugin-circleci
- Add plugin API to your Backstage instance:
// packages/app/src/api.ts
import { ApiHolder } from '@backstage/core';
import { CircleCIApi, circleCIApiRef } from '@backstage/plugin-circleci';
const builder = ApiRegistry.builder();
builder.add(circleCIApiRef, new CircleCIApi(/* optional custom url for your own CircleCI instance */));
export default builder.build() as ApiHolder;
- Add plugin itself:
// packages/app/src/plugins.ts
export { plugin as Circleci } from '@backstage/plugin-circleci';
- Register the plugin router:
// packages/app/src/components/catalog/EntityPage.tsx
import { Router as CircleCIRouter } from '@backstage/plugin-circleci';
// Then somewhere inside <EntityPageLayout>
<EntityPageLayout.Content
path="/ci-cd/*"
title="CI/CD"
element={<CircleCIRouter />}
/>;
- Add proxy config:
// app-config.yaml
proxy:
'/circleci/api':
target: https://circleci.com/api/v1.1
headers:
Circle-Token:
$env: CIRCLECI_AUTH_TOKEN
- Get and provide
CIRCLECI_AUTH_TOKENas env variable (https://circleci.com/docs/api/#add-an-api-token) - Add
circleci.com/project-slugannotation to your component-info.yaml file in format // (https://backstage.io/docs/architecture-decisions/adrs-adr002#format)
Features
- List top 50 builds for a project
- Dive into one build to see logs
- Polling (logs only)
- Retry builds
- Works for both project and personal tokens
- Pagination for builds
Limitations
- CircleCI has pretty strict rate limits per token, be careful with opened tabs
- CircelCI doesn't provide a way to auth by 3rd party (e.g. GitHub) token, nor by calling their OAuth endpoints, which currently stands in the way of better auth integration with Backstage (https://discuss.circleci.com/t/circleci-api-authorization-with-github-token/5356)