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.