Creating package releases
This guide explains how to create Garden Linux Package releases.
Release hierarchy
Garden Linux uses a three-tier release hierarchy to deliver a complete operating system.
This document is about the first tier, the Packaging.
Understanding packaging
Read the Packaging Explanation to get familiar with the concepts of Packaging.
Prerequisites
Before creating a package release, ensure you have:
- Write access to the
gardenlinux/package-*repositories gitandghCLI tools installed and configured
Phase 0: Preparation
Step 1: Decide what to include
In tier one, individual packages will need updates based on recent CVEs or upstream releases. Check for potential upgrades in important packages:
- golang
- containerd
- runc
- curl
- openssl
- systemd
- glibc
- linux kernel
For each package requiring an update, follow the Package Backporting Guide.
- Navigate to the respective
github.com/gardenlinux/package-<name>repository. - Create a new package release if needed — see Package Backporting Guide for details.
- Note the new version tag for use in the APT Repository Release.
The complexity of updating a package varies:
- Simple: Packages that rebuild Debian packages with minimal adaptations.
- Complex: Packages with extensive adaptations that may not apply to newer versions, or packages built from upstream sources. These often require patching and may have special build dependencies.
For complex updates, thoroughly test the new package version before including it in a release.
TIP
To permanently exclude a package from the repo - for example if it unwanted for some reason - use a NULL release instead of removing the package repository (github.com/gardenlinux/package-<name>).
Phase 1: Creating the package release
Step 1: Build the package
Once you have made your changes in the package-<name> repository, push the branch to GitHub and verify that the build workflow runs successfully.
The build is triggered automatically on push if the workflow is configured accordingly. You can also trigger it manually:
# Trigger the build workflow manually for a specific package repository on the main (nightly) branch
gh workflow -R gardenlinux/package-<name> run build.yml --ref main
# Trigger the build workflow manually for a specific package repository on a release branch
gh workflow -R gardenlinux/package-<name> run build.yml --ref rel-2150Monitor the workflow:
# Watch the workflow status
gh run watch -R gardenlinux/package-<name>Or check the GitHub Actions page for the package repository.
For full details on how the GitHub Actions build workflow works, see GitHub Actions Package Building. To build and verify the package locally before pushing, see Local Package Building.
Step 2: Verify the release was created
After a successful build with release: true, the workflow automatically creates a GitHub release with the appropriate version tag (for example, 3.5.5-1gl0+bp2150).
Confirm the release exists:
# List the latest releases for the package repository
gh release list -R gardenlinux/package-<name> --limit 5Check that:
- The expected version tag is present.
- The release contains
.debbuild artifacts. - No build errors are shown in the workflow summary.
Step 3: Note the version tag
Record the exact version tag from the GitHub release — for example, 3.5.5-1gl0+bp2150. You will need this when updating the package-releases file in the next tier.
INFO
The version tag format is <upstream-version>-<debian-revision>gl<increment>+bp<garden-linux-major>. See the Packaging Explanation for details.
Verification
After the package release is published, verify it is ready for inclusion in an APT repository release.
Check the GitHub release
# Show the release details
gh release view <VERSION-TAG> -R gardenlinux/package-<name>Confirm that:
- The release is marked as the latest (or the intended tag for a patch release).
- All expected
.debartifacts are attached. - The release notes accurately reflect the changes.
Test the package locally
Use the Local Package Building guide to build from the release tag and install the resulting .deb in a test environment:
# Install the package in a test Garden Linux system to verify it works
dpkg -i <package-name>_<VERSION>_amd64.debNext step
Once all required package releases are ready, proceed to Creating APT Repository Releases to include the updated packages in an APT repository release.