Skip to content

fix(inkless:ci): guard JUnit parsing against killed-test reports - #696

Merged
EelisK merged 1 commit into
mainfrom
jeqo/fix-nightly-ci
Jul 14, 2026
Merged

fix(inkless:ci): guard JUnit parsing against killed-test reports#696
EelisK merged 1 commit into
mainfrom
jeqo/fix-nightly-ci

Conversation

@jeqo

@jeqo jeqo commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

A hung test that trips the timeout wrapper leaves empty or truncated JUnit XML files, which crash junit.py (an upstream script we keep unmodified) with "ParseError: no element found". Add a prune step to both inkless workflows that drops unparseable reports before parsing, so a summary is still produced and the real failure surfaces via GRADLE_TEST_EXIT_CODE. e.g., https://github.com/aiven/inkless/actions/runs/29296786453/job/86971965671

Also make timeout kills explicit: on exit 124 the Test step now emits an ::error:: annotation and a job-summary section instead of burying the reason in the step log.

Bump the nightly timeout to 120m (it hit 30m on every recent run); inkless.yml stays at 30m since its curated subset finishes well under it.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves Inkless CI resilience when the timeout wrapper kills hung test runs, which can leave behind empty/truncated JUnit XML that breaks the upstream .github/scripts/junit.py parser. The workflows now surface timeout-kills explicitly and prune unparseable JUnit XML before parsing so job summaries still render and the underlying failure is reflected via GRADLE_TEST_EXIT_CODE.

Changes:

  • Emit explicit GitHub Actions ::error:: annotations + job summary section when tests are killed by the timeout wrapper (exit 124).
  • Prune unparseable JUnit XML reports before invoking junit.py so parsing doesn’t crash on truncated/empty XML.
  • Increase nightly workflow timeout headroom to 120 minutes.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/inkless.yml Adds timeout-kill annotations and prunes invalid JUnit XML before parsing to keep summaries working on partial results.
.github/workflows/inkless-nightly.yml Same guardrails as inkless.yml, plus increases the test timeout to 120 minutes for full nightly suites.

Comment thread .github/workflows/inkless.yml Outdated
Comment thread .github/workflows/inkless-nightly.yml Outdated
@jeqo
jeqo force-pushed the jeqo/fix-nightly-ci branch from 3ee6ac8 to 1646af9 Compare July 14, 2026 08:13
@jeqo
jeqo marked this pull request as ready for review July 14, 2026 08:20
@jeqo
jeqo requested a review from Copilot July 14, 2026 08:20
@jeqo
jeqo requested a review from EelisK July 14, 2026 08:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/inkless.yml
Comment thread .github/workflows/inkless-nightly.yml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread .github/workflows/inkless.yml
Comment thread .github/workflows/inkless-nightly.yml
A hung test that trips the timeout wrapper leaves empty or truncated
JUnit XML files, which crash junit.py (an upstream script we keep
unmodified) with "ParseError: no element found". Add a prune step to
both inkless workflows that drops unparseable reports before parsing,
so a summary is still produced and the real failure surfaces via
GRADLE_TEST_EXIT_CODE.

Also make timeout kills explicit: on exit 124 the Test step now emits
an ::error:: annotation and a job-summary section instead of burying
the reason in the step log.

Bump the nightly timeout to 120m (it hit 30m on every recent run);
inkless.yml stays at 30m since its curated subset finishes well under it.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@EelisK
EelisK merged commit bfa763a into main Jul 14, 2026
6 checks passed
@EelisK
EelisK deleted the jeqo/fix-nightly-ci branch July 14, 2026 09:10
jeqo added a commit that referenced this pull request Jul 20, 2026
A hung test that trips the timeout wrapper leaves empty or truncated
JUnit XML files, which crash junit.py (an upstream script we keep
unmodified) with "ParseError: no element found". Add a prune step to
both inkless workflows that drops unparseable reports before parsing,
so a summary is still produced and the real failure surfaces via
GRADLE_TEST_EXIT_CODE.

Also make timeout kills explicit: on exit 124 the Test step now emits
an ::error:: annotation and a job-summary section instead of burying
the reason in the step log.

Bump the nightly timeout to 120m (it hit 30m on every recent run);
inkless.yml stays at 30m since its curated subset finishes well under it.
jeqo added a commit that referenced this pull request Jul 20, 2026
A hung test that trips the timeout wrapper leaves empty or truncated
JUnit XML files, which crash junit.py (an upstream script we keep
unmodified) with "ParseError: no element found". Add a prune step to
both inkless workflows that drops unparseable reports before parsing,
so a summary is still produced and the real failure surfaces via
GRADLE_TEST_EXIT_CODE.

Also make timeout kills explicit: on exit 124 the Test step now emits
an ::error:: annotation and a job-summary section instead of burying
the reason in the step log.

Bump the nightly timeout to 120m (it hit 30m on every recent run);
inkless.yml stays at 30m since its curated subset finishes well under it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants