d1man/07-package-workflow.md

2.3 KiB

Package workflow

When it comes to creating, maintaining, and building packages in Devuan, there is a standardized workflow that has been used so far. All of Devuan's official packages reside in the devuan-packages namespace on our GitLab instance. Once a package is being maintained under this namespace, it can be considered usable and ready to build.

A Devuan package's debian directory should be maintained the same way like any other Debian package, with the possible exception of gbp.conf. In gbp.conf we have to set up the upstream tag for the tag we are planning to build. An example gbp.conf file looks like:

[DEFAULT]
upstram-tag = %(version)s

This helps jenkins-debian-glue, and more specifically - pbuilder - to figure out what to do with the git repository and how to build the package.

In Devuan, we maintain many different suites, like ascii-proposed, ascii-updates, ascii-proposed, etc. All of these are then supposed to be maintained in different branches, that are named like this, with the additional prefix of suites/, so an example branch would be: suites/ascii. The package in this git repository under this branch would then be build and it would end up in the ascii suite.

An example workflow

In shell commands, introducing a package into Devuan would look like the following:

$ git clone myproject.git
$ cd myproject

## Then add a debian directory and fill up the needed information

$ git checkout -b suites/ascii

$ git tag 0.1

## Set up remote for pushing to git.devuan.org

$ git push --tags

This would get a package ready for building.

Following up, we need to get it on the Jenkins CI...

Pushing to Jenkins

Once we have our package ready in the devuan-packages namespace, we push it to Jenkins by opening a Gitlab issue:

  • Title: buildadd
  • Assignee: @autobuild
  • Labels: any

(The labels here correspond to CPU architectures).

After opening the issue, in a matter of minutes, a bot will scan the issue, create corresponding jobs on Jenkins, and close your issue, commenting its progress and end result.

To build your package, open another issue:

  • Title: `build:
  • Assignee: @autobuild

And again, in a matter of minutes, you package should start building.