Repository navigation
Conversation
tnazarew
force-pushed
the
ci/pr-coverage
branch
from
November 12, 2026 13:16
0445bd7 to
8f79e0b
Compare
Every job after the components used if: !failure(), so one failed
component (e.g. a Dataproc cluster that didn't start) blocked the report,
releases.json and the site for everything else, and the next run re-ran
everything that had changed.
- A part is a (component, component version, OpenLineage version) triple.
The release check writes the parts it plans (planned-parts artifact,
pairs without a valid scenario left out); collect marks planned parts
without a report as pending in generated-files/pending_runs.json, with
the number of failed runs in a row and the first/last failed run, and
lists them in the job summary.
- get_release_matrices.sh adds pending parts to the next run's matrices,
so a failed part is retried on every scheduled run until it passes, even
when no new release appeared.
- collect, notify, update-repo-files, tables and site run when their
inputs succeeded (!cancelled() + result checks) instead of only when
nothing failed; a failed notification doesn't block publishing.
- New workflow_dispatch input publish ('false' skips issues, report and
site) to test pipeline changes from a branch.
- Drops the update_repo_files move of updated-new-report.json, which
collect never uploads.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
…atrices GitHub's default fail-fast cancels the remaining matrix jobs when one fails, so a broken pair (e.g. an OpenLineage version that isn't published yet) also left its siblings without a result. Spark already sets fail-fast: false in its own workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
tnazarew
force-pushed
the
ci/retry-failed-parts
branch
from
November 12, 2026 13:16
7f65fa4 to
637a2b6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #352 (base
ci/pr-coverage, for the pytest setup); retarget tomainafter #352 merges. Independent of #353.Why
Every job after the components runs with
if: !failure(). One failed component (a Dataproc cluster that doesn't start, a jar staging error) blocks the report,releases.jsonand the site for everything else; the next scheduled run then re-runs everything that changed. The release check failed on 5 of its last 10 scheduled runs (4 in a row, 2026-10-28 → 31).What
(component, component_version, openlineage_version)triple (dataplex/scenarios: empty versions).initialize_workflowwrites the parts it's going to test from the effective matrices (planned-partsartifact). Pairs without a valid scenario are left out, since they can never produce a report (e.g. dbt 1.12.6 today:csv_to_postgresis gated to 1.8.0).collect-and-compare-reports(new inputtrack-pending, release check only) marks planned parts without a report as pending ingenerated-files/pending_runs.json, with failed runs in a row and first/last failed run, and lists them in the job summary. A part that reports again is dropped.get_release_matrices.shadds pending parts to the next run's matrices, so a failed part is retried on every scheduled run until it passes, even when no new release appeared. Matrices are cross products, so this can re-run a few extra pairs.!cancelled()+needs.<job>.result == 'success') instead of only when nothing failed. A failed notification doesn't block publishing.publishinput (manual runs, defaulttrue):falseskips issues, report and site, to test pipeline changes from a branch.fail-fast: falseon the Hive and dbt matrices (release, PR and spec-change workflows), so one failed pair doesn't cancel the others. Spark already set it.update_repo_filesmove ofupdated-new-report.json, which collect never uploads.The failed job itself still makes the run red (and is what the upcoming pipeline alarm reports); after 3 failed runs in a row a part will also be escalated (follow-up PR).
Verification
pytest scripts/tests→ 43 passed:pending_runs.pyplan/update/summary, andget_release_matrices.shrun against the repo'sversions.jsonwith a temporary pending file (4 of those failed before the script change).1.8.0 × {1.55.0, 1.55.99}+ dataplex, reports only for dbt 1.55.0 and dataplex → pendingdbt 1.8.0 × 1.55.99(failures 1); the next run's matrix is exactly that pair; a second failure → failures 2, first run kept.publish=false, dbt only,dbt_matrix={"component_version":["1.8.0"],"openlineage_versions":["1.55.0","1.55.99"]}(1.55.99 isn't published, so that pair fails):fail-fast: falsecommit fixes.dbt 1.8.0 × 1.55.99(1 failed run); notify, update-repo-files and site were skipped.🤖 Generated with Claude Code