# Debusine: a CI platform for Debian-based distributions

Debusine’s goal is to be an integrated solution to build, distribute and maintain a Debian-based distribution.

Debusine is already a modern cloud-powered Continuous Integration (CI) platform to run many packaging and distribution related workflows for the Debian ecosystem. It can be used to automate everything from the package build up to the generation of installer/disk/cloud/container images, including all the intermediary quality assurance checks. It is very versatile and easy to extend to cater to custom requirements.

To cope with the scale (dozens of thousands of packages), and with the breadth of supported CPU architectures of a Linux distribution, Debusine manages the scheduling and distribution of individual tasks to distributed worker machines, including cloud workers on demand.

The following picture tries to give you a glimpse of what Debusine can do through a sample workflow:

If you are new to Debusine, you will want to read Introduction to Debusine first.

Note

The documentation is structured by following the Diátaxis principles: tutorials and explanation are mainly useful to discover and learn, howtos and reference are more useful when you are familiar with Debusine already and you have some specific action to perform or goal to achieve.

Tutorials

- Install your first Debusine instance
  - Configure the hypervisor to host the Debusine instance (with Incus)
  - Install the Debusine virtual machine
  - Install the packages
  - Configure the webserver
  - Test the access to the web interface
  - Configure the worker
  - Configure the signing worker
  - Next steps
- Getting started with Debusine
  - Prerequisites
  - Install the client and configure it
  - Set up workflow templates
  - Check workspace configuration
  - Create an artifact by uploading a source package
  - Start a workflow to build and test your package
  - Examine work requests and artifacts
- Set up workflow templates
  - Prerequisites
  - Create a build environment
  - Set up the Debian pipeline

Explanations

- Introduction to Debusine
  - What is Debusine
  - Debusine for Debian development
  - Next generation Debian infrastructure
  - Run distribution-wide QA experiments
  - Learn more
- Roadmap
  - Vision
  - Our plans
  - Your plans
- Debusine concepts
  - Artifacts
  - Assets
  - Collections
  - Tasks
  - Work requests
  - Workflows
  - File stores
  - Scopes
  - Workspaces
  - Workers
- Lookups
- Permissions
  - Concepts
  - Example of a permission check
  - Further reading
- Work request scheduling
  - Lifecycle of a user-submitted work request
  - Lifecycle of a work request inside a workflow
  - Priorities
  - Ordering of work request
  - Matching of workers and work requests
  - Management of architecture-specific tasks
  - Dynamic worker provisioning
- Expiration of data
  - Artifacts
  - Work requests and workflows
  - Collection items
- Workflow orchestration
  - Dependencies
  - Sub-workflows
- Signing service
  - Signing workflows
  - Signing key management
  - Key protection
  - Signature methods
- Package repositories
  - Snapshots
  - Overrides
  - Access views
  - Key management
- Talks

Todo

Add new explanation pages to cover:

- architecture (server, worker, client)

How-to guides

- Set up debusine-client
  - Introduction
  - Initial setup
  - Test the configuration
- Create an API token
  - As a Debusine user
  - As a Debusine administrator
  - Next steps
- Upload to Debusine using dput-ng
  - Initial setup
  - Upload a package
  - Further configuration
- Create a new package repository
  - Initial setup
  - Create a workspace
  - Create a suite
  - Configure dput-ng
  - Access the repository
- Manage task configuration for a workspace
  - Introduction
  - Editing through text files
- Tasks for administrators
  - Set up a Debusine server
  - Set up a Debusine worker
  - Set up a Debusine signing worker
  - Set up Incus for Debusine Task Execution
  - Add a new worker
  - Add a new user
  - Configure and manage a worker
  - Enable logins with GitLab accounts
  - Enable notifications for work requests
  - Set up APT mirroring
  - Generate signing keys
  - Configure an HSM for use with Debusine
  - Add a new Cloud Worker Pool
  - Customize site branding
- Contribute to Debusine
  - Join the community
  - Where to start?
  - How to contribute
  - Test latest `devel` branch code
  - Write access to the git repository
  - Django Debug Toolbar
- Contribute a new workflow
  - Design
  - Implementation
  - Documentation

Reference

- Building blocks
  - Artifacts
  - Assets
  - Bare data
  - Collections
  - File stores
  - Tasks
  - Workflows
  - Workspaces
- Deployment
  - Runtime environment
  - Package repositories
  - Dynamic Worker Pools
- Miscellaneous
  - Lookup syntax
  - Frequently Asked Questions about Debusine
- Command line tools
  - The debusine-admin command
  - The debusine command
  - The debusine-signing command
  - The debusine-worker command
  - The debusine client configuration file
  - dput-ng profile options
- Python client API
  - The Debusine class
  - Associated data models
  - Representation of artifacts
- Debusine internals
  - Work Requests
  - Permissions reference
  - Signing service details
  - Scheduler tags
- Reference for Debusine contributors
  - Design goals
  - Team organization
  - Project management practices
  - Design practices
  - Coding practices
  - Release practices
  - Documentation practices
  - JavaScript practices
  - Internal API
- Development blueprints
  - UI views
  - Uploading packages
  - Task configuration
  - Build instructions
  - Debian pipeline
  - Detecting regressions
  - URL redesign
  - URL redesign for /-/user
  - Dynamic cloud compute scaling
  - Workspaces for experiments
  - Refactoring page titles
  - More flexible workflow templates
  - Tag-based scheduling
- Release history
  - debusine 0.14.5 (2026-02-24)
  - debusine 0.14.4 (2026-01-30)
  - debusine 0.14.3 (2026-01-26)
  - debusine 0.14.2 (2026-01-06)
  - debusine 0.14.1 (2025-12-15)
  - debusine 0.14.0 (2025-12-03)
  - 0.13.1 (2025-11-17)
  - 0.13.0 (2025-11-16)
  - 0.12.2 (2025-09-22)
  - 0.12.1 (2025-08-21)
  - 0.12.0 (2025-08-15)
  - 0.11.3 (2025-07-08)
  - 0.11.2 (2025-07-03)
  - 0.11.1 (2025-05-04)
  - 0.11.0 (2025-04-15)
  - 0.10.0 (2025-04-02)
  - 0.9.1 (2025-03-24)
  - 0.9.0 (2025-02-25)
  - 0.8.1 (2025-01-13)
  - 0.8.0 (2024-12-26)
  - 0.7.2 (2024-11-13)
  - 0.7.1 (2024-11-12)
  - 0.7.0 (2024-11-12)
  - 0.6.0 (2024-10-10)
  - 0.5.0 (2024-09-03)
  - 0.4.1 (2024-06-28)
  - 0.4.0 (2024-06-24)
  - 0.3.2 (2024-06-03)
  - 0.3.1 (2024-05-28)
  - 0.3.0 (2024-05-23)
  - 0.2.1 (2024-03-07)
  - 0.2.0 (2024-02-29)
  - 0.1.0 (2022-09-09)
- Sponsors
  - Current sponsors
  - Historical sponsors

Todo

Add new reference pages to cover:

- debusine-server configuration file

- debusine-worker configuration file

# Indices and tables

- TODO to fix in the documentation

- Index

- Module Index