Skip to content

[CRE] Mixed-env nightly full-matrix sweep + chain-specific variants - #23312

Open
prashantkumar1982 wants to merge 3 commits into
developfrom
cre/mixed-env-nightly
Open

[CRE] Mixed-env nightly full-matrix sweep + chain-specific variants#23312
prashantkumar1982 wants to merge 3 commits into
developfrom
cre/mixed-env-nightly

Conversation

@prashantkumar1982

Copy link
Copy Markdown
Contributor

[CRE] Mixed-env nightly full-matrix sweep + chain-specific variants

Stacked on #23290. Extends mixed-env non-determinism coverage beyond the per-PR OCR3/DON2DON subset.

What

  • Nightly full sweep (cre-mixed-env-nightly.yaml): runs the entire CRE matrix under mixed-env (mixed_env_all: true), comparing today's develop nightly image against a previous develop nightly — catching non-determinism introduced into develop between nightlies, across the whole suite. No image build (reuses cached nightlies).
  • mixed_env_all toggle in cre-system-tests.yaml: appends mixed-env to the default (EVM) topology list, and the chain-specific mixed-env variants to the Solana/Aptos/Stellar tests. Per-PR behavior is unchanged (toggle defaults to false).
  • Chain-specific mixed-env templates: mixed-env-solana-don, mixed-env-aptos-don, mixed-env-stellar-don — a 2-2 PR/develop split of each chain topology.
  • Generalized render: render-mixed-env.sh now renders any mixed-env-*-don.toml.tmpl; the workflow render step and image gating match any mixed-env* topology (startsWith).
  • gitignore covers rendered configs/mixed-env-*.toml; docs updated.

Verified locally

  • All three chain templates render with the correct 2-2 image split and parse via topology show (Solana/Stellar multi-don 4+4+1, Aptos single-don 4+1).
  • Both workflow YAMLs valid; matrix simulation with mixed_env_all: true gives Aptos→mixed-env-aptos, Solana→mixed-env-solana, base tests→mixed-env (default topology preserved alongside).

Known follow-ups

  • Sharding / Module_Cache / Multi_Gateway use special topologies and need their own mixed variants — not covered by this sweep yet.
  • Chain mixed-env templates duplicate their base topologies; keep them in sync (a topology generate --check-style guard would help).
  • The nightly cron (05:00 UTC) assumes the day's chainlink:nightly-<date> image exists; adjust if the nightly build slips. baseline_date is overridable via workflow_dispatch.

🤖 Generated with Claude Code

@prashantkumar1982
prashantkumar1982 requested review from a team as code owners August 3, 2026 18:43
@prashantkumar1982
prashantkumar1982 marked this pull request as draft August 3, 2026 18:43
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

✅ No conflicts with other open PRs targeting develop

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

I see you updated files related to core. Please run make gocs in the root directory to add a changeset as well as in the text include at least one of the following tags:

  • #added For any new functionality added.
  • #breaking_change For any functionality that requires manual action for the node to boot.
  • #bugfix For bug fixes.
  • #changed For any change to the existing functionality.
  • #db_update For any feature that introduces updates to database schema.
  • #deprecation_notice For any upcoming deprecation functionality.
  • #internal For changesets that need to be excluded from the final changelog.
  • #nops For any feature that is NOP facing and needs to be in the official Release Notes for the release.
  • #removed For any functionality/config that is removed.
  • #updated For any functionality that is updated.
  • #wip For any change that is not ready yet and external communication about it should be held off till it is feature complete.

@trunk-io

trunk-io Bot commented Aug 3, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@prashantkumar1982
prashantkumar1982 force-pushed the cre/mixed-env-nightly branch 3 times, most recently from b2d5caa to 710cb27 Compare August 5, 2026 15:56
Base automatically changed from cre/mixed-env-non-determinism to develop August 5, 2026 16:34
prashantkumar1982 and others added 2 commits August 5, 2026 09:40
Nightly full sweep that runs the entire CRE matrix under mixed-env, built on top
of the dedicated cre-mixed-env-tests.yaml workflow.

- cre-mixed-env-tests.yaml: add a full_matrix input. Off (per-PR default) it runs
  the base EVM set; on (nightly) it also runs the special-topology tests under
  their mixed-env variant. Matrix entries now carry per-test topology + config,
  and the render step / ctf-configs / TOPOLOGY_NAME use them.
- cre-mixed-env-nightly.yaml: scheduled workflow calling cre-mixed-env-tests.yaml
  with full_matrix: true, comparing today's develop nightly against a previous one.
- Special-topology mixed-env templates (2-2 split, verified via `topology show`):
  solana, aptos, stellar, sharded (preserves shard0 custom_ports), cache-test
  (preserves ModuleCache override), multi-gateway (preserves org override + both
  gateway DONs).
- render-mixed-env.sh generalized to render any mixed-env-*-don.toml.tmpl.
- gitignore covers rendered configs/mixed-env-*.toml; docs updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A scheduled sweep has no PR to block, so a failure was only visible via GitHub's
default single-recipient email + the Actions tab. Add a notify-on-failure job
(if: failure(), needs the sweep) that posts a rotating-light alert to the
#cre-platform-operations Slack channel with a link to the run, mirroring the
existing CRE Slack-notify pattern (slack-github-action + QA_SLACK_API_KEY).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@prashantkumar1982
prashantkumar1982 marked this pull request as ready for review August 5, 2026 16:57
on:
schedule:
# After the nightly image build (docker-build.yml runs at 03:00 UTC).
- cron: "0 5 * * *"

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.

what do you think about triggering it with workflow_call from this workflow? that's what we do for all other nightly tests and it is triggered by Docker Build, which build the nightly image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good idea — that's a better fit than my cron. I checked: docker-build.yml only calls post-docker-build.yml on its schedule/workflow_dispatch runs (the 03:00 UTC nightly), after the core image is built — so wiring in there gives us the event-driven trigger for free and drops my fragile "runs sometime after 03:00" cron guess and its race with the image build.

One wrinkle specific to mixed-env: unlike the other nightly suites, it needs a baseline (a previous nightly) in addition to the just-built image, and post-docker-build only passes chainlink_core_image_tag + chainlink_version. So the adaptation is:

  • switch cre-mixed-env-nightly.yaml from schedule to workflow_call with those two inputs (keeping workflow_dispatch for manual runs),
  • use chainlink_core_image_tag as the "today" side and resolve the baseline (a previous nightly) inside the workflow, and
  • add a call-cre-mixed-env-nightly job to post-docker-build.yml.

I'll confirm the nightly tag scheme lines up for picking the baseline while I'm at it. Will push shortly — thanks!

Addresses review feedback (Tofel, r3729052542): trigger the nightly sweep the same
way as the other nightly suites — via workflow_call from post-docker-build.yml,
which docker-build.yml invokes on its scheduled/dispatch run right after the nightly
core image is published. This drops the fragile "cron at 05:00, hoping the 03:00
image build finished" schedule and its race.

- cre-mixed-env-nightly.yaml: replace the `schedule` trigger with `workflow_call`
  (chainlink_core_image_tag + chainlink_version), keep workflow_dispatch for manual
  runs. The just-built nightly is the "today" side; only the baseline (a previous
  nightly) is resolved internally (set-baseline; defaults to yesterday).
- post-docker-build.yml: add a call-cre-mixed-env-nightly job passing the image tag
  and version, alongside the existing nightly test fan-out.
- docs: note the post-docker-build trigger.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@prashantkumar1982
prashantkumar1982 requested a review from Tofel August 8, 2026 02:06
@cl-sonarqube-production

Copy link
Copy Markdown

Quality Gate failed Quality Gate failed

Failed conditions
2 Security Hotspots
1 New Blocker Issues (required ≤ 0)
E Security Rating on New Code (required ≥ A)

See analysis details on SonarQube

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE SonarQube for IDE

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.

2 participants