Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f0f4276
feat: add config file support to configure docker images
KatyaRyazantseva Jan 16, 2026
698568d
Merge branch 'main' into add-config-file
KatyaRyazantseva Jan 19, 2026
39dc7a6
fix: move image to the validator-config.yml
KatyaRyazantseva Jan 21, 2026
b4c1b32
Merge remote-tracking branch 'upstream/main' into add-config-file
KatyaRyazantseva Jan 26, 2026
c347b73
Merge branch 'main' into add-config-file
KatyaRyazantseva Jan 29, 2026
dead69c
fix: add deploy-validator-config.yaml, delete annotated-validators.yaml
KatyaRyazantseva Feb 3, 2026
d069ba0
fix: change node to validator in user-config.yml
KatyaRyazantseva Feb 6, 2026
220b054
Merge remote-tracking branch 'upstream/main' into add-config-file
KatyaRyazantseva Feb 6, 2026
95b5242
fix: grandine flags
KatyaRyazantseva Feb 6, 2026
7584e76
fix: update comments
KatyaRyazantseva Feb 9, 2026
bb1e9a2
fix: revert deleting annotated_validators.yaml for the separate pr
KatyaRyazantseva Feb 9, 2026
7e94c95
fix: restore README for annotated validators
KatyaRyazantseva Feb 9, 2026
c6b5cbf
fix: fix deployed nodes summary, add scripts folder
KatyaRyazantseva Feb 9, 2026
6f606b1
fix: delete binary check from run-ansible
KatyaRyazantseva Feb 9, 2026
24af2e5
feat: replace validator-config.yaml with deploy-validator-config.yaml
KatyaRyazantseva Feb 9, 2026
91b9c46
Merge remote-tracking branch 'upstream/main' into add-config-file
KatyaRyazantseva Feb 9, 2026
90ca5fa
fix: use deploy_validator_config_file for prometheus
KatyaRyazantseva Feb 9, 2026
36fa6e9
fix: rename variable
KatyaRyazantseva Feb 10, 2026
2c2c398
fix: add deploy-validator-config to genesis generator
KatyaRyazantseva Feb 17, 2026
77ef5d0
Merge remote-tracking branch 'upstream/main' into add-config-file
KatyaRyazantseva Feb 19, 2026
4450189
feat: add overrides for docker_image and run_mode
KatyaRyazantseva Feb 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ data
*.old
.DS_Store

# User configuration files
user-config.yml

# Generated genesis files (created by generate-genesis.sh)
config.yaml
validators.yaml
Expand Down
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,41 @@ node_docker="--platform linux/amd64 qdrvm/qlean-mini:dd67521 \
node_setup="docker"
```

### User Configuration Overrides (`user-config.yml`)

You can override the Docker image or run mode (docker/binary) for individual nodes without modifying any tracked files. This is useful for testing custom builds or switching a node to binary mode for local debugging.

**Setup:**
```sh
# Copy the example file
cp user-config.yml.example user-config.yml

# Edit to override specific nodes
```

**Format** — specify only the nodes you want to override:
```yaml
zeam_0:
run_mode: docker
docker_image: blockblaz/zeam:custom-tag

ream_0:
run_mode: binary
```

**Fields:**
| Field | Description |
|-------|-------------|
| `run_mode` | `"docker"` or `"binary"` — overrides the default set in the client-cmd script |
| `docker_image` | Docker image to use (only applies when `run_mode` is `docker`) |

**How it works:**
- `user-config.yml` is auto-detected from the project root during `spin-node.sh` execution
- Overrides are applied per-node after sourcing the client-cmd script, right before spinning the node
- If `run_mode` is set to `binary`, `docker_image` is ignored
- Nodes not listed in the file use their defaults from `client-cmds/<client>-cmd.sh`
- The file is gitignored so your local overrides won't affect others

## Key Management

### Key Lifetime
Expand Down
28 changes: 28 additions & 0 deletions spin-node.sh
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,34 @@ for item in "${spin_nodes[@]}"; do
echo "$sourceCmd"
eval $sourceCmd

# Apply user-config.yml overrides (run_mode, docker_image) if file exists
user_config="$scriptDir/user-config.yml"
if [ -f "$user_config" ]; then
# Override run_mode if specified for this node (check first since it affects docker_image)
user_run_mode=$(yq eval ".$item.run_mode // \"\"" "$user_config" 2>/dev/null)
if [ -n "$user_run_mode" ] && [ "$user_run_mode" != "null" ]; then
if [ "$user_run_mode" == "docker" ] || [ "$user_run_mode" == "binary" ]; then
node_setup="$user_run_mode"
echo " user-config.yml: overriding run_mode for $item: $user_run_mode"
else
echo " user-config.yml: ignoring unknown run_mode '$user_run_mode' for $item (expected: docker or binary)"
fi
fi

# Override docker image if specified for this node (only applies in docker mode)
if [ "$node_setup" == "docker" ]; then
user_docker_image=$(yq eval ".$item.docker_image // \"\"" "$user_config" 2>/dev/null)
if [ -n "$user_docker_image" ] && [ "$user_docker_image" != "null" ]; then
# Replace the image in node_docker string (first word matching image:tag pattern)
original_image=$(echo "$node_docker" | grep -oE '[a-zA-Z0-9._/-]+:[a-zA-Z0-9._-]+' | head -1)
if [ -n "$original_image" ]; then
node_docker="${node_docker/$original_image/$user_docker_image}"
echo " user-config.yml: overriding docker_image for $item: $user_docker_image"
fi
fi
fi
fi

# spin nodes
if [ "$node_setup" == "binary" ]
then
Expand Down
14 changes: 14 additions & 0 deletions user-config.yml.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# User configuration overrides (auto-detected from project root)
# Copy this file to user-config.yml and customize.
# Only specify nodes you want to override — others use defaults from client-cmd scripts.
#
# Fields:
# run_mode: "docker" or "binary" (default: whatever client-cmd.sh sets)
# docker_image: Override the Docker image for this node

# zeam_0:
# run_mode: docker
# docker_image: blockblaz/zeam:custom-tag
#
# ream_0:
# run_mode: binary
Loading