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
- From the Backstage root, add the backend plugin
yarn --cwd packages/backend add @digital-ai/plugin-dai-deploy-backend
Configure the backend using the classic backend system
- Create a backend plugin file
// 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,
});
}
- Register the router
// 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
- Add the backend feature module
// 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
- In app-config.yaml add the Deploy connection
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
- From the Backstage root, add the frontend plugin
yarn --cwd packages/app add @digital-ai/plugin-dai-deploy
Add the UI to your entity pages
- Add the deployments content to the CI CD section
// 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>
);
- Or add a Deploy tab to the entity page
// 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
- In each catalog entity add the Deploy annotation
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
Set up Backstage in minutes with Roadie
Focus on using Backstage, rather than building and maintaining it.