pkggen is a powerful toolkit for automatically generating, testing and deploying desktop packages in multiple formats for multiple package repositories

Ready to use

Generators for popular platforms, such as GitHub and GitLab are already bundled

CI-ready

pkggen is designed to be easy to work with in CI workflows

Extensible

A generator can be implemented in any language with JSON support

Simplistic interface

Go through the entire generation, testing and deployment pipeline in only 3 CLI commands

pkggen:
  generator: github
  packages:
	- myproject:
	  github:
		username: example
		repo: myproject
		query: releases
		tarballs: [ "{{ pkgname }}.tar.gz" ]

Define your project's metadata

Define your project's metadata and generation method in simple YAML format

Templateize your packages

Convert your current packages to Jinja-like templates

...
DESCRIPTION="{{ description }}"
HOMEPAGE="{{ homepage }}"
SRC_URI="{{ uris[0].uri }}
{{ uris[1].uri }}"
...
user $ pkggen
Downloading tarball... ✅
Generating ebuild... ✅
Generating rpm... ✅
Generating deb... ✅
Generating pkgbuild... ✅
Successfully generated packages ✅

Generate your packages

Generate all your packages with a single command

Test your packages

pkggen can automatically spin up LXD/Incus containers and virtual machines to enable testing on any platform

user $ pkggen test
Spinning up virtual machine... ✅
Spinning up containers... ✅
Building in parallel...
...
Testing done! Results:
Success: ebuild ✅
Success: rpm ✅
Success: deb ✅
Failed: pkgbuild ❌
user $ pkggen push
Generating ebuild... ✅
Generating rpm... ✅
Generating deb... ✅
Generating pkgbuild... ✅
Successfully generated packages ✅
Pushing to MyOverlay Gentoo overlay... ✅
Pushing to MyPPA PPA... ✅
Pushing to AUR ✅

Deploy your packages

Once all tests succeed, pkggen can use credentials from the metadata file to automatically push to a package repository with support for Gentoo Overlays, Ubuntu PPAs and the AUR

Get involved

Anybody can easily create and contribute a generator and deployment agent in their favourite language!

Check out our GitHub repository for the source code and issue tracker!

So what are you waiting for?

Head to the documentation to learn more about pkggen!