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:
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.
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
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:
Go to repository Settings → Secrets and variables → Actions → Variables
Create a new variable named
NO_TMPFSwith valuetrue
Disabling the Workflow¶
If you need to disable the workflow:
Go to repository Settings → Secrets and variables → Actions → Variables
Create a new variable named
REPO_WORKFLOW_DISABLEDwith valuetrue
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).