Skip to main content

CI-esta: Let proven work rest. Measure the rest.

CI-esta: make GitHub Actions faster, with evidence

Documentation

Read the documentation · Related tools

See what holds up your PR, avoid repeating validated work, and run the remaining tests efficiently. CI-esta adds reports, environment caching, reusable execution evidence and test scheduling to your existing GitHub Actions workflows. No account, hosted service or application-language change is required.

CI PyPI Apache-2.0

Choose your first improvement

Use the adoption tutorial and checklist to choose an order, verify each improvement and find every action/CLI capability. Run ci-esta adoption --root . for a read-only inventory with source-linked suggestions. It helps find gaps; successful hosted runs and measurements verify whether an integration is useful.

Your problem What you gain Start here
You need to show whether an optimization helped Verified before/after gate, runner and step comparisons tied to exact source runs Measured impact
You cannot tell what keeps a PR waiting A sticky report with gate latency, dependency critical path, step timings and runner usage Report one workflow
Jobs reinstall the same dependencies A validated environment restore that repairs broken caches and always synchronizes the lock Replace your setup steps
Unaffected tests start expensive services Python file or whole-job selection before setup, with explanations Add pytest-selective
A new revision repeats work that already passed Reuse a matching completed lane, including a passing lane from a workflow where another lane failed Evidence reuse
One test shard keeps everyone waiting Learn file costs from JUnit; balance work inside one larger runner, across runners, or both Runnable shard recipe
Missing shard results could look green Verify completion receipts and require every planned pool before passing the gate Completion and gates
Tests hang or use less CPU than expected Process/thread diagnostics, cgroup limits and live shard progress Runner diagnostics

Start with one action

In an existing uv test job, keep checkout and your test command. Replace Python setup, uv setup and dependency installation with:

- uses: actions/checkout@v7
- uses: gigaverse-app/ci-esta/actions/setup-cached-uv@v1
  with:
    python-version: '3.12'
    sync-args: '--group test'
- run: uv run --no-sync pytest

Use your project's interpreter and dependency groups. Every action lives under actions/NAME. Use gigaverse-app/ci-esta/actions/ci-observability@v1 for reports.

Use actions/NAME@v1 for automatic Actions API upgrades. That alias is independent of Python package versions. Older .github/actions/NAME and top-level named callers must migrate to actions/NAME; each action has one implementation. Action API and versioning.

Copy the complete reporting or cache workflow. The actions set up their own tools; using them does not require adding CI-esta to your app. For Python execution commands and plugins, install ci-esta[pytest] in the test environment. Reporting and evidence actions also work with non-Python projects; Bun users have a native selection adapter.

Give your agent a concrete task

Read https://raw.githubusercontent.com/gigaverse-app/ci-esta/main/skills/ci-esta/SKILL.md
Measure a completed CI run and improve its largest avoidable cost. Use the public
action entry points and tested quickstart examples. Compare one large runner with
multiple runners if tests dominate. Keep required checks and full-suite coverage,
and show the workflow changes, test inventory, elapsed time and runner usage.

Install or update the portable skill. The skill, README and quickstart use the same recipes. Updating the Python package does not update an installed agent skill.

Results you can inspect

Change Observed result Evidence
Route a README change with pytest-selective 627 → 48 runner-seconds; 211 → 26 seconds elapsed Matched selection runs
Optimize a full conformance suite's execution Required gate 538 → 282 seconds, retaining all 982 integration cases per variant and validators Full execution comparison
Remove Windows Git startup overhead Full gate 249 → 185 seconds with existing cases, platform matrix and coverage retained Fresh control and raw reports

These are scenario-specific observations. Selection savings belong to pytest-selective and the consumer's declared inputs; they are not receipt-reuse savings. Runner-seconds are summed execution, not a billing invoice. Measure your own cold/warm setup, full/selected runs and runner layouts before claiming a gain.

How the safeguards fit

A duration estimate changes where a test runs, never whether it belongs in the plan. An environment cache accelerates setup; locked synchronization still runs. A completion receipt can justify reusing the same declared work, but an old green workflow alone cannot. Missing or contradictory proof executes the work again. Explicit reruns and scheduled full checks retain their meaning.

Input declarations, service isolation and conformance requirements belong to your project. Evidence reuse and strict gates explain these boundaries. The optimization guide connects selection, timing feedback, execution and measurement in order.

Further documentation

Install the standalone CLI with pip install ci-esta. Base reporting needs Python 3.11+ and neither pytest nor pytest-selective. For fixtures, schemas, source scanners, and subprocess helpers, follow the pytest-selective sidecar tutorial. Declare inputs at their readers so unrelated documentation does not select tests.

Use ci-esta[selection] for Python selection reports or ci-esta[pytest] for pytest execution tools. Before 1.0, review each minor release's migration notes.

Test execution profiles

Separate affected work from special-occasion execution with test execution policy. The JSON planner works with pytest, Bun, Playwright and custom runners; resource resolution is optional.

New policy adopters can declare work directly in plan-test-policy without a policy file. CI-esta provides ordinary, full, weekly, smoke, performance and probe defaults. Optional configuration contains only exceptional metadata and profile overrides; existing selectors remain authoritative for work IDs.

Metadata

Release files for ci-esta 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ci-esta 1.6.0
File Size Uploaded Provenance
ci_esta-1.6.0.tar.gz 999.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ci-esta 1.6.0
File Interpreter ABI Platform
ci_esta-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / ci_esta-1.6.0.tar.gz

Download URL ci_esta-1.6.0.tar.gz
Size 999.9 kB
Tags Source
SHA-256 checksum
How to use checksums
247fce5f632dd8ebbaf754e13be8d29596a40aa9bf2f32b415253e53d658ce2d
BLAKE2b-256 checksum
How to use checksums
26f624f0811b01dfd5213779aff2a4e1be36791c67ddb4491f241c08d2f3cf3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / ci_esta-1.6.0-py3-none-any.whl

Download URL ci_esta-1.6.0-py3-none-any.whl
Size 374.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
960f2ff62ef8ecadbc2d2f94f3660f8c7588b14b67a6ca347666f27cbe801626
BLAKE2b-256 checksum
How to use checksums
434c6c8d242820fdba676e9a64888d0ca965cbd7cd0d7be9cccdc03b03e1a7ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for ci-esta 1.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ci_esta-1.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page