[DX-4048] use dynamic ChIP Ingress/Router host port allocation#22315
[DX-4048] use dynamic ChIP Ingress/Router host port allocation#22315
Conversation
|
I see you updated files related to
|
|
✅ No conflicts with other open PRs targeting |
|
There was a problem hiding this comment.
Pull request overview
Risk Rating: MEDIUM
This PR updates the local CRE/Beholder and system-test configuration flow to support dynamic ChIP Ingress/Router host port allocation, avoiding hard-coded/default gRPC ports and passing the router’s internal gRPC URL into generated node configs.
Changes:
- Stop forcing a fixed
--grpc-portwhen starting Beholder/ChIP Ingress; allow Docker to assign the host port when unspecified. - Plumb Chip Router internal gRPC URL through CRE environment setup into generated node TOMLs (Telemetry ChipIngress endpoint).
- Bump
chainlink-testing-frameworkchiprouter/dockercompose component versions and adjust GitHub Actions workflows/env vars accordingly.
Targeted areas for scrupulous human review
system-tests/lib/cre/environment/environment.go: new dereference ofinput.ChipRouterInput.Out.InternalGRPCURL(possible nil output / API expectation mismatch with CTF).core/scripts/cre/environment/environment/beholder.go: behavior when--grpc-port=0(dynamic port) vs existing port-availability checks and downstream registration assumptions..github/workflows/*: YAML line-splitting aroundruns-onlabels and image env vars—ensure rendered values are exactly as intended in GitHub Actions.
Reviewed changes
Copilot reviewed 11 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
system-tests/tests/test-helpers/beholder_provider.go |
Starts Beholder without passing a fixed gRPC port (dynamic allocation). |
system-tests/tests/go.mod |
Bumps CTF chiprouter version. |
system-tests/tests/go.sum |
Updates sums for bumped CTF components. |
system-tests/lib/go.mod |
Bumps CTF chiprouter/dockercompose and adds indirect protocompile. |
system-tests/lib/go.sum |
Updates sums for bumped CTF components and new indirects. |
system-tests/lib/cre/types.go |
Adds Chip Router internal gRPC URL to config-generation input + validation. |
system-tests/lib/cre/environment/environment.go |
Passes Chip Router internal gRPC URL into DON config generation. |
system-tests/lib/cre/don/config/config.go |
Uses provided Chip Router internal gRPC URL for Telemetry ChipIngress endpoint. |
core/scripts/go.mod |
Updates dockercompose dep; moves chiprouter to indirect. |
core/scripts/go.sum |
Updates sums for bumped CTF components. |
core/scripts/cre/environment/environment/beholder.go |
Defaults --grpc-port to 0 (dynamic) and registers Beholder via internal gRPC URL. |
.github/workflows/cre-system-tests.yaml |
Updates env var names/formatting for Chip components and runner labels. |
.github/workflows/cre-soak-memory-leak.yml |
Updates env var names/formatting for Chip components and runner labels. |
.github/workflows/cre-regression-system-tests.yaml |
Updates env var names/formatting and improves shell quoting/flow. |
| updatedNodeSets, topoErr := donconfig.PrepareNodeTOMLs( | ||
| ctx, | ||
| topology, | ||
| creEnvironment, | ||
| input.NodeSets, | ||
| input.Capabilities, | ||
| input.ConfigFactoryFunctions, | ||
| input.ChipRouterInput.Out.InternalGRPCURL, | ||
| ) |
|
|
||
| cmd.Flags().DurationVarP(&timeout, "wait-on-error-timeout", "w", 15*time.Second, "Time to wait before removing Docker containers if environment fails to start (e.g. 10s, 1m, 1h)") | ||
| cmd.Flags().IntVarP(&port, "grpc-port", "g", ctfchiprouter.DefaultBeholderGRPCPort, "GRPC port for downstream Chip Ingress") | ||
| cmd.Flags().IntVarP(&port, "grpc-port", "g", 0, "GRPC port for downstream Chip Ingress") |
| return fmt.Errorf("no addresses found for home chain %d in datastore", g.RegistryChainSelector) | ||
| } | ||
| // TODO check for required registry contracts by type and version | ||
| if g.ChipRouterInternalGRPCURL == "" { |
* use dynamic ChIP Ingress/Router host port allocation * lint fix * fix actionlints * tagged CTF
* use dynamic ChIP Ingress/Router host port allocation * lint fix * fix actionlints * tagged CTF




Instead of using static ports ChIP Ingress and ChIP Router will now defer to Docker to select a free host port. That will allow us to avoid conflicts with GHA Runner Listener process like this one: