github allure-framework/allurectl 2.19.0

latest releases: 2.21.1, 2.21.0, 2.20.0...
6 hours ago

What's Changed

πŸ”¬ Improvements

  • fix message typos in the stdout outputs
  • Gracefully handle SIGTERM in upload and watch (see below)
  • Make watch handle Allure TestOps upload outages predictably (see below)

🐞 Bug Fixes

  • Add coverage for missing attachments during upload
  • Fix of upload retries and split oversized batches (see below)
  • Ignore invalid ALLURE_TESTPLAN_PATH in watch (see below)
  • Fix watcher skipping valid parallel test results

SIGTERM handling

allurectl upload and allurectl watch now respond cleanly when CI sends SIGTERM. Instead of hanging on long timeouts or being killed abruptly, the client starts a bounded shutdown, performs best-effort watcher/session cleanup, and exits with the conventional 143 signal code.

For watch, the watched command is also terminated gracefully and given a short window to exit before being force-stopped. Normal watch behavior is preserved: when no signal is received, the final exit code still comes from the watched command.

Handling Allure TestOps outages

allurectl watch now separates test execution from Allure TestOps upload recovery. By default, the watched command is allowed to finish while allurectl retries service-side upload failures, then allurectl exits with code 1 if required results still could not be sent.

Teams that require TestOps as the system of record can use --fail-fast to stop the watched command when reporting cannot recover. Teams that treat TestOps reporting as best effort can use --continue-on-error to log unsent results without changing the test command result; the old --silent flag remains as a hidden deprecated alias. Data rejection errors such as too-large uploads are still surfaced instead of being hidden as service outages.

  • New --fail-fast flag to stop watched command on unrecoverable TestOps errors
  • New --continue-on-error flag to preserve command exit code despite upload errors
  • Deprecated --silent alias for backward compatibility
  • Context-aware retry with linear backoff (5 attempts, 100-400ms delays)
  • Thread-safe upload error handler callback

upload retries and split oversized batches

Upload batching now reacts to server response codes instead of repeating requests that cannot succeed. When TestOps returns Request Entity Too Large for a multi-file batch, allurectl splits it into smaller uploads; a single oversized file fails once and reports the failure. Permanent client errors are no longer retried, while transient 429 and server errors can still complete within a bounded retry budget.

The upload and watch commands now surface watcher/upload failures to callers instead of only logging them. The upload batch size option is also applied to batching, and files larger than the configured batch capacity are rejected before they can stall batching.

  • Exponential backoff for upload retries with bounded delays (50ms β†’ 400ms)
  • Batch size validation capped at 1 GiB to prevent memory exhaustion
  • Thread-safe batch recording with mutex-protected access
  • HTTP status-based retry policy distinguishing permanent vs transient failures

Ignore invalid ALLURE_TESTPLAN_PATH in watch

allurectl watch now only passes ALLURE_TESTPLAN_PATH to the watched test command when it points to an existing test plan file. Empty, missing, or directory values are ignored instead of being forwarded to test adapters, which avoids failures in adapters that reject invalid test plan paths.

When ALLURE_TESTPLAN_PATH is explicitly set but invalid, watch prints a warning and does not silently replace it with a generated job-run plan. If the variable is absent, the existing job-run test plan flow still works: allurectl can generate .allure/testplan.json and pass its absolute path to the child command.

Fix watcher skipping valid parallel test results

allurectl now handles result files that are still settling while tests run in parallel without prematurely spending their retry budget or skipping upload. Files that are still being preprocessed or retried remain in the watcher pipeline until they are actually ready, and changed files refresh their observed hash so a later stable check can pass.

This fixes cases where small, valid Allure result files could be retried as β€œnot ready” and then marked failed before upload, causing missing results in Allure TestOps.

Don't miss a new allurectl release

NewReleases is sending notifications on new releases.