Digital.ai Deploy logo

Backstage Digital.ai Deploy Plugin

Created by digital.ai

Digital.ai Deploy is a platform for automating application deployments. It helps teams run repeatable releases across environments. You get a single source of truth for deployment state and history. It fits cloud and data center use.

The Backstage plugin brings that data into your developer portal. On a service page you can see recent executions at a glance. View active deployments. Browse archived deployments. Check status, package, environment, user, start time, and end time. Open task details when you need deeper context. The plugin uses a backend that calls Deploy and a frontend that renders the results in Backstage. It supports search so you can focus on the runs that matter. It works with Backstage permissions to control who can see what.

Typical use cases are simple. A developer wants to confirm the last rollout finished. An SRE needs to audit what went to production this morning. A platform engineer wants to give teams clear visibility into deployments without jumping between tools. The plugin keeps this information close to the code and catalog so people do not lose time switching contexts.

Installation Instructions

These instructions apply to self-hosted Backstage only.

Install the backend package

  1. From the Backstage root, add the backend plugin
Copy
yarn --cwd packages/backend add @digital-ai/plugin-dai-deploy-backend

Configure the backend using the classic backend system

  1. Create a backend plugin file
Copy
// packages/backend/src/plugins/dai-deploy.ts
import { createRouter } from '@digital-ai/plugin-dai-deploy-backend';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';

export default function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  return createRouter({
    logger: env.logger,
    config: env.config,
    permissions: env.permissions,
  });
}
  1. Register the router
Copy
// packages/backend/src/index.ts
import daiDeploy from './plugins/dai-deploy';

// inside main
const daiDeployEnv = useHotMemoize(module, () => createEnv('dai-deploy'));
apiRouter.use('/dai-deploy', await daiDeploy(daiDeployEnv));

Configure the backend using the new backend system

  1. Add the backend feature module
Copy
// packages/backend/src/index.ts
import { createBackend } from '@backstage/backend-defaults';

const backend = createBackend();

// other feature additions
backend.add(import('@digital-ai/plugin-dai-deploy-backend'));

backend.start();

Add backend config

  1. In app-config.yaml add the Deploy connection
Copy
daiDeploy:
  host: http://deploy-hostname:4516
  username: ${USERNAME}
  password: ${PASSWORD}

Note. Set USERNAME and PASSWORD as environment variables for your process.

Install the frontend package

  1. From the Backstage root, add the frontend plugin
Copy
yarn --cwd packages/app add @digital-ai/plugin-dai-deploy

Add the UI to your entity pages

  1. Add the deployments content to the CI CD section
Copy
// packages/app/src/components/catalog/EntityPage.tsx
import React from 'react';
import { EntitySwitch } from '@backstage/plugin-catalog';
import { EntityLayout } from '@backstage/plugin-catalog';
import { DaiDeployEntityDeploymentsContent } from '@digital-ai/plugin-dai-deploy';

const cicdContent = (
  <EntitySwitch>
    {/* other cases */}
    <EntitySwitch.Case>
      <DaiDeployEntityDeploymentsContent />
    </EntitySwitch.Case>
    {/* other cases */}
  </EntitySwitch>
);
  1. Or add a Deploy tab to the entity page
Copy
// packages/app/src/components/catalog/EntityPage.tsx
import React from 'react';
import { EntityLayout } from '@backstage/plugin-catalog';
import { DaiDeployEntityDeploymentsContent } from '@digital-ai/plugin-dai-deploy';

const serviceEntityPage = (
  <EntityLayout>
    {/* other routes */}
    <EntityLayout.Route path="/deploy" title="Deploy">
      <DaiDeployEntityDeploymentsContent />
    </EntityLayout.Route>
    {/* other routes */}
  </EntityLayout>
);

const websiteEntityPage = (
  <EntityLayout>
    {/* other routes */}
    <EntityLayout.Route path="/deploy" title="Deploy">
      <DaiDeployEntityDeploymentsContent />
    </EntityLayout.Route>
    {/* other routes */}
  </EntityLayout>
);

Annotate your entities

  1. In each catalog entity add the Deploy annotation
Copy
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: my-service
  annotations:
    dai-deploy/ci-id: 'my-app-ci-name'
spec:
  type: service
  lifecycle: production
  owner: team-a

Note. ci name must match your application name in Deploy.

Changelog

This changelog is produced from commits made to the Digital.ai Deploy plugin since a year ago, and based on the code located here. It may not contain information about all commits. Releases and version bumps are intentionally omitted. This changelog is generated by AI.

dai deploy

Miscellaneous

  • Update Backstage and third party dependencies PR #41 merged 7 months ago
  • Refresh changelog entries PR #42 merged 7 months ago
  • Update libraries and tooling PR #40 merged 11 months ago

dai deploy backend

Breaking Changes

  • Remove permissions support in the legacy backend PR #40 merged 11 months ago
  • Require PermissionService on the new backend PR #40 merged 11 months ago

Miscellaneous

  • Migrate logging to LoggerService PR #40 merged 11 months ago
  • Update error handling PR #40 merged 11 months ago
  • Update Backstage and third party dependencies PR #41 merged 7 months ago
  • Refresh changelog entries PR #42 merged 7 months ago

dai deploy common

Miscellaneous

  • Update Backstage and third party dependencies PR #41 merged 7 months ago
  • Refresh changelog entries PR #42 merged 7 months ago
  • Update libraries and tooling PR #40 merged 11 months ago

Set up Backstage in minutes with Roadie