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 |
| Lint & Test (Web) | lint-web.yml |
Runs eslint, builds frontend |
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
- Calibre installation on ARM64 may have different dependencies
If you encounter issues setting up CI on your fork, please open a discussion in the main repository.