A comprehensive centralized CI/CD pipeline management system built for Backstage that allows you to trigger deployments for any registered repository and environment from a single interface.
- Centralized Dashboard: Manage all your deployments from one place
- Multi-Environment Support: Deploy to dev, staging, production, and custom environments
- Repository Registry: Automatically discover and register repositories
- Real-time Status: Track deployment progress and status
- Rollback Support: Quick rollback capabilities for failed deployments
- Audit Trail: Complete deployment history and logs
- Security: Environment-based access controls and approvals
- Repository selection and environment targeting
- Deployment triggering interface
- Real-time status monitoring
- Deployment history and logs
- Centralized repository configuration
- Environment mapping per repository
- Workflow file specifications
- Access control settings
- Triggers deployments in target repositories
- Handles cross-repository workflow execution
- Manages deployment queuing and concurrency
- Provides status updates back to dashboard
- Environment-specific configurations
- Deployment approval requirements
- Resource limits and constraints
- Notification settings
Add repositories to config/repositories.yaml:
repositories:
- name: "my-service"
owner: "{{ values.githubOrg }}"
description: "My awesome service"
environments:
- dev
- staging
- production
workflow_file: ".github/workflows/ci-cd.yml"
default_branch: "main"
access_control:
dev: ["developers"]
staging: ["developers", "qa"]
production: ["platform-team", "leads"]Configure environments in config/environments.yaml:
environments:
dev:
name: "Development"
auto_deploy: true
approval_required: false
cluster: "aux-services-dev"
namespace_prefix: "dev-"
staging:
name: "Staging"
auto_deploy: false
approval_required: true
approvers: ["platform-team"]
cluster: "aux-services-staging-large"
namespace_prefix: "staging-"
production:
name: "Production"
auto_deploy: false
approval_required: true
approvers: ["platform-team", "leads"]
cluster: "aux-services-prod-large"
namespace_prefix: "prod-"
rollback_enabled: trueSet up GitHub token authentication in your Backstage configuration:
# app-config.yaml
centralCicd:
baseUrl: https://api.github.com/repos/{{ values.githubOrg }}/{{ values.pipelineName }}
githubToken: ${GITHUB_TOKEN} # Your GitHub Personal Access TokenMake sure your GitHub token has the following scopes:
repo(repository access)actions:write(trigger workflows)workflow(workflow dispatch)
Navigate to: https://backstage.radai-systems.com/central-cicd
- Choose the repository you want to deploy
- Select the target environment
- Optionally specify a branch or tag
- Click "Deploy" to start the deployment
- Monitor progress in real-time
- View logs and status updates
- View History: See all past deployments
- Rollback: Quickly revert to previous versions
- Cancel: Stop running deployments
- Retry: Re-run failed deployments
- Development: Open access for developers
- Staging: Requires approval from QA or platform team
- Production: Requires approval from platform team and leads
- All deployments are logged with user, timestamp, and changes
- Integration with Backstage audit system
- Slack/Teams notifications for production deployments
- Success/failure rates per repository and environment
- Deployment frequency and duration
- Rollback frequency and reasons
- Grafana: Deployment dashboards and alerts
- Slack: Real-time notifications
- Linear: Automatic issue linking
- GitHub: Status checks and PR integration
- Update
config/repositories.yaml - Ensure the repository has a compatible CI/CD workflow
- Configure environment-specific secrets
- Test deployment through the dashboard
- Update
config/environments.yaml - Configure Kubernetes cluster access
- Set up approval workflows
- Update repository configurations
The system supports various workflow patterns:
- Standard: Build โ Test โ Deploy
- GitOps: Build โ Update manifests โ ArgoCD sync
- Blue/Green: Deploy to staging slot โ Swap
- Canary: Gradual traffic shifting
- Check GitHub Actions quota and runner availability
- Verify repository permissions and secrets
- Check environment approval requirements
- Ensure the target repository has the specified workflow file
- Verify GitHub token permissions
- Check repository access controls
- Verify environment configuration in
config/environments.yaml - Check repository-specific environment mappings
- Ensure proper access permissions
- Documentation: Backstage TechDocs
- Issues: Create issues in this repository
- Slack: #platform-infra channel
This project is licensed under the MIT License - see the LICENSE file for details.