2e701b3796
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
CircleCI Plugin
Website: https://circleci.com/
Screenshots
Setup
- If you have a standalone app (you didn't clone this repo), then do
# From your Backstage root directory
yarn add --cwd packages/app @backstage/plugin-circleci
- Add the
EntityCircleCIContentextension to the entity page in your app:
// In packages/app/src/components/catalog/EntityPage.tsx
import {
EntityCircleCIContent,
isCircleCIAvailable,
} from '@backstage/plugin-circleci';
// For example in the CI/CD section
const cicdContent = (
<EntitySwitch>
<EntitySwitch.Case if={isCircleCIAvailable}>
<EntityCircleCIContent />
</EntitySwitch.Case>
- Add proxy config:
# In app-config.yaml
proxy:
'/circleci/api':
target: https://circleci.com/api/v1.1
headers:
Circle-Token: ${CIRCLECI_AUTH_TOKEN}
- Get and provide a
CIRCLECI_AUTH_TOKENas an environment variable (see the CircleCI docs). - Add an annotation to your respective
catalog-info.yamlfiles, with the formatcircleci.com/project-slug: <git-provider>/<owner>/<project>(See reference in ADR002).
# Example catalog-info.yaml entity definition file
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
# ...
annotations:
# This also supports bitbucket/xxx/yyy
circleci.com/project-slug: github/my-org/my-repo
spec:
type: service
# ...
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
- CircleCI 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)