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!