Provides a github-apt-repos
utility for building simple, project-specific APT repositories without the overhead or build requirements of other APT repository hosts such as Launchpad PPAs or the openSUSE Build Service. If your project's build process produces *.deb
releases, or have considered it, but found the requirements of other APT repository host onerous, this may be for you.
The github-apt-repos
utility currently does roughly the following:
- Download the
*.deb
files from the latest GitHub release for agit
checkout from GitHub - Make an APT repository from the released
*.deb
files - Upload the APT repository to a special GitHub release which Debian/Ubuntu users can use to keep up-to-date.
Each phase is intended to be optional and incremental, re-using build artifacts already present, so it can be integrated into your build process.
The github-apt-repos
utility is intended to be used in a Debian/Ubuntu build environment with the usual DPKG and APT build tools. Specifically it requires the following be installed:
$ sudo apt install python-pip dpkg-dev apt-utils gpg
Since APT repositories require signing with GPG keys, github-apt-repos
is intended to be run on a build machine with normal access to the GPG private keys to be used to sign the repository. If no key is specified, github-apt-repos
will generate a new key for each project by default, so be sure to use it in an environment where you can preserve and manage the private keys.
Finally, install the actual package and its dependencies:
$ sudo pip install https://github.com/rpatterson/github-apt-repos/archive/refs/heads/master.tar.gz
Generally, run github-apt-repos
inside the checkout of the GitHub checkout of the repository whose releases you want to build and upload an APT repository for. Note that, the APT repository needs to be updated whenever your project has a new release so you may want to integrate it in your build and release process and you may want to pay particular attention to the --apt-dir
option argument.
See the builtin, CLI help for further details:
$ github-apt-repos --help
For example, TODO
In general, I'm eager to accept contributions or feature requests that will generalize things, make different phases optional, and in general be more agnostic about specific build processes. For example, make GitHub optional, just build an APT repo from *.deb
files. Another example, don't depend on git at all and be able to build an APT repository from any build of *.deb
releases.
Other TODOs:
- Release to PyPI
- Dogfood
*.deb
releases hosted in an APT repository on GitHub - Short CLI options? I'm really not sure we should.
- GitHub CLI to automatically build the apt repo when the upstream fork adds a release tag
I'm also open to discussing other contributions and feature requests. Send PR's freely.