Skip to content

CI: on demand only, one job on Python 3.12 (run it with the ci label) - #97

Merged
dvejsada merged 2 commits into
mainfrom
claude/jolly-johnson-e3yr9u
Oct 2, 2026
Merged

dvejsada merged 2 commits into
mainfrom
claude/jolly-johnson-e3yr9u

Conversation

@dvejsada

@dvejsada dvejsada commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Saves Actions minutes. CI no longer runs on every push to main and every pull request as six jobs; it runs on demand, as one job.

Before: lint, tests on Python 3.11 / 3.12 / 3.13, specification conformance and build, as six jobs on every push and PR. Each paid for its own checkout, Python setup and pip install, and billing rounds each job up to a minute.

Now (.github/workflows/ci.yml):

  • On demand only. Two triggers: Actions → CI → Run workflow on any branch, or the ci label on a pull request (adding it runs CI; it then runs again on each push to that PR until the label is removed; other labels, and PRs without the label, run nothing and the job is skipped at no cost).
  • One job, one Python: 3.12, the version releases are built with.
  • One install: pip install -e ".[dev]" already holds pytest, ruff, build and twine.
  • One pytest run: the conformance corpus is part of it (LEGALDOWN_FIXTURES_DIR), instead of a second pytest tests/conformance. The spec is checked out as a sparse checkout of fixtures/ only. A conformance input (default on) switches the corpus off for a quicker manual run.
  • Build plus twine check --strict stay, so a packaging problem still shows before a release.
  • timeout-minutes: 10 caps a runaway run; in-progress runs on the same ref are still cancelled.

Run locally from a fresh 3.12 venv, the same steps take 23 s including the install (lint, 2413 tests with the corpus, build, twine check).

publish.yml (release / manual only, already 3.12) and claude.yml (@claude mentions only) are unchanged. README, CONFORMANCE.md and .github/PUBLISHING.md now say CI is on demand; the release steps tell you to run it on the release commit.

Things to know

  • PRs show no CI results unless the ci label is added, so run it before merging. If main is ever protected with required status checks, an on-demand workflow cannot satisfy them.
  • This PR carries the ci label, so its own CI run is the first real run of the new workflow.

Test plan

  • Workflow YAML parses; every step run locally on Python 3.12 in a fresh venv
  • CI run on this PR via the ci label is green

🤖 Generated with Claude Code

https://claude.ai/code/session_013WmBAc5T7UCKVdpUmg9qxz


Generated by Claude Code

claude added 2 commits October 2, 2026 17:08
Six jobs (lint, tests on 3.11/3.12/3.13, conformance, build), each with its own
checkout, Python setup and install, on every push and pull request, become one
manually dispatched job on the Python releases are built with: one install of the
dev extra, ruff, one pytest run that includes the specification fixtures corpus
(a sparse checkout of fixtures only, switchable off with the 'conformance' input),
and the build with twine check. A 10-minute timeout caps a runaway run.

README, CONFORMANCE.md and PUBLISHING.md say CI is on demand.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013WmBAc5T7UCKVdpUmg9qxz
Adding the label runs CI, and it runs again on each push to that pull request until
the label is removed; other labels and unlabeled pull requests run nothing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013WmBAc5T7UCKVdpUmg9qxz
@dvejsada dvejsada added the ci label Oct 2, 2026 — with Claude
@dvejsada
dvejsada merged commit 5b95098 into main Oct 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants