1.8 KiB
Contributing to Serena
Serena is a governed refactor program for AUTOMATIC1111/stable-diffusion-webui. This guide helps you run verification locally and understand CI behavior.
Quickstart
- Install dependencies:
pip install -r requirements-test.txtand runtime deps perrequirements_versions.txt - Create stub repositories:
python scripts/dev/create_stub_repos.py - Run tests: see Local verification below
Local verification
To verify the project builds and tests pass without a real model:
python launch.py --skip-prepare-environment --skip-torch-cuda-test --exit
pytest test
For full CI parity (including server startup and API tests), start the test server in one terminal, then run pytest in another. See .github/workflows/run_tests.yaml for the exact commands CI uses.
CI parity
CI uses deterministic stub repositories and fake inference to avoid external clones and real model loading. To reproduce CI locally:
- Run
python scripts/dev/create_stub_repos.pybefore any launch or test - Use
--skip-prepare-environmentwhen launching - CI sets
CI=true(GitHub Actions default); txt2img/img2img return a deterministic 1×1 PNG in CI instead of invoking the model
Stub repositories
CI uses stub repositories to satisfy import paths without cloning large external repos (e.g. ldm, sgm). See scripts/dev/create_stub_repos.py for implementation. The script creates minimal placeholder modules so the application can start and API contract tests can run.
Development workflow
- Create a branch from
main - Make changes; run
ruff .andpytest testlocally - Open a PR; CI runs linter, tests, and coverage
- Do not push directly to
main; merge via PR after CI passes
For milestone-specific workflow, see docs/serena.md and docs/milestones/.