This guide explains how GitHub Actions workflows work on forks of lightnovel-crawler.
All workflows are designed to provide full validation on forks, following the principle: Anyone can validate, only authorized repos can publish.
| Capability | Main Repo | Forks |
|---|---|---|
| Lint/validation | Yes | Yes |
| Build executables | Yes | Yes |
| Download artifacts | Yes | Yes |
| GitHub Releases | Yes | No |
| Docker push | Yes (lncrawl namespace) | Yes (fork namespace) |
| PyPI publish | Yes | No |
These workflows run automatically on pushes and pull requests:
| Workflow | File | Description |
|---|---|---|
| Lint & Test (Python) | lint-py.yml |
Runs flake8, builds wheel, tests installation |
The web frontend lives in the lncrawl/server/web submodule (lncrawl-web); its CI is in that repository.
build-server.yml– Builds and pushes the server Docker image (main repo only).docker-base.yml– Builds the Calibre base image for multi-arch.submodules.yml– Updates thelncrawl/server/websubmodule (triggered byrepository_dispatch).index-gen.yml– Generates source search index (main repo).
Triggered by version tags (v*). On forks, this workflow:
- Validates the build across multiple Python versions
- Builds executables for Windows, macOS, and Linux
- Uploads artifacts - downloadable from the Actions tab
- Builds and pushes Docker image to your fork's GHCR namespace
The following steps only run on the main repository:
- GitHub Release creation
- PyPI package publishing
- Short link updates (SHLINK)
After a successful release workflow run on your fork:
- Go to Actions tab in your fork
- Click on the completed workflow run
- Scroll to Artifacts section
- Download:
lncrawl-windows- Windows executablelncrawl-mac- macOS executablelncrawl-linux- Linux executable and wheel package
Docker images automatically push to your fork's namespace:
- Main repo:
ghcr.io/lncrawl/lightnovel-crawler - Your fork:
ghcr.io/<your-username>/lightnovel-crawler
This works automatically with the default GITHUB_TOKEN - no additional setup required.
- Go to your GitHub profile
- Click on Packages tab
- Find
lightnovel-crawlerimage
docker pull ghcr.io/<your-username>/lightnovel-crawler:latest
docker run --rm ghcr.io/<your-username>/lightnovel-crawler lncrawl --versionIf you want to publish releases from your fork to PyPI:
- Go to your fork's Settings > Secrets and variables > Actions
- Add the following secrets:
PYPI_API_TOKEN: Your PyPI API token
Note: You'll need to modify the workflow condition or publish under a different package name on PyPI.
The deploy workflow is designed for the main project's infrastructure. For your own deployment:
- Modify
scripts/server-compose.ymlwith your configuration - Add your deployment secrets:
SSH_SECRET: Private SSH key for deployment serverSSH_HOST: Hostname of your deployment serverDEPLOY_SERVER: SSH connection string (e.g.,user@host)
To test the full release pipeline:
# Create a test tag
git tag v0.0.0-test
git push origin v0.0.0-test
# Verify in GitHub Actions:
# - All jobs run and pass
# - Artifacts are available for download
# - Docker image appears in your Packages
# Clean up
git tag -d v0.0.0-test
git push origin :v0.0.0-test- Ensure GitHub Actions is enabled in your fork's Settings
- Check that the workflow file hasn't been modified to break triggers
- Verify that the paths filter matches your changes (for path-filtered workflows)
ARM64 builds use QEMU emulation and may take longer. If builds timeout:
- The base image must be built for ARM64 first, if you are coming from older builds this may not be the case
If you encounter issues setting up CI on your fork, please open a discussion in the main repository.