So you want to be a Devuan Developer?
Devuan is a fork of the Debian project, and thus retains and leverages most of the structure of Debian at least from an outward - use perspective. However our infrastructure and packaging workflow is somewhat different due in part to having to build the infrastructure for Devuan rather quickly but also the opportunity to choose to use a workflow that we thinks works better for a quick ramp up with out having to reinvent the wheel. Some of the decision was simply the result of decisions made by those willing to do the work. Here we have to pay homage to @nextime for setting up the gitlab+jenkins workflow and also his development of
amprolla, a tool that overlays Devuan's repository on top of Debian's - allowing us to focus our resources purely on the packages relevant to Devuan.
First a broad overview - Devuan uses
git as the central vcs for all packages that Devuan builds. Our git repository is provided via a gitlab instance which hooks into a Jenkins continuous integration system for building the packages and delivering them into the Devuan repository. Starting the build of a package is as simple as creating an "issue" in devuan with the subject build, and assigning to the virtual user "autobuild" with labels indicating which suite to build etc.
A bit about devuan package formats
We have inherited and kept the Debian package system for Devuan and references to Debian packages are synonymous with devuan. Our CI system supports building all Debian source formats plus also the proposed (but not yet accepted in Debian) 3.0 (git) format. Here is a brief outline of the packaging formats and the requirements and caveats in relation to the Devuan workflow:
Native packages: 1.0 and 3.0 (native)
These are packages built and maintained natively within the devuan|debian project, and have no upstream source. Generally these packages are used for debian specific infrastructure and tooling related to the distrobution and packaging of Debian|Devuan.
Wig and Pen:
(who knows and who uses???) No idea...
Quilt: 3.0 (quilt):
These packages are built for Devuan from upstream sources. This format is based around the idea of keeping a clean upstream source and applying Debian-specific packaging around it as well as any necessary patches required to make it useable, buildable, and apply the Debian packaging standards.
When using quilt in a git repository one is required to maintain a original-tar and pristine-tar branches as well as manage the quilt patchsets using the quilt tool.
GitSrc: 3.0 (git):
This is an experimental package format that does away with the tar archives of the native and quilt packages, and instead uses the git work flow commits and branches and provides the sources (both upstream and packaging) as a git archive. This is a particularly interesting format for Devuan as it allows us to build directly from git without having to mess with quilt and managing pristine-tar etc...