Deploy Runbook¶
Overview¶
DocVert is packaged as a Python CLI tool. It can be:
- Installed locally via
uv sync(requires system libraries: poppler, tesseract, libmagic) - Run inside a Docker container for isolated execution
- Deployed to air-gapped environments via offline Docker images from GitHub Releases
Local Installation¶
git clone https://github.com/seonghobae/docvert.git
cd docvert
uv sync
uv run python -m docvert.cli.main --help
For detailed per-OS installation instructions, see the Installation Guide.
Docker Execution¶
A Dockerfile is provided in the repository root. Build and run locally:
# Build the image
docker build -t docvert:offline .
# Convert a single file
docker run --rm -v $(pwd):/data \
docvert:offline convert /data/input.pdf --output-dir /data/out
# Batch convert a directory
docker run --rm \
-v $(pwd)/docs:/data/docs \
-v $(pwd)/out:/data/out \
docvert:offline batch /data/docs --output-dir /data/out
To push to a container registry:
Offline / Air-Gapped Deployment¶
For air-gapped environments, use the pre-built Docker images from GitHub Releases.
See the Offline Release Runbook for detailed instructions.
CI/CD¶
- CI workflow (
.github/workflows/ci.yml): Runs on every PR and push to master. - Code quality: Ruff lint/format, Mypy type check, Interrogate docstring check
- Tests: pytest with 100% coverage enforcement
- Pages workflow (
.github/workflows/pages.yml): Deploys documentation to GitHub Pages on push to master. - Release workflow (
.github/workflows/release.yml): Triggered by Git tags (v*). Builds Docker offline bundle and creates GitHub Release with split archive files.
Creating a Release¶
- Update the version in
pyproject.toml - Commit and merge to master
- Create and push a Git tag:
- The release workflow will automatically build the Docker image, create split archives, and publish a GitHub Release.