ci: add GitHub Actions workflow - #3
Conversation
zoneripper is a single-file script with no package and no tests, so the module-package workflow does not apply. Runs the strongest gates that do: ruff, compileall across 3.11-3.13, and a --help smoke that exercises argparse and every module-scope import (exits 1 when dnspython is absent). This is a floor, not a substitute for a test suite. Hardening: SHA-pinned actions, contents: read, persist-credentials: false, concurrency cancellation, fail-fast: false, timeout-minutes.
|
Warning Review limit reached
Next review available in: 15 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Comment |
Greptile SummaryThe PR introduces a read-only GitHub Actions matrix that installs dependencies, lints the standalone script, byte-compiles it, and exercises CLI startup.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| .github/workflows/ci.yml | Adds the Python CI matrix and its dependency installation, lint, compilation, and smoke-test gates. |
| ruff.toml | Defines the Python 3.11 target and an explicit baseline Ruff rule set. |
Reviews (3): Last reviewed commit: "ci: constrain the ruff install" | Re-trigger Greptile
The first CI run failed on every module, in two ways tracing to one root cause: lint was never actually pinned down. 1. 'ruff: command not found' — ruff is required by the before-commit checklist but was absent from the dev extras, so pip install -e '.[dev]' never provided it. It passed locally only because developer venvs had it installed by hand. 2. Lint failures on a clean checkout — with no [tool.ruff] section the linted rule set is whatever the installed ruff defaults to, and that widens each release, so a green local run and a red CI run could disagree purely by version. Copies the pattern portscanner already used (the only module that passed): pin target-version, state select = [E4, E7, E9, F] explicitly, add ruff>=0.6 to dev. No source change needed — every module passes this rule set as-is.
Installing ruff unpinned made a required gate depend on whatever PyPI serves that day, so an unchanged revision could start failing when ruff widens its defaults. Floors it at the same >=0.6 the packaged modules pin in their dev extras; ruff.toml already pins the rule set itself.
What
Adds
.github/workflows/ci.yml, shaped for what this repo actually is.Why it differs from the other modules
zoneripper is a standalone single-file script — no
pyproject.toml, no package, no test suite. The module-package workflow does not apply. This runs the strongest gates available:ruff check zoneripper.py(ruff installed explicitly, since there are no[dev]extras to pull it in)compileall, catching syntax errors on each supported interpreterpython zoneripper.py --help, which exercises argparse setup and every module-scope import without touching the networkStep 3 is a real gate, not decoration: verified locally it exits
0with dnspython installed and1without, so a broken install or import surfaces here.Honest limitation
This is a floor, not a test suite. It proves the script parses, imports and starts — nothing about NSEC walking or NSEC3 hash collection is covered. Worth tracking real tests separately; the platform CLAUDE.md already records this module as the exception to the standard skeleton.