Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
fc5c416
docs(validators): drop Asimov from node sync and setup guide
dohernandez Oct 19, 2026
9dd62fb
docs(validators): use shipped Bradbury manifest path and network label
dohernandez Oct 19, 2026
5286ffd
docs(validators): require Python 3.10+ on PATH for GenVM setup
dohernandez Oct 19, 2026
bbe0fb6
docs(validators): mark pip/venv package names as Debian/Ubuntu
dohernandez Oct 19, 2026
f31185d
docs: remove Testnet Asimov everywhere
dohernandez Oct 19, 2026
918820a
docs(validators): pick up fixed manifestpath comment from node template
dohernandez Oct 19, 2026
8b221b1
docs(validators): Bradbury phase 2 config and Conduit WebSocket key step
dohernandez Oct 19, 2026
7161b1d
docs(validators): send the Bradbury Conduit key in the header, not th…
dohernandez Oct 19, 2026
1b50a4e
docs(validators): point monitoring credentials to #bradbury
dohernandez Oct 19, 2026
8e57007
docs(validators): serve the Bradbury manifest as a download
dohernandez Oct 19, 2026
724ddb7
docs(validators): drop internal deployment name from the config templ…
dohernandez Oct 19, 2026
21dcbc3
ci(node-sync): one sync list, loud generators, and a local sync test
dohernandez Oct 19, 2026
cb5e6c0
docs(validators): sync node v0.6-dev (genlayer-node#2267 at ed771d161)
dohernandez Oct 19, 2026
3a083a0
docs(validators): fix hand-written v0.6 instructions that contradict …
dohernandez Oct 19, 2026
cc2a2ea
docs(validators): sync node #2267 at 3924a3036, use opt/genvm/current
dohernandez Oct 19, 2026
ebc04a9
docs(api): keep the gen_dbg_load_test stub out of the docs
dohernandez Oct 19, 2026
ce52f25
docs(validators): publish the newest rc until its stable release exists
dohernandez Oct 19, 2026
4502a4c
docs(validators): rc Docker images are linux/amd64 only
dohernandez Oct 19, 2026
0adfda7
docs(validators): changelog page shows every rc of an unreleased version
dohernandez Oct 19, 2026
c3373a7
docs(validators): sync node v0.6-dev at ec51b80c6 (genlayer-node#2267…
dohernandez Oct 19, 2026
2543f74
ci(node-sync): a sync with no doc changes reports no changes instead …
dohernandez Oct 19, 2026
60017f8
docs(validators): publish every version the node has a changelog for
dohernandez Oct 19, 2026
f6100ce
docs(validators): the setup guide lists only the current release line
dohernandez Oct 19, 2026
ac162bb
docs: correct Phase 2 validator prerequisites and network checks
jmlago Oct 19, 2026
7101a10
docs: preserve Orbit labels in future node config syncs
jmlago Oct 19, 2026
ee4bc86
docs: document Conduit key creation and registry discovery
jmlago Oct 19, 2026
bd94a00
docs(validators): require Node 20 for the v0.40 CLI
jmlago Oct 19, 2026
a6ff38b
docs(validators): install encrypted operator keystores without argv s…
jmlago Oct 19, 2026
27cd026
docs(validators): NODE_PASSWORD is needed for a validator, not for ev…
dohernandez Oct 19, 2026
9973979
docs(validators): sync genlayer-node#2271 at c26437fb9
dohernandez Oct 19, 2026
7dc549a
docs(validators): list the staking wizard's nine steps
dohernandez Oct 19, 2026
045c9ce
docs(validators): v0.6 upgrade: move Docker GenVM config mounts to op…
dohernandez Oct 19, 2026
04c387f
docs(validators): sync genlayer-node#2272 at 62454eac8 (rc.2 changelog)
dohernandez Oct 19, 2026
6e331db
docs(validators): AI-assisted setup matches the genlayernode skill (s…
dohernandez Oct 19, 2026
0305d1f
docs(validators): publish up to v0.6.0-rc.1; rc.2 comes later
dohernandez Oct 19, 2026
8a1ab1e
ci(node-sync): SYNC_TYPES runs a subset of sync types locally
dohernandez Oct 19, 2026
c4a09c8
docs: GenLayer Chain RPC endpoints instead of Conduit/Orbit ones
dohernandez Oct 19, 2026
9b3b13b
docs(validators): Bradbury block uses the GenLayer RPC host (genlayer…
dohernandez Oct 19, 2026
d96c305
docs(validators): document the published node v0.6.0-rc.1
dohernandez Oct 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
76 changes: 2 additions & 74 deletions .github/actions/sync-files/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,68 +37,12 @@ outputs:
runs:
using: 'composite'
steps:
- name: Prepare config file
if: inputs.type == 'config'
shell: bash
run: |
# For config type, handle special case:
# Copy config.yaml.example to temp location as config.yaml and sanitize

if [[ -f "${{ inputs.source_path }}" ]]; then
# Create temp directory
TEMP_DIR=$(mktemp -d)
echo "TEMP_CONFIG_DIR=$TEMP_DIR" >> $GITHUB_ENV

# Copy and rename config.yaml.example to config.yaml
cp "${{ inputs.source_path }}" "$TEMP_DIR/config.yaml"

# Sanitize: replace RPC URLs with placeholders and remove dev section
bash .github/scripts/sanitize-config.sh "$TEMP_DIR/config.yaml"

# Update source path for sync
echo "CONFIG_SOURCE=$TEMP_DIR/config.yaml" >> $GITHUB_ENV
else
echo "Config source file not found: ${{ inputs.source_path }}"
exit 1
fi

- name: Prepare docker-compose file
if: inputs.type == 'docker_compose'
shell: bash
run: |
# For docker_compose type, handle special case:
# Copy and sanitize (remove alloy service and volumes)

if [[ -f "${{ inputs.source_path }}" ]]; then
# Create temp directory
TEMP_DIR=$(mktemp -d)
echo "TEMP_DOCKER_COMPOSE_DIR=$TEMP_DIR" >> $GITHUB_ENV

# Copy docker-compose.yaml
cp "${{ inputs.source_path }}" "$TEMP_DIR/docker-compose.yaml"

# Sanitize: remove alloy service and volumes section using yq
bash .github/scripts/sanitize-docker-compose.sh "$TEMP_DIR/docker-compose.yaml"

# Update source path for sync
echo "DOCKER_COMPOSE_SOURCE=$TEMP_DIR/docker-compose.yaml" >> $GITHUB_ENV
else
echo "Docker compose source file not found: ${{ inputs.source_path }}"
exit 1
fi

- name: Sync files
id: sync
shell: bash
run: |
# Use prepared source for config/docker_compose types, otherwise use original source
if [[ "${{ inputs.type }}" == "config" ]] && [[ -n "$CONFIG_SOURCE" ]]; then
SOURCE_PATH="$CONFIG_SOURCE"
elif [[ "${{ inputs.type }}" == "docker_compose" ]] && [[ -n "$DOCKER_COMPOSE_SOURCE" ]]; then
SOURCE_PATH="$DOCKER_COMPOSE_SOURCE"
else
SOURCE_PATH="${{ inputs.source_path }}"
fi
# config and docker_compose sync a sanitized copy; every other type syncs as is.
SOURCE_PATH=$(bash .github/scripts/prepare-sync-source.sh "${{ inputs.type }}" "${{ inputs.source_path }}")

${{ github.action_path }}/sync.sh \
"${{ inputs.type }}" \
Expand All @@ -107,22 +51,6 @@ runs:
"${{ inputs.target_path }}" \
"${{ inputs.filter_pattern }}" \
"${{ inputs.exclude_files }}"

- name: Cleanup config temp directory
if: inputs.type == 'config' && always()
shell: bash
run: |
if [[ -n "$TEMP_CONFIG_DIR" ]] && [[ -d "$TEMP_CONFIG_DIR" ]]; then
rm -rf "$TEMP_CONFIG_DIR"
fi

- name: Cleanup docker-compose temp directory
if: inputs.type == 'docker_compose' && always()
shell: bash
run: |
if [[ -n "$TEMP_DOCKER_COMPOSE_DIR" ]] && [[ -d "$TEMP_DOCKER_COMPOSE_DIR" ]]; then
rm -rf "$TEMP_DOCKER_COMPOSE_DIR"
fi

- name: Upload artifacts
uses: actions/upload-artifact@v4
Expand Down
118 changes: 34 additions & 84 deletions .github/scripts/doc-generator.sh
Original file line number Diff line number Diff line change
@@ -1,98 +1,48 @@
#!/bin/bash
set -euo pipefail

# Documentation generation wrapper
# Runs all the npm scripts for doc generation with proper error handling
# Runs every generator that turns synced node files into pages.
# The one list of generators: package.json (dev, build), check-node-docs-sync.yml,
# sync-docs-from-node.yml and scripts/simulate-node-sync.sh all call this script.
# Each generator exits non-zero when it cannot find its source or target block.

GENERATORS=(
node-generate-changelog
node-update-setup-guide
node-update-config
node-update-docker-compose
node-update-env
node-update-monitoring-docker-compose
node-update-monitoring-alloy-config
node-update-greybox
node-publish-manifests
node-generate-api-docs
)

run_doc_generation() {
echo "Running documentation generation scripts..."

# Track success
local failed=false

# Run each generation script
echo "::group::Running node-generate-changelog"
if npm run node-generate-changelog; then
echo "✅ Generated changelog"
else
echo "❌ node-generate-changelog failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-setup-guide"
if npm run node-update-setup-guide; then
echo "✅ Updated setup guide versions"
else
echo "❌ node-update-setup-guide failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-config"
if npm run node-update-config; then
echo "✅ Updated config in setup guide"
else
echo "❌ node-update-config failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-docker-compose"
if npm run node-update-docker-compose; then
echo "✅ Updated docker-compose in setup guide"
else
echo "❌ node-update-docker-compose failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-monitoring-docker-compose"
if npm run node-update-monitoring-docker-compose; then
echo "✅ Updated alloy service in monitoring page"
else
echo "❌ node-update-monitoring-docker-compose failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-monitoring-alloy-config"
if npm run node-update-monitoring-alloy-config; then
echo "✅ Updated alloy config in monitoring page"
else
echo "❌ node-update-monitoring-alloy-config failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-update-greybox"
if npm run node-update-greybox; then
echo "✅ Updated greybox section in genvm configuration"
else
echo "❌ node-update-greybox failed"
failed=true
fi
echo "::endgroup::"

echo "::group::Running node-generate-api-docs"
if npm run node-generate-api-docs; then
echo "✅ Generated API documentation"
else
echo "❌ node-generate-api-docs failed"
failed=true
fi
echo "::endgroup::"

if [[ "$failed" == "true" ]]; then
echo "❌ Some documentation generation scripts failed"
local failed=()

for script in "${GENERATORS[@]}"; do
echo "::group::Running $script"
if npm run --silent "$script"; then
echo "✅ $script"
else
echo "❌ $script failed"
failed+=("$script")
fi
echo "::endgroup::"
done

if [[ ${#failed[@]} -gt 0 ]]; then
echo "❌ Failed generators: ${failed[*]}"
return 1
fi

echo "✅ All documentation generation scripts completed successfully"
return 0
}

# Run if called directly
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
run_doc_generation
fi
fi
10 changes: 8 additions & 2 deletions .github/scripts/git-utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ set -euo pipefail
# Extracted from the complex git operations in the workflow

# Create sync branch with proper naming
# The docs paths a node sync may change: what check_for_changes looks at and
# what commit_and_push_changes commits.
SYNC_PATHS=(content/validators pages/api-references pages/validators)

create_sync_branch() {
local version="$1"

Expand Down Expand Up @@ -44,7 +48,7 @@ commit_and_push_changes() {
echo "Committing changes..."

# Add relevant directories (including deletions)
git add --all content/validators pages/api-references pages/validators
git add --all "${SYNC_PATHS[@]}"

# Check what's staged
echo "📋 Files staged for commit:"
Expand All @@ -71,7 +75,9 @@ EOF

# Check for any changes
check_for_changes() {
if [[ -n "$(git status --porcelain)" ]]; then
# Only the synced paths count: the job also downloads its artifacts
# (temp-final/) into the checkout, and those are never committed.
if [[ -n "$(git status --porcelain -- "${SYNC_PATHS[@]}")" ]]; then
echo "has_changes=true" >> "$GITHUB_OUTPUT"
echo "✅ Changes detected"
return 0
Expand Down
79 changes: 79 additions & 0 deletions .github/scripts/node-sync-params.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/bin/bash
set -euo pipefail

# The one list of files synced from genlayer-node. The sync workflow and
# scripts/simulate-node-sync.sh both read it, so a local run copies exactly
# what CI copies.
#
# Usage:
# node-sync-params.sh --list sync types, one per line
# node-sync-params.sh --sources node repo paths to fetch, one per line
# node-sync-params.sh <sync_type> title=, source_path=, target_path=,
# filter_pattern= lines (GITHUB_OUTPUT format)
#
# Environment:
# SOURCE_ROOT where the node snapshot is checked out (default: source-repo)
# CHANGELOG_PATH, API_GEN_PATH, API_DEBUG_PATH, API_OPS_PATH,
# API_GEN_REGEX, API_DEBUG_REGEX: the workflow_dispatch overrides
# SYNC_TYPES optional space-separated subset of sync types for --list
# and --sources (local runs only, e.g. to pin some files to
# an older node tag); default: all types

SOURCE_ROOT="${SOURCE_ROOT:-source-repo}"
CHANGELOG_PATH="${CHANGELOG_PATH:-docs/changelog}"
API_GEN_PATH="${API_GEN_PATH:-docs/api/rpc}"
API_DEBUG_PATH="${API_DEBUG_PATH:-docs/api/rpc}"
API_OPS_PATH="${API_OPS_PATH:-docs/api/ops}"
API_GEN_REGEX="${API_GEN_REGEX:-gen_(?!dbg_).*}"
API_DEBUG_REGEX="${API_DEBUG_REGEX:-gen_dbg_(?!load_test).*}"

# type|title|node path|docs target|filter
TABLE="changelog|Changelog|${CHANGELOG_PATH}|content/validators/changelog|.*
config|Config File|configs/node/config.yaml.example|content/validators/config.yaml|.*
config_bradbury|Config File (Bradbury)|configs/node/bradbury.yaml.example|content/validators/bradbury.yaml|.*
config_bradbury_manifest|Protocol Manifest (Bradbury)|configs/node/bradbury.protocol-manifest.json|content/validators/bradbury.protocol-manifest.json|.*
docker_compose|Docker Compose File|release/docker-compose.yaml|content/validators/docker-compose.yaml|.*
docker_compose_monitoring|Docker Compose File (Monitoring)|release/docker-compose.yaml|content/validators/docker-compose-monitoring.yaml|.*
env_example|Environment File (.env.example)|release/.env.example|content/validators/env.example|.*
alloy_config|Alloy Config File|release/alloy-config.river|content/validators/alloy-config.river|.*
greybox_setup|Greybox Setup Guide|release/greybox-setup-guide.md|content/validators/greybox-setup-guide.md|.*
api_gen|API Gen Methods|${API_GEN_PATH}|pages/api-references/genlayer-node/gen|${API_GEN_REGEX}
api_debug|API Debug Methods|${API_DEBUG_PATH}|pages/api-references/genlayer-node/debug|${API_DEBUG_REGEX}
api_ops|API Ops Methods|${API_OPS_PATH}|pages/api-references/genlayer-node/ops|.*"

# Rows of the selected types (all rows when SYNC_TYPES is unset).
selected() {
if [[ -z "${SYNC_TYPES:-}" ]]; then
printf '%s\n' "$TABLE"
return
fi
local t
for t in $SYNC_TYPES; do
awk -F'|' -v t="$t" '$1 == t' <<< "$TABLE" | grep . || { echo "Unknown sync type: $t" >&2; exit 1; }
done
}

case "${1:-}" in
--list)
selected | cut -d'|' -f1
;;
--sources)
selected | cut -d'|' -f3 | sort -u
;;
"")
echo "Usage: $0 --list | --sources | <sync_type>" >&2
exit 1
;;
*)
row=$(awk -F'|' -v t="$1" '$1 == t' <<< "$TABLE")
if [[ -z "$row" ]]; then
echo "Unknown sync type: $1" >&2
exit 1
fi
IFS='|' read -r _ title src target filter <<< "$row"
echo "title=$title"
echo "source_path=$SOURCE_ROOT/$src"
echo "target_path=$target"
echo "filter_pattern=$filter"
;;
esac
36 changes: 36 additions & 0 deletions .github/scripts/prepare-sync-source.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash
set -euo pipefail

# Prints the path to sync from for one sync type. Types whose node file must be
# cleaned before it is published (config, docker_compose) get a sanitized copy in
# a temp directory; every other type syncs the node path as is.
# Used by .github/actions/sync-files and scripts/simulate-node-sync.sh.
#
# Usage: prepare-sync-source.sh <sync_type> <source_path>

TYPE="$1"
SOURCE="$2"
SCRIPTS="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

if [[ ! -e "$SOURCE" ]]; then
echo "Source not found: $SOURCE" >&2
exit 1
fi

case "$TYPE" in
config)
dir=$(mktemp -d)
cp "$SOURCE" "$dir/config.yaml"
bash "$SCRIPTS/sanitize-config.sh" "$dir/config.yaml" >&2
echo "$dir/config.yaml"
;;
docker_compose)
dir=$(mktemp -d)
cp "$SOURCE" "$dir/docker-compose.yaml"
bash "$SCRIPTS/sanitize-docker-compose.sh" "$dir/docker-compose.yaml" >&2
echo "$dir/docker-compose.yaml"
;;
*)
echo "$SOURCE"
;;
esac
Loading
Loading