Debusine

Debusine is a software factory for Debian-based distributions. Freexian is developing it to give people access to various pre-configured tools and workflows running on remote hardware, and to make it as easy as possible for Debian contributors to use all the QA tools that Debian provides. We want to enable distribution-wide experiments, custom package repositories, and custom workflows with advanced package reviews.

Many of Debusine's intended features are still in development, but it is already usable in a number of situations. You can install it for yourself, but we provide an instance which can be used by all Debian developers using Salsa authentication.

Authenticating to debusine.debian.net

  1. Install the debusine-client package, which is in bookworm-backports and trixie (and newer). The rest of these instructions assume at least version 0.10.0~bpo12+1.

  2. Run debusine --server=debian setup, then type "save" and press Enter. Follow its instructions to complete the process, which will create ~/.config/debusine/client/config.ini.

If you have an older configuration file, note that the "debusine" scope was renamed to "debian" on 2025-03-25; you will need to change the scope setting in config.ini accordingly.

Scopes and workspaces

Debusine instances are organized using scopes and workspaces. On debusine.debian.net, we have a "debian" scope to group together everything related to Debian (we may have scopes for other Debian-based distributions in future). Within that, we have the following workspaces:

Name

Purpose

Owners

Contributors

base

infrastructure such as Debian archive mirroring and image building

debusine staff

developers

uploads intended to enter Debian via the upload-to-* workflows

debusine staff

Debian developers

Before 2025-03-25, the base workspace was called System and had more open permissions.

Workflows

Most interaction with Debusine happens using workflows.

The developers workspace currently has the following workflow templates available:

Name

Purpose

Task data reference

create-experiment

Create a workspace for an experiment

create_experiment_workspace

upload-to-experimental

Build, test, and upload to Debian experimental

debian_pipeline

upload-to-unstable

Build, test, and upload to Debian unstable

debian_pipeline

About the “upload-to-*” workflows

If you are a Debian developer just discovering Debusine, the upload-to-* workflows are the most interesting workflows for you to try out. They need a source package as input, and will build binary packages for 4 architectures, perform lots of QA checks that you will be able to review through a web interface and eventually offer you to remotely sign and upload the source package to Debian (if you are happy with the results).

If you have dput-ng and at least debusine-client version 0.11.0~bpo12+1 installed, you can start those workflows straight from dput. The target distribution name will be used to figure out which workflow to start:

$ dput debusine.debian.net hello_1.0-1_source.changes
Uploading dput-ng using debusine to debusine.debian.net (host: debusine.debian.net; directory: /)
running debusine-check-workflow: check debusine workflow for distribution
running checksum: verify checksums before uploading
running suite-mismatch: check the target distribution for common errors
running gpg: check GnuPG signatures before the upload
Not checking GPG signature due to allow_unsigned_uploads being set.
Uploading dput-ng_1.43.dsc
Uploading dput-ng_1.43.tar.xz
Uploading dput-ng_1.43_source.changes
Created artifact: https://debusine.debian.net/debian/developers/artifact/ARTIFACT-ID/
running debusine-create-workflow: create a debusine workflow
Created workflow: https://debusine.debian.net/debian/developers/work-request/WORKFLOW-ID/

If you have at least dput-ng version 1.43~bpo12+1 installed, then you can also set workflow options here. For example:

$ dput -O debusine_workflow_data.enable_reverse_dependencies_autopkgtest=true debusine.debian.net hello_1.0-1_source.changes

See the task data reference for the options you can set. Remember than you can only pass options that have been left unspecified by the underlying workflow template.

Go to the URL printed after "Created workflow" (which will contain an actual workflow ID rather than the placeholder in the example above) to monitor the progress of your workflow (it doesn't auto-reload, so you have to manually reload the page from time to time).

One of the "steps" is named "Wait for signature on upload for …". When that work request is marked as "Running", then you can decide to trigger the upload to Debian. If you are happy with the results of the QA checks, and want to upload the package to Debian, click on that "Wait for signature" work request and run the debusine provide-signature ... command shown there, after which Debusine will upload the package to Debian for you.

Until #780 is fixed, you need to add --server debian to the proposed command line to get it to work. The resulting command looks like this: debusine --server debian provide-signature XXXX

You can also fix it once for all by adding default-server=debian in the [General] section of ~/.config/debusine/client/config.ini. Since the section is likely missing, you can add the whole section with this one-liner: printf '\n[General]\ndefault-server=debian\n' >>~/.config/debusine/client/config.ini

About the “create-experiment” workflow

This workflow lets you create a workspace where you have owner-level permissions. You can do so with the help of debusine create-workflow, which can be used to start a workflow from any one of a set of defined workflow templates in a workspace:

$ debusine create-workflow --workspace developers create-experiment <<EOF
experiment_name: "cjwatson_test"
EOF

The YAML data provided on stdin constitutes "task data" that is fed to the workflow. Note that task data items that are set by the workflow template are fixed and cannot be changed when starting the workflow. Other items are free for you to set if needed.

See the workflow's task data reference for the options you can set.

Frequently Asked Questions

How does the dput integration work?

Under the hood, the dput plugin imports the source package as a new artifact in the target workspace and then triggers a new workflow on it. It chooses the workflow to start based on the mapping in /etc/dput.d/profiles/debusine.debian.net.json.

Here's how you can reproduce this manually. You can upload a package to Debusine as follows:

$ debusine import-debian-artifact --workspace developers hello_1.0-1_source.changes
result: success
message: New artifact created in ...
artifact_id: ...

You can then start a workflow on that upload, replacing ARTIFACT-ID with the value on the first line beginning with artifact_id: in the output of the previous command:

$ debusine create-workflow --workspace developers upload-to-unstable <<EOF
source_artifact: ARTIFACT-ID
enable_reverse_dependencies_autopkgtest: true
EOF

Find your new workflow on https://debusine.debian.net/debian/developers/workflow/ and watch its progress there, which in this case will include automatically running autopkgtests of all the package's reverse dependencies in unstable.