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_TMPFS
with 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_DISABLED
with 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).