Builds and publishes APT packages distributed via omakasui/apt-packages.
versions.yml — source of truth for versions
build-matrix.yml — supported distros and architectures
packages/<name>/
Dockerfile — build environment (receives ARG VERSION)
package.yml — package metadata
deps/ — pre-downloaded custom .deb dependencies (gitkeep)
The Dockerfile compiles or installs files and places them under /output/staged/.
The workflow assembles the final .deb using metadata from package.yml.
Required package.yml fields: section, priority, homepage, description, runtime_depends, distros.
The Dockerfile produces complete, ready-to-install .deb files directly in /output/.
The workflow picks them up and injects the distro tag into the filename.
Required package.yml fields: produces (list of package names), distros.
In both cases the workflow passes --build-arg VERSION=<version> — declare ARG VERSION at the top of every Dockerfile.
| Type | Dockerfile must write to |
|---|---|
build |
/output/staged/ (staged file tree, no DEBIAN/) |
repackage |
/output/<name>_<version>_all.deb (complete debs) |
BASE_IMAGE is also passed as a build-arg if the Dockerfile needs it.
# Package names are top-level keys — do NOT nest under a parent key.
package-name:
version: "1.2.3"
depends_on: [] # list of other packages in this repo required at build timePushing a change here triggers a build for the affected packages only. Multi-package commits are supported.
- Add an entry to
versions.yml. - Create
packages/<name>/Dockerfileandpackages/<name>/package.yml. - Push — the workflow detects the new entry automatically.
List sibling packages in depends_on. The workflow downloads their release assets and places them in packages/<name>/deps/ before the Docker build starts, so the Dockerfile can COPY deps/ /deps/ and install them.
GitHub > Actions > Build package > Run workflow > enter the package name.
Version is always read from versions.yml.