Release history
0.4.1 (2024-06-28)
Server
Make
debusine:testartifact instantiable.
Web UI
Introduce a common base layout with a right sidebar.
Implement labels for artifacts.
Add specialized view for showing build log artifacts.
Worker
Run
sbuildwith--bd-uninstallable-explainer=dose3and parse its output.
Quality
Fix license classifier in
setup.cfg.
0.4.0 (2024-06-24)
Server
Add API endpoint to retry work requests.
Implement retrying workflows.
Give the scheduler Celery worker a different node name.
Switch to
RedisPubSubChannelLayer.
Web UI
Add UI to retry work requests.
Worker
Add binary-only NMU support to
sbuildtask.Use
arch-testto provide better defaults forsystem:architectures.
Signing
Add a new signing service. This currently supports generating keys (though currently only in software, as opposed to an HSM) and signing UEFI Secure Boot images with them. A few more pieces still need to be assembled before this is useful.
Documentation
Document HTTPS setup.
Document signing worker.
Quality
Remove now-unnecessary autopkgtest schroot creation from integration tests.
Add a “playground” system to manage test object creation and to allow discussion of UI prototypes.
Use HTTPS in integration tests.
Bump timeout for
mmdebstrapintegration tests.Reorganize test cases for improved type-safety.
Fix cleanup order in an integration test which caused failures on slow architectures.
0.3.2 (2024-06-03)
Server
Rename some leftovers of “internal” naming for server tasks.
Added method to check if a work request can be retried.
Fix
Architecture: allmatching insbuildworkflow.
Web UI
Second iteration on collection UI design.
Add base template support for
django.contrib.messages.
Quality
Fix several race conditions and timeouts that caused autopkgtest failures on slow architectures.
0.3.1 (2024-05-28)
Server
Namespace collections under workspaces.
Refresh worker from database before marking it disconnected, so that we don’t lose changes made using
debusine-admin edit_worker_metadata.Add backend capability to retry aborted or failed work requests.
sbuildworkflow:Fix task data for
Architecture: allwork requests.Specify the backend in environment lookups.
Defer environment resolution.
Web UI
Fix typo resulting in HTTP 500 error in collection detail view.
Worker
Handle systemd 256 in
incus-lxcexecutor.Handle dangling
/etc/resolv.confsymlinks in environments in theunshareexecutor.Fix
mmdebstraptask to specify the architecture of the chroot.
Documentation
Fix several errors in the “Getting started with debusine” tutorial.
Adjust “The debusine command” reference to refer to self-documenting
--helpoutput.
Quality
Skip some integration tests for architectures that weren’t in bookworm.
Add enums for artifact and collection categories, to guard against typos.
0.3.0 (2024-05-23)
Highlights:
The focus of this milestone is on automatic orchestration of building blocks, to allow tasks to be scheduled for all items of a collection. For example, Debusine can now automatically schedule Lintian tasks for all packages in a suite.
Added collections and workflows.
Added a new lookup syntax, taking advantage of collections.
Server
Add infrastructure for collections.
Implement
debian:environmentscollection.Implement
debian:suite-lintiancollection.Add
debusine-admin create_collectioncommand.Store tokens only in a hashed form.
Implement
debian:suitecollection.Move the scheduler to a dedicated Celery worker.
Generalize work request notifications into event reactions.
Implement basic building blocks of workflows.
Implement synchronization points.
Implement workflow orchestrators.
Implement workflow callbacks.
Add
--default-file-storeoptions todebusine-admin create_workspaceanddebusine-admin manage_workspace.Restrict creation of non-worker tasks via the API.
Add
debusine-admin create_file_storecommand.Implement scheduling priorities.
Implement
update-collection-with-artifactsevent reaction.Implement collection item lookup syntax and semantics.
Implement
aptmirrorserver task.Implement
updatesuitelintiancollectiontask to update adebian:suite-lintiancollection fromdebian:suite.Implement
debusine:workflow-internalcollection.Add
debusine-admin create_work_requestcommand.Implement
sbuildandupdate_environmentsworkflows.Add a
_systemuser for use by scripts.Implement expiry of collection items.
Add APIs to create workflow templates and workflows.
Add
debusine-admin create_workflowcommand.Add
debusine-admin delete_workspacecommand.Implement expiry of work requests.
Web UI
Fix ordering of work requests by task name.
Improve rendering of multi-line strings in task data.
Show workflow information for work requests that are part of workflows.
Show task type in work request lists.
Improve handling of expired artifacts in
autopkgtest/lintianviews.Order a work request’s artifacts by ID within each category.
Show the user who created a work request in the work request detail view.
Show a notice when a work request’s artifacts have expired.
Add workspace detail and collection views.
Client
Separate YAML input and output more clearly when running
debusine create-artifactordebusine create-work-request.Add
debusine manage-work-requestcommand to adjust work request priorities.Add
debusine create-workflow-templateanddebusine create-workflowcommands.
Worker
Add support for passing extra packages to the
sbuildtask.Exit cleanly on failure to report a completed work request to the server.
Restrict
mmdebstrapandsimplesystemimagebuildtasks to workers that support the requested architecture, as was done for other tasks in 0.2.1.Only consider the
autopkgtesttask to have succeeded on exit codes 0, 2, and 8.Remove network-related files that
mmdebstrapcopies from the host.Allow
sbuildto produce no.changesfile, so that users can examine the log files of failed builds.Improve “Unexpected artifact type” error from the image cache.
Rename
autopkgtesttask’senvironmentkey toextra_environment.Rename
environment_idtoenvironmentin all tasks, and support the new lookup syntax.Drop insecure
sbuild_optionsfromsbuildtask.Rename task data fields in
autopkgtest,blhc,lintian,piuparts,sbuild, andupdatesuitelintiancollectiontasks to support the new lookup syntax, removing_idfrom key names and accepting single or multiple lookups as appropriate.Correctly tag
sidtarballs and images ascodename=sid.Don’t purge build-dependencies after build in the
sbuildtask.
Documentation
Move unimplemented features to a new “Development blueprints” section.
Add design practices.
Rework “Where to start” section in “Contribute to debusine”.
Clarify parameters to
piupartstask.Clarify the role of Incus when installing a debusine instance.
Add design for tasks that update collections.
Document work request scheduling and associated worker metadata.
Add design for workflows.
Document image caching and cleanup.
Add design for scheduling priorities.
Add design for collection item lookups.
Add design for
sbuildworkflow.Add design for
update_environmentsworkflow.Add how-to for setting up APT mirroring.
Add example script to automate Incus configuration for workers.
Document packages required for Incus VMs.
Add example script to populate a debusine instance with example data.
Document environment requirements for executor backends.
Update “Getting started with debusine” tutorial to use workflows and collections.
Add more documentation of worker behaviour.
Quality
Validate the summary in
debian:lintianartifacts.Drop compatibility with Debian bullseye; debusine now requires Python >= 3.11.
Enforce pydantic models for
WorkRequest.workflow_dataandWorkRequest.event_reactions.Use pydantic models for
autopkgtestandlintianviews.Fix some tests on non-amd64 architectures.
Auto-format HTML templates using djlint.
Add infrastructure for more semantic testing of HTML output.
0.2.1 (2024-03-07)
Server
Add a Celery worker for server-side tasks.
Client
Trim down dependencies slightly.
Worker
Require KVM access for
simplesystemimagebuildtask.Change
containertoinstancein Incus templates.Log task completion.
Restrict tasks to workers that support the requested architecture.
Documentation
Improve home page slightly.
Quality
Enforce mypy project-wide, including all Django components.
0.2.0 (2024-02-29)
Highlights:
Added artifact file storage system.
Debian developers can use Debusine to run various QA tasks against packages they are preparing. Those tasks can be scheduled through the API or through the web UI.
Note that it is not possible to directly migrate a database installed using 0.1.0. Migrations from this release to future releases will be possible.
Server
Implement file storage.
Implement artifact handling.
Implement expiration of artifacts and their files.
Run database migrations on
debusine-serverpackage upgrade.Add
debusine-admin monthly_cleanupcommand, run from a systemd timer.Link work requests to workspaces.
Add
debusine-admin create_user,debusine-admin list_users, anddebusine-admin manage_usercommands.Link tokens to users.
Allow email notifications if a work request fails.
Depend on
python3-daphne.Ensure all local artifacts are JSON-serializable.
Add
debusine-admin create_workspace,debusine-admin list_workspaces, anddebusine-admin manage_workspacecommands.Use WorkRequest workspace in artifacts.
Add default expiration delay to workspaces.
Add API to list work requests.
Make sure the Django app’s secret key is never publicly readable.
Mark workers as disconnected on
debusine-serverstartup.Use
Restart=on-failurerather thanRestart=alwaysindebusine-server.service.Add
debusine-admin infocommand to help with setting up deployments.Add daily artifact cleanup timer.
Use pydantic models for artifact data.
Add remote, read-only file storage backend for external Debian archives.
Web UI
Add web UI for work requests and workspaces.
Add login/logout support to web UI, allowing access to non-public workspaces.
Allow registering/removing user API keys using the web UI.
Allow uploading artifacts using the web UI.
Refinements to web UI for work requests.
Make Django aware of HTTP/HTTPS state of requests.
Fix download error with empty artifact file and document mmap usage.
Implement integration with Salsa Single Sign-On.
Add
lintianview.Polish various aspects of the web UI.
Add
autopkgtestview.Fetch images for tasks directly, not via a tarball.
Client
Rename client’s configuration key from
debusinetoapi-url.Add
--dataoption todebusine create-work-request.Rename
debusine work-request-statustodebusine show-work-request.Add
debusine on-work-request-completedto allow running a command when a work request completes.debusine.client: Drop obsoletesilentkeyword, and stricter prototype tests.Add
debusine --debugoption to debug HTTP traffic.Implement a package downloader (
dget).Implement a paginated listing API client.
Add API client method for listing all work requests.
Add
debusine list-work-requestscommand.Add
debusine import-debian-artifactcommand.
Worker
Modify
sbuildtask to use artifacts.Add pre-upload consistency checks on sbuild results.
Rename worker’s configuration key from
debusine-urltoapi-url.Upload
sbuildlog files even if the .dsc file did not exist.Add
piupartstask.Add
lintiantask.Add
autopkgtesttask.Add
mmdebstraptask.Avoid trying to add
debusine-workeruser in postinst if it already exists.Add image caching for executor backends.
Add
unshareexecutor.Port the
autopkgtestandpiupartstasks tounshare.Use
Restart=on-failurerather thanRestart=alwaysindebusine-worker.service.Make tasks check whether their tools are installed.
Use a lock to protect execution of the work request.
Add
blhctask.Add
simplesystemimagebuildtask.Use pydantic models for task data.
Log exceptions in task preparation and clean-up.
Add Incus executor (for both containers and VMs).
Add a
qemuexecutor, currently only forautopkgtestandsbuildtasks.
Documentation
Drop the “slug” field and the “repository” type.
Document
debian:package-build-logartifact in ontology.Document using
local.pyto change settings.Create an overview document with an elevator-pitch-style introduction.
Add initial design for
autopkgtestandlintiantasks.Add initial design for system tarball artifacts and debootstrap-like tasks.
Add initial design for tasks building system disk images.
Update the description of the
sbuildtask.Restructure the documentation following the Diátaxis principles.
Clarify copyright notice, contributor status and list of contributors.
Enable the Sphinx copybutton plugin.
Add some documentation for the Python client API.
Improve the “Getting started with debusine” tutorial.
Add documentation for
debusine-admincommands.Add “Install your first debusine instance” tutorial.
Add initial design for collections.
Refine design for workflows.
Quality
Harmonize license to be GPL-3+ everywhere.
Support pydantic 1 and 2.
Apply mypy, pyupgrade, and shellcheck consistently.
Sync
(Build-)Dependswithsetup.cfg.
0.1.0 (2022-09-09)
Initial release. Includes a server that can drive many workers over a
worker-initiated websocket connection, where the workers use the server’s
API to get work requests and provide results. There is an sbuild task
that workers can run.