Skip to content

ci: expand cassert nightly test coverage + smart failure notify#8646

Merged
ihalatci merged 8 commits into
mainfrom
ihalatci-cassert-nightly-workflow
Jul 14, 2026
Merged

ci: expand cassert nightly test coverage + smart failure notify#8646
ihalatci merged 8 commits into
mainfrom
ihalatci-cassert-nightly-workflow

Conversation

@ihalatci

@ihalatci ihalatci commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Follow-up to the nightly full-cassert workflow (#8640). Expands test coverage and reworks failure notification. .github/-only.

Changes

setup_cassert_pg action

nightly_cassert.yml — test coverage

  • New generator group: check-query-generator + check-pytest (highest assert-fuzz value).
  • regress group += check-add-backup-node.
  • isolation group += check-enterprise-isolation-logicalrep-1/-2/-3.
  • New arbitrary-configs job: config-fuzz matrix sharded 6 ways per major, mirroring build_and_test.yml's splitter (uses pipenv run on the bare runner instead of gosu circleci).
  • No existing jobs dropped.

nightly_cassert.yml — failure notification

  • notify now dedups by a signature of the sorted failed-job-name set (embedded as an HTML marker in the issue body).
    • Same failing set as an existing open nightly-cassert issue → append a comment.
    • Different set → open a new issue, with a "New failures not previously tracked" section.

Notes

  • CI-minutes impact ≈ +21 legs (generator × 3 majors + arbitrary-configs 3×6 shards). The arbitrary-configs shard count (N=6) is the primary runtime tuning knob.
  • Fix citus_finish_citus_upgrade to always update last_upgrade_version #8645's 4 SQL source files (citus_finish_citus_upgrade fix) are out of scope here — only its action.yml locale change was folded.
  • First runs are expected red as pre-existing PG-core and Citus asserts surface — that is the intended signal.

Kept as a draft.

ihalatci-msft and others added 6 commits July 6, 2026 14:36
Add a nightly CI workflow that builds an --enable-cassert PostgreSQL
on-the-fly via the existing pgenv machinery (dropping -DUSE_VALGRIND),
rebuilds citus against it, and runs the full suites (regress, isolation,
columnar, failure, pg-upgrade, citus-upgrade) to surface PG-core and
Citus Assert() failures the PGDG-image PR pipeline cannot catch.

- .github/actions/setup_cassert_pg: composite action that builds the
  cassert PG (cached on ~/.pgenv keyed by version + config hash),
  transforms the devcontainer pgenv config to drop USE_VALGRIND, and
  builds/installs citus against the resulting pg_config. Exports
  LD_LIBRARY_PATH to the pgenv libdir so psycopg finds libpq.
- .github/workflows/nightly_cassert.yml: cron 0 3 * * * UTC plus
  workflow_dispatch. A single params job is the version SSOT seam
  (future the-process/versions.yml derivation point) feeding all
  matrices. Pinned to main majors 16.13/17.9/18.3. citus-upgrade uses
  the local tarball path (old v14.0.1 -> HEAD; CI="" to force the local
  branch). Opens/appends a dated nightly-cassert issue on failure.

First runs are EXPECTED red across all majors as pre-existing asserts
surface; that is the intended signal. pg19-support adapts this later to
add the 19beta1 row and the 18->19 upgrade pair.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove Linux-irrelevant CRLF strip, ineffective ulimit -c, and a
redundant job-level permissions block already granted at workflow level.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Address review: fail the build loudly if the pgenv config inherited from the devcontainer ever loses --enable-cassert, and add a back-reference comment in default.conf so editors know the nightly depends on it. Keeps the devcontainer config as the single source of truth while turning a silent asserts-off run into a hard failure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
pgenv runs 'make world'/'install-world' for modern PG majors, which
builds the PG documentation. That doc build invokes xmllint and
xsltproc against the DocBook DTD/XSL; PG17+ hard-requires
postgres-full.xml so setup fails at ~2 min without them (PG16's older
doc Makefile no-ops gracefully, which is why only 17/18 broke in run
28804321920). Add docbook-xml, docbook-xsl, libxml2-utils and xsltproc
to the apt list, mirroring .devcontainer/Dockerfile which builds this
identical pgenv config successfully.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
pgenv runs 'make world'/'install-world' for modern PG majors, which
builds the PG documentation. That doc build invokes xmllint and
xsltproc against the DocBook DTD/XSL; PG17+ hard-requires
postgres-full.xml so setup fails at ~2 min without them (PG16's older
doc Makefile no-ops gracefully, which is why only 17/18 broke in run
28804321920). Add docbook-xml, docbook-xsl, libxml2-utils and xsltproc
to the apt list, mirroring .devcontainer/Dockerfile which builds this
identical pgenv config successfully.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.73%. Comparing base (fbb67f1) to head (5e2aa24).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8646      +/-   ##
==========================================
- Coverage   88.73%   88.73%   -0.01%     
==========================================
  Files         288      288              
  Lines       64428    64428              
  Branches     8113     8114       +1     
==========================================
- Hits        57170    57168       -2     
  Misses       4915     4915              
- Partials     2343     2345       +2     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Fold da_DK locale setup from #8645 (columnar collation tests).
Add generator group (check-query-generator, check-pytest),
check-add-backup-node, three enterprise-isolation-logicalrep
shards, and a sharded arbitrary-configs job.
Notify job now dedups by failed-job-name signature: append to an
existing open issue with the same failing set, otherwise open a
new issue highlighting untracked failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@ihalatci ihalatci changed the title ci: install DocBook toolchain for cassert PG setup ci: expand cassert nightly test coverage + smart failure notify Jul 7, 2026
@ihalatci
ihalatci marked this pull request as ready for review July 7, 2026 12:54
@ihalatci
ihalatci requested a review from onurctirtir July 7, 2026 12:54
@ihalatci
ihalatci enabled auto-merge (squash) July 14, 2026 15:20
@ihalatci
ihalatci merged commit f91592f into main Jul 14, 2026
230 of 231 checks passed
@ihalatci
ihalatci deleted the ihalatci-cassert-nightly-workflow branch July 14, 2026 15:42
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