Files

81 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# webkit2gtk-automator
Automated builder and AUR publisher for [webkit2gtk](https://aur.archlinux.org/packages/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](https://aur.archlinux.org/packages/webkit2gtk-bin) AUR package, with the prebuilt artifact hosted on [GitHub Releases](https://github.com/Brodino96/webkit2gtk-automator/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**
```bash
git clone https://github.com/Brodino96/webkit2gtk-automator.git
cd webkit2gtk-automator
```
**2) Configure the environment**
```bash
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 for compilation, also caps the container's CPU quota (default: `4`) |
**3) Start the daemon**
```bash
docker compose up -d
```
**4) Optional - Watch the logs**
```bash
docker compose logs -f
```
## Useful commands
```bash
# 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 13 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