Repository

GitHub Actions & Github Pages Automation

Repository Configuration

If you don’t have one, create a GPG signing key (leave the password empty):

# Generate a new GPG key
gpg --gen-key

Create Makefile.config and set the repository metadata, in particular GPG_KEY and DEB_ALL_TARGETS/RPM_ALL_TARGETS:

# Copy configuration example
cp common/Makefile.config.ex Makefile.config

# Tweak it
vim Makefile.config

Finally, commit & push Makefile.config.

Setting Up Automated Builds

Pakste includes a GitHub Actions workflow that automatically builds and publishes package repositories.

This workflow builds packages for all architectures and distributions declared in Makefile.config, then publishes them to GitHub Pages.

To set up this automation in your repository:

  1. Enable GitHub Pages:

    • Go to your repository on GitHub

    • Navigate to Settings → Pages

    • Under “Build and deployment”, select “GitHub Actions” as the source

    • Take note of the Github Pages URL.

  2. Configure GPG Signing Key:

    • Export your GPG private key:

      gpg --export-secret-keys --armor YOUR_KEY_ID
      
    • Add this key as a repository secret: - Go to repository Settings → Secrets and variables → Actions - Create a new repository secret named GPG_SIGNING_KEY - Paste your exported GPG key as the value

  3. Enable the Workflow:

    • By default, the workflow runs when you push to the main branch

    • You can also manually trigger it from the Actions tab in your repository

Disabling TMPFS Builds

By default, a tmpfs is used for the build.

If you have ram and/or space intensive builds (commulated >16GB), you can disable it:

  1. Go to repository Settings → Secrets and variables → Actions → Variables

  2. Create a new variable named NO_TMPFS with value true

Disabling the Workflow

If you need to disable the workflow:

  1. Go to repository Settings → Secrets and variables → Actions → Variables

  2. Create a new variable named REPO_WORKFLOW_DISABLED with value true

Building Locally

Preparation

# Optional: Clean everything before building
make clean

# Optional: Clean but keep upstream sources
make clean KEEP_CACHE=true

Building Specific .deb Repository

Build .deb repo for a specific distribution:

# (uncomment ERROR=skip to continue on package build failures)
make deb_repo -j4 DIST=trixie # ERROR=skip

Building Specific .deb Repository

Build .rpm repo for a specific distribution:

make rpm_repo -j1 DIST=el9 # ERROR=skip

Building All Repositories

Building all rpm/deb targets declared in Makefile.config:

# All deb repositories
make deb_all_repos -j4

# All rpm repositories
make rpm_all_repos -j4

Build all targets declared in Makefile.config:

make all_repos

Note

From there, you can publish the out/ directory on any static http hosting (S3, nginx, etc).