mirror of
https://github.com/Brodino96/webkit2gtk-automator.git
synced 2026-05-05 22:29:57 +02:00
761b48f535d64380edd4a1bf1fb48000747e8aaa
webkit2gtk-automator
Automated builder and AUR publisher for webkit2gtk, running on a self-hosted server.
Every hour the container polls the AUR for a new webkit2gtk version. When an update is detected, it builds the package from source inside an isolated Arch Linux container and publishes the resulting binary as a webkit2gtk-bin AUR package, with the prebuilt artifact hosted on GitHub Releases.
How it works
docker compose up -d
│
└── container starts
│
every hour:
├── query AUR RPC API for webkit2gtk version
├── if unchanged → sleep
└── if newer →
git pull webkit2gtk PKGBUILD
makepkg (all available cores)
upload .pkg.tar.zst to GitHub Releases
update webkit2gtk-bin PKGBUILD + .SRCINFO
git push to AUR
Setup
1) Clone the repository
git clone https://github.com/Brodino96/webkit2gtk-automator.git
cd webkit2gtk-automator
2) Configure the environment
cp .env.example .env
Edit .env and fill in:
| Variable | Description |
|---|---|
GITHUB_TOKEN |
Personal access token with Contents: read/write on this repo |
GITHUB_REPO |
Brodino96/webkit2gtk-automator |
AUR_SSH_KEY_PATH |
Absolute path to the SSH private key registered on your AUR account |
AUR_PACKAGE_NAME |
webkit2gtk-bin |
AUR_MAINTAINER_NAME |
Your name (written into the published PKGBUILD) |
AUR_MAINTAINER_EMAIL |
Your email (written into the published PKGBUILD) |
POLL_INTERVAL_SECONDS |
How often to check for updates, in seconds (default: 3600) |
NPROC |
CPU cores to use for compilation (default: all available) |
3) Start the daemon
docker compose up -d
4) Optional - Watch the logs
docker compose logs -f
Useful commands
# Stop the daemon
docker compose down
# Rebuild the image after a Dockerfile change
docker compose up -d --build
# Force a rebuild on next poll (reset the tracked version)
rm state/last_version
docker compose restart
Notes
- The build takes 1–3 hours depending on server hardware
- If an artifact for the current version already exists in
state/artifacts/, the build step is skipped and the existing file is published directly (useful for testing) - All logs go to stdout and are accessible via
docker compose logs - The
state/directory is created at runtime and is not tracked by git
Languages
Shell
100%