Skip to content

feat: local build support for block-node, mirror-node, relay, and explorer#4671

Open
JeffreyDallas wants to merge 15 commits into
mainfrom
04661-D-local-build
Open

feat: local build support for block-node, mirror-node, relay, and explorer#4671
JeffreyDallas wants to merge 15 commits into
mainfrom
04661-D-local-build

Conversation

@JeffreyDallas

@JeffreyDallas JeffreyDallas commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Description

This pull request changes the following:

  • Adds --component-image flag support to block-node, explorer commands (mirror-node and relay already had it); unifies --image-tag and --component-image so both flags support local Docker images and registry images through the same code path.
  • When a local image reference is detected and the image exists in Docker, solo automatically runs kind load docker-image into the Kind cluster and sets imagePullPolicy: Never on the relevant Helm values — no manual kind or kubectl commands required.
  • When the image is not found in Docker (registry pull flow), solo falls back gracefully to a plain image.tag override; no error is thrown.
  • Adds deployment state images subcommand — lists every pod in the deployment namespace with its running container image in an aligned table (COMPONENT / POD / CONTAINER / IMAGE), useful to verify a locally-built image was loaded correctly.
  • Consolidates duplicated kind-load boilerplate into three protected helpers on BaseCommand (splitImageNameTag, isLocalImageAvailableInDocker, kindLoadComponentImage) and moves KindBuilder injection to the base class; removes redundant constructor injection from block-node, relay, mirror-node, explorer, backup-restore, and init.
  • Marks --image-tag as deprecated in its flag description, pointing users to --component-image.
  • Fixes checkDockerImageExists to not log a spurious error when grep exits 1 (no matches = image not found), which was printing noise on every non-local deploy.
  • Fixes a bug where the "Deploy block node with local built image" task title was appended even when the kind-load was skipped (image not in Docker).
  • Fixes the pre-existing unit test should not include the current block node in generated block node sources by filtering the current block node out of its own upstream sources list in prepareValuesArgForBlockNode.

output of deployment state images

 *** Running images in deployment: solo-deployment ***
------------------------------------------------------------------------------------------------------------
  COMPONENT          POD                                 CONTAINER          IMAGE
------------------------------------------------------------------------------------------------------------
  minio-pool-1       minio-pool-1-0                      minio              quay.io/minio/minio:RELEASE.2024-08-03T04-33-23Z
  envoy-proxy-node1  envoy-proxy-node1-84ff6fb6b5-xwjt8  envoy-proxy        docker.io/envoyproxy/envoy:v1.21.1
  haproxy-node1      haproxy-node1-7d6fd8f8d-6hxph       haproxy            docker.io/haproxytech/haproxy-alpine:2.4.25
  network-node1      network-node1-0                     root-container     ghcr.io/hashgraph/solo-containers/debian-s6-java25:0.45.3
  block-node-1       block-node-1-0                      block-node-server  ghcr.io/hiero-ledger/hiero-block-node:0.35.0

Related Issues

Pull request (PR) checklist

  • This PR added tests (unit, integration, and/or end-to-end)
  • This PR updated documentation
  • This PR added no TODOs or commented out code
  • This PR has no breaking changes
  • Any technical debt has been documented as a separate issue and linked to this PR
  • Any package.json changes have been explained to and approved by a repository manager
  • All related issues have been linked to this PR
  • All changes in this PR are included in the description
  • When this PR merges the commits will be squashed and the title will be used as the commit message, the 'commit message guidelines' below have been followed

Testing

  • This PR added unit tests
  • This PR added integration/end-to-end tests
  • These changes required manual testing that is documented below
  • Anything not tested is documented

The following manual testing was done:

  • block node add --image-tag 0.36.0-SNAPSHOT with image absent from Docker → kind-load skipped, helm chart pulls from registry, no error logged
  • block node add --image-tag 0.36.0-SNAPSHOT with image present in Docker → kind-load executes, pullPolicy: Never applied
  • deployment state images --deployment solo-deployment → aligned table printed with component names derived from pod labels / pod name stripping, no helm/kind dependency check

The following was not tested:

  • Mirror-node, relay, and explorer local-image flows (same code path as block-node, exercised only through unit tests)
  • Multi-cluster deployments

JeffreyDallas and others added 4 commits June 16, 2026 10:26
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
@JeffreyDallas JeffreyDallas requested a review from a team as a code owner June 16, 2026 16:10
@trunk-io

trunk-io Bot commented Jun 16, 2026

Copy link
Copy Markdown

Merging to main in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@JeffreyDallas JeffreyDallas self-assigned this Jun 16, 2026
@JeffreyDallas JeffreyDallas added the P1-💎 Current Milestone & Goals label Jun 16, 2026
@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Unit Test Results - Linux

38 tests  ±0   38 ✅ ±0   0s ⏱️ ±0s
17 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 125caa8. ± Comparison against base commit ee99636.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Unit Test Results - Windows

    1 files  ± 0    339 suites  +2   13s ⏱️ +3s
1 078 tests +10  1 078 ✅ +10  0 💤 ±0  0 ❌ ±0 
1 082 runs  +10  1 082 ✅ +10  0 💤 ±0  0 ❌ ±0 

Results for commit 125caa8. ± Comparison against base commit ee99636.

♻️ This comment has been updated with latest results.

Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
@github-actions

Copy link
Copy Markdown
Contributor

E2E Test Report

 10 files   94 suites   1h 24m 32s ⏱️
301 tests 301 ✅ 0 💤 0 ❌
320 runs  320 ✅ 0 💤 0 ❌

Results for commit 47cbcdb.

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

E2E Test Report

 10 files  ±0   94 suites  ±0   1h 23m 47s ⏱️ - 3m 57s
302 tests ±0  302 ✅ ±0  0 💤 ±0  0 ❌ ±0 
321 runs  ±0  321 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 125caa8. ± Comparison against base commit ee99636.

♻️ This comment has been updated with latest results.

@jeromy-cannon jeromy-cannon marked this pull request as draft June 19, 2026 15:50
@jeromy-cannon jeromy-cannon added the PR: Merge Conflicts A pull request that has merge conflicts that need to be resolved. label Jun 19, 2026
…local-build

# Conflicts:
#	src/core/helpers.ts
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
@JeffreyDallas JeffreyDallas removed the PR: Merge Conflicts A pull request that has merge conflicts that need to be resolved. label Jun 22, 2026
@JeffreyDallas JeffreyDallas marked this pull request as ready for review June 22, 2026 20:38
@JeffreyDallas JeffreyDallas added the PR: Needs Team Approval A pull request that needs review from a team member. label Jun 22, 2026
@jeromy-cannon jeromy-cannon marked this pull request as draft June 23, 2026 06:06
@jeromy-cannon jeromy-cannon added PR: Merge Conflicts A pull request that has merge conflicts that need to be resolved. and removed PR: Needs Team Approval A pull request that needs review from a team member. labels Jun 23, 2026
…local-build

Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>

# Conflicts:
#	src/commands/block-node.ts
@JeffreyDallas JeffreyDallas removed the PR: Merge Conflicts A pull request that has merge conflicts that need to be resolved. label Jun 23, 2026
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
@JeffreyDallas JeffreyDallas marked this pull request as ready for review June 23, 2026 14:45
@jeromy-cannon jeromy-cannon added the PR: Checks Failed A pull request where the checks have failed. label Jun 23, 2026
@jeromy-cannon jeromy-cannon marked this pull request as draft June 23, 2026 15:31
@JeffreyDallas JeffreyDallas marked this pull request as ready for review June 23, 2026 16:16
JeffreyDallas and others added 3 commits June 23, 2026 11:16
Signed-off-by: JeffreyDallas <39912573+JeffreyDallas@users.noreply.github.com>
Signed-off-by: Jeffrey Tang <jeffrey@swirldslabs.com>
@JeffreyDallas JeffreyDallas added Blocked Further development work is blocked by other item and removed PR: Checks Failed A pull request where the checks have failed. labels Jun 23, 2026
@JeffreyDallas

Copy link
Copy Markdown
Contributor Author

Wait #4798 to fix migration test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Blocked Further development work is blocked by other item P1-💎 Current Milestone & Goals

Projects

None yet

Development

Successfully merging this pull request may close these issues.

First-class local build support for mirror node, block node, relay, and explorer

2 participants