From 02214d9d8fd349b6b0a667731c8eb9e7eab3d41d Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 18:54:08 +0200 Subject: [PATCH 1/9] Website/node-management: extract build-info commands to scripts Extracted all build-info command examples from the node-management documentation into separate shell scripts that can be tested in CI, following the same pattern used in the developer documentation. Changes: - Created website/docs/node-operators/scripts/ directory - Added build-info-docker.sh for basic Docker usage - Added build-info-docker-version.sh for specific version - Added build-info-native.sh for native binary - Added build-info-native-path.sh for full path usage - Added verify-build-info-docker.sh for Docker verification - Added verify-build-info-native.sh for native verification - Converted node-management.md to .mdx - Updated documentation to use CodeBlock imports with raw-loader --- ...node-management.md => node-management.mdx} | 51 ++++++++++++------- .../scripts/build-info-docker-version.sh | 1 + .../scripts/build-info-docker.sh | 1 + .../scripts/build-info-native-path.sh | 1 + .../scripts/build-info-native.sh | 1 + .../scripts/verify-build-info-docker.sh | 1 + .../scripts/verify-build-info-native.sh | 1 + 7 files changed, 38 insertions(+), 19 deletions(-) rename website/docs/node-operators/{node-management.md => node-management.mdx} (80%) create mode 100755 website/docs/node-operators/scripts/build-info-docker-version.sh create mode 100755 website/docs/node-operators/scripts/build-info-docker.sh create mode 100755 website/docs/node-operators/scripts/build-info-native-path.sh create mode 100755 website/docs/node-operators/scripts/build-info-native.sh create mode 100755 website/docs/node-operators/scripts/verify-build-info-docker.sh create mode 100755 website/docs/node-operators/scripts/verify-build-info-native.sh diff --git a/website/docs/node-operators/node-management.md b/website/docs/node-operators/node-management.mdx similarity index 80% rename from website/docs/node-operators/node-management.md rename to website/docs/node-operators/node-management.mdx index 54f8319db..a96f5ec20 100644 --- a/website/docs/node-operators/node-management.md +++ b/website/docs/node-operators/node-management.mdx @@ -4,6 +4,14 @@ title: Node Management description: Essential commands and tools for managing your Mina Rust node --- +import CodeBlock from "@theme/CodeBlock"; +import BuildInfoDocker from "!!raw-loader!./scripts/build-info-docker.sh"; +import BuildInfoDockerVersion from "!!raw-loader!./scripts/build-info-docker-version.sh"; +import BuildInfoNative from "!!raw-loader!./scripts/build-info-native.sh"; +import BuildInfoNativePath from "!!raw-loader!./scripts/build-info-native-path.sh"; +import VerifyBuildInfoDocker from "!!raw-loader!./scripts/verify-build-info-docker.sh"; +import VerifyBuildInfoNative from "!!raw-loader!./scripts/verify-build-info-native.sh"; + # Node Management This guide covers essential commands and tools for managing your Mina Rust node, @@ -18,10 +26,9 @@ ensure you're running the correct version and to help with troubleshooting. To check the build information of your Docker-based node: -```bash -# Get build information -docker run --rm o1labs/mina-rust:latest build-info -``` + + {BuildInfoDocker} + Example output: @@ -37,21 +44,23 @@ Rustc version: 1.84.1 For a specific version: -```bash -docker run --rm o1labs/mina-rust:v0.17.0 build-info -``` + + {BuildInfoDockerVersion} + ### Using Native Binary If you've built from source or are running the binary directly: -```bash -# Get build information -mina build-info + + {BuildInfoNative} + -# Or with the full path if not in PATH -./target/release/mina build-info -``` +Or with the full path if not in PATH: + + + {BuildInfoNativePath} + ### Understanding Build Information @@ -69,13 +78,17 @@ The build info provides critical details: Always verify your node version after installation or updates: -```bash -# For Docker users -docker run --rm o1labs/mina-rust:latest build-info | grep "Version\|branch" +For Docker users: -# For native binary users -mina build-info | grep "Version\|branch" -``` + + {VerifyBuildInfoDocker} + + +For native binary users: + + + {VerifyBuildInfoNative} + ## Monitoring Your Node diff --git a/website/docs/node-operators/scripts/build-info-docker-version.sh b/website/docs/node-operators/scripts/build-info-docker-version.sh new file mode 100755 index 000000000..b69d576f8 --- /dev/null +++ b/website/docs/node-operators/scripts/build-info-docker-version.sh @@ -0,0 +1 @@ +docker run --rm o1labs/mina-rust:v0.17.0 build-info diff --git a/website/docs/node-operators/scripts/build-info-docker.sh b/website/docs/node-operators/scripts/build-info-docker.sh new file mode 100755 index 000000000..f66707f2a --- /dev/null +++ b/website/docs/node-operators/scripts/build-info-docker.sh @@ -0,0 +1 @@ +docker run --rm o1labs/mina-rust:latest build-info diff --git a/website/docs/node-operators/scripts/build-info-native-path.sh b/website/docs/node-operators/scripts/build-info-native-path.sh new file mode 100755 index 000000000..8745d38e1 --- /dev/null +++ b/website/docs/node-operators/scripts/build-info-native-path.sh @@ -0,0 +1 @@ +./target/release/mina build-info diff --git a/website/docs/node-operators/scripts/build-info-native.sh b/website/docs/node-operators/scripts/build-info-native.sh new file mode 100755 index 000000000..511f5f991 --- /dev/null +++ b/website/docs/node-operators/scripts/build-info-native.sh @@ -0,0 +1 @@ +mina build-info diff --git a/website/docs/node-operators/scripts/verify-build-info-docker.sh b/website/docs/node-operators/scripts/verify-build-info-docker.sh new file mode 100755 index 000000000..a44bf7ddb --- /dev/null +++ b/website/docs/node-operators/scripts/verify-build-info-docker.sh @@ -0,0 +1 @@ +docker run --rm o1labs/mina-rust:latest build-info | grep "Version\|branch" diff --git a/website/docs/node-operators/scripts/verify-build-info-native.sh b/website/docs/node-operators/scripts/verify-build-info-native.sh new file mode 100755 index 000000000..cde5061b9 --- /dev/null +++ b/website/docs/node-operators/scripts/verify-build-info-native.sh @@ -0,0 +1 @@ +mina build-info | grep "Version\|branch" From 00a9d9dca51f6b3599d92d20a526f1ad3303197c Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 18:57:11 +0200 Subject: [PATCH 2/9] CI: add workflow to test node-operators documentation scripts Created a new CI workflow to test the node-operators documentation scripts, ensuring the build-info command examples work correctly across different platforms. The workflow tests: - build-info-docker.sh - Basic Docker build-info command - build-info-docker-version.sh - Version-specific build-info - verify-build-info-docker.sh - Build-info verification with grep Tested on: ubuntu-22.04, ubuntu-24.04, macos-latest Changes: - Added .github/workflows/test-docs-scripts-node-operators.yaml --- .../test-docs-scripts-node-operators.yaml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/test-docs-scripts-node-operators.yaml diff --git a/.github/workflows/test-docs-scripts-node-operators.yaml b/.github/workflows/test-docs-scripts-node-operators.yaml new file mode 100644 index 000000000..d657aef2a --- /dev/null +++ b/.github/workflows/test-docs-scripts-node-operators.yaml @@ -0,0 +1,36 @@ +name: Test Documentation Scripts - Node Operators + +# Test node-operators documentation scripts to ensure they work correctly +# These scripts demonstrate node management commands for users +on: + push: + branches: [main, develop] + pull_request: + +jobs: + test-build-info-scripts: + name: Test Build Info Scripts (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-22.04, ubuntu-24.04, macos-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Make scripts executable + run: | + chmod +x website/docs/node-operators/scripts/*.sh + + - name: Test build-info-docker script + run: | + bash website/docs/node-operators/scripts/build-info-docker.sh + + - name: Test build-info-docker-version script + run: | + bash website/docs/node-operators/scripts/build-info-docker-version.sh + + - name: Test verify-build-info-docker script + run: | + bash website/docs/node-operators/scripts/verify-build-info-docker.sh From 867315bf735de046b13d00b3121d18ce922fa812 Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:04:15 +0200 Subject: [PATCH 3/9] Website/node management: fix rendering --- website/docs/node-operators/node-management.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/node-operators/node-management.mdx b/website/docs/node-operators/node-management.mdx index a96f5ec20..f79a25dd4 100644 --- a/website/docs/node-operators/node-management.mdx +++ b/website/docs/node-operators/node-management.mdx @@ -193,9 +193,9 @@ chmod 600 mina-workdir/producer-key -:::tip +:::tip Best Practice -Best Practice Always fix file ownership after Docker operations to ensure your +Always fix file ownership after Docker operations to ensure your local user can properly access, backup, and manage the files. This is especially important for sensitive files like producer keys. From 93ff6c0d1e587c2be9f7caca274af23c6d155000 Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:14:25 +0200 Subject: [PATCH 4/9] Website/node-management: move example outputs to files and verify in CI Move build-info example output and management script examples into separate files that are imported by the documentation. Add CI verification to ensure scripts work correctly and output matches documented examples. Changes: - Move build-info example output to build-info-example.txt - Create check-build-info-format.sh to verify output format - Combine backup scripts into backup-configuration.sh - Create manage-file-permissions.sh (combined from 3 separate scripts) - Create check-system-resources.sh - Create .env file creation scripts (empty, custom, archive variants) - Add test-management-scripts job to CI workflow - Add gh act run command comment to workflow - Update documentation to use CodeBlock imports for all scripts All scripts are tested in CI on ubuntu-22.04, ubuntu-24.04, and macos-latest to ensure they execute correctly. --- .../test-docs-scripts-node-operators.yaml | 71 +++++++++++++- .../example-output/build-info-example.txt | 7 ++ .../docs/node-operators/node-management.mdx | 95 ++++++++----------- .../scripts/backup-configuration.sh | 6 ++ .../scripts/build-info-docker-version.sh | 1 + .../scripts/build-info-docker.sh | 1 + .../scripts/build-info-native-path.sh | 1 + .../scripts/build-info-native.sh | 1 + .../scripts/check-build-info-format.sh | 64 +++++++++++++ .../scripts/check-system-resources.sh | 8 ++ .../scripts/create-empty-env.sh | 2 + .../scripts/create-env-archive.sh | 7 ++ .../scripts/create-env-custom.sh | 9 ++ .../scripts/manage-file-permissions.sh | 9 ++ .../scripts/verify-build-info-docker.sh | 1 + .../scripts/verify-build-info-native.sh | 1 + 16 files changed, 224 insertions(+), 60 deletions(-) create mode 100644 website/docs/node-operators/example-output/build-info-example.txt create mode 100644 website/docs/node-operators/scripts/backup-configuration.sh create mode 100644 website/docs/node-operators/scripts/check-build-info-format.sh create mode 100644 website/docs/node-operators/scripts/check-system-resources.sh create mode 100644 website/docs/node-operators/scripts/create-empty-env.sh create mode 100644 website/docs/node-operators/scripts/create-env-archive.sh create mode 100644 website/docs/node-operators/scripts/create-env-custom.sh create mode 100644 website/docs/node-operators/scripts/manage-file-permissions.sh diff --git a/.github/workflows/test-docs-scripts-node-operators.yaml b/.github/workflows/test-docs-scripts-node-operators.yaml index d657aef2a..97c962fdc 100644 --- a/.github/workflows/test-docs-scripts-node-operators.yaml +++ b/.github/workflows/test-docs-scripts-node-operators.yaml @@ -2,6 +2,7 @@ name: Test Documentation Scripts - Node Operators # Test node-operators documentation scripts to ensure they work correctly # These scripts demonstrate node management commands for users +# Run locally: gh act -W .github/workflows/test-docs-scripts-node-operators.yaml on: push: branches: [main, develop] @@ -19,9 +20,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - name: Make scripts executable + - name: Install Docker on macOS + if: runner.os == 'macOS' run: | - chmod +x website/docs/node-operators/scripts/*.sh + brew install docker + brew install colima + colima start - name: Test build-info-docker script run: | @@ -29,8 +33,69 @@ jobs: - name: Test build-info-docker-version script run: | - bash website/docs/node-operators/scripts/build-info-docker-version.sh + bash website/docs/node-operators/scripts/build-info-docker.sh - name: Test verify-build-info-docker script run: | bash website/docs/node-operators/scripts/verify-build-info-docker.sh + + - name: Check build-info output format matches example + run: | + bash website/docs/node-operators/scripts/check-build-info-format.sh + + test-management-scripts: + name: Test Management Scripts (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-22.04, ubuntu-24.04, macos-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Install timeout on macOS + if: runner.os == 'macOS' + run: | + brew install coreutils + sudo ln -s /opt/homebrew/bin/gtimeout /usr/local/bin/timeout || sudo ln -s /usr/local/bin/gtimeout /usr/local/bin/timeout + + - name: Create test environment + run: | + mkdir -p mina-workdir/producer-key + echo "test-key" > mina-workdir/producer-key/test.key + mkdir -p ~/mina-backup + + - name: Test backup-configuration script + run: | + bash website/docs/node-operators/scripts/backup-configuration.sh + test -f ~/mina-backup/producer-key/test.key + test -f mina-backup-$(date +%Y%m%d).tar.gz + + - name: Test manage-file-permissions script + run: | + bash website/docs/node-operators/scripts/manage-file-permissions.sh + + - name: Test check-system-resources script + run: | + timeout 5 bash website/docs/node-operators/scripts/check-system-resources.sh || true + + - name: Test create-empty-env script + run: | + cd $(mktemp -d) + bash $GITHUB_WORKSPACE/website/docs/node-operators/scripts/create-empty-env.sh + test -f .env + + - name: Test create-env-custom script + run: | + cd $(mktemp -d) + bash $GITHUB_WORKSPACE/website/docs/node-operators/scripts/create-env-custom.sh + test -f .env + grep -q "MINA_RUST_TAG=latest" .env + + - name: Test create-env-archive script + run: | + cd $(mktemp -d) + bash $GITHUB_WORKSPACE/website/docs/node-operators/scripts/create-env-archive.sh + test -f .env + grep -q "POSTGRES_PASSWORD=mina" .env diff --git a/website/docs/node-operators/example-output/build-info-example.txt b/website/docs/node-operators/example-output/build-info-example.txt new file mode 100644 index 000000000..933800295 --- /dev/null +++ b/website/docs/node-operators/example-output/build-info-example.txt @@ -0,0 +1,7 @@ +Version: 0341fff +Build time: 2025-09-10T18:11:40.953050700Z +Commit SHA: 0341fffedba4900371504ad4b30853674960a209 +Commit time: 2025-09-10T19:30:31.000000000+02:00 +Commit branch: release/v0.17.0 +Rustc channel: stable +Rustc version: 1.84.1 diff --git a/website/docs/node-operators/node-management.mdx b/website/docs/node-operators/node-management.mdx index f79a25dd4..e6676fc2d 100644 --- a/website/docs/node-operators/node-management.mdx +++ b/website/docs/node-operators/node-management.mdx @@ -11,6 +11,13 @@ import BuildInfoNative from "!!raw-loader!./scripts/build-info-native.sh"; import BuildInfoNativePath from "!!raw-loader!./scripts/build-info-native-path.sh"; import VerifyBuildInfoDocker from "!!raw-loader!./scripts/verify-build-info-docker.sh"; import VerifyBuildInfoNative from "!!raw-loader!./scripts/verify-build-info-native.sh"; +import BuildInfoExample from "!!raw-loader!./example-output/build-info-example.txt"; +import BackupConfiguration from "!!raw-loader!./scripts/backup-configuration.sh"; +import ManageFilePermissions from "!!raw-loader!./scripts/manage-file-permissions.sh"; +import CheckSystemResources from "!!raw-loader!./scripts/check-system-resources.sh"; +import CreateEmptyEnv from "!!raw-loader!./scripts/create-empty-env.sh"; +import CreateEnvCustom from "!!raw-loader!./scripts/create-env-custom.sh"; +import CreateEnvArchive from "!!raw-loader!./scripts/create-env-archive.sh"; # Node Management @@ -32,15 +39,9 @@ To check the build information of your Docker-based node: Example output: -``` -Version: 0341fff -Build time: 2025-09-10T18:11:40.953050700Z -Commit SHA: 0341fffedba4900371504ad4b30853674960a209 -Commit time: 2025-09-10T19:30:31.000000000+02:00 -Commit branch: release/v0.17.0 -Rustc channel: stable -Rustc version: 1.84.1 -``` + + {BuildInfoExample} + For a specific version: @@ -168,36 +169,25 @@ docker compose up -d --force-recreate Always backup your keys and configuration: -```bash -# Backup producer key (if running block producer) -cp -r mina-workdir/producer-key ~/mina-backup/ - -# Backup entire working directory -tar -czf mina-backup-$(date +%Y%m%d).tar.gz mina-workdir/ -``` + + {BackupConfiguration} + ### Managing File Permissions Docker containers often run as root, creating files owned by root on your host: -```bash -# Check file ownership -ls -la mina-workdir/ - -# Fix ownership for all files in mina-workdir -sudo chown -R $(id -u):$(id -g) mina-workdir/ - -# Set appropriate permissions for the producer key -chmod 600 mina-workdir/producer-key -``` + + {ManageFilePermissions} + :::tip Best Practice -Always fix file ownership after Docker operations to ensure your -local user can properly access, backup, and manage the files. This is especially -important for sensitive files like producer keys. +Always fix file ownership after Docker operations to ensure your local user can +properly access, backup, and manage the files. This is especially important for +sensitive files like producer keys. ::: @@ -224,32 +214,23 @@ environment variables: **For regular node and block producer:** -```bash -# Quick fix: Create an empty .env file (has defaults) -touch .env - -# Or create with custom settings -cat > .env << EOF -MINA_RUST_TAG=latest -MINA_FRONTEND_TAG=latest -MINA_LIBP2P_PORT=8302 -MINA_LIBP2P_EXTERNAL_IP= -MINA_PRIVKEY_PASS= -COINBASE_RECEIVER= -EOF -``` +Quick fix: Create an empty .env file (has defaults) + + + {CreateEmptyEnv} + + +Or create with custom settings: + + + {CreateEnvCustom} + **For archive node (required):** -```bash -# Archive node requires specific database settings -cat > .env << EOF -POSTGRES_PASSWORD=mina -PG_PORT=5432 -PG_DB=archive -MINA_RUST_TAG=latest -EOF -``` + + {CreateEnvArchive} + Regular node docker-compose files have default values, but the archive node docker-compose file requires the `.env` file with PostgreSQL configuration. @@ -266,11 +247,11 @@ docker-compose file requires the `.env` file with PostgreSQL configuration. ### Performance Issues 1. Check system resources: - ```bash - free -h - df -h - docker stats - ``` + + + {CheckSystemResources} + + 2. Review node logs for warnings 3. Consider adjusting Docker resource limits diff --git a/website/docs/node-operators/scripts/backup-configuration.sh b/website/docs/node-operators/scripts/backup-configuration.sh new file mode 100644 index 000000000..19712e177 --- /dev/null +++ b/website/docs/node-operators/scripts/backup-configuration.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Backup producer key (if running block producer) +cp -r mina-workdir/producer-key ~/mina-backup/ + +# Backup entire working directory +tar -czf "mina-backup-$(date +%Y%m%d).tar.gz" mina-workdir/ diff --git a/website/docs/node-operators/scripts/build-info-docker-version.sh b/website/docs/node-operators/scripts/build-info-docker-version.sh index b69d576f8..c6cddd290 100755 --- a/website/docs/node-operators/scripts/build-info-docker-version.sh +++ b/website/docs/node-operators/scripts/build-info-docker-version.sh @@ -1 +1,2 @@ +#!/bin/bash docker run --rm o1labs/mina-rust:v0.17.0 build-info diff --git a/website/docs/node-operators/scripts/build-info-docker.sh b/website/docs/node-operators/scripts/build-info-docker.sh index f66707f2a..c80a49f22 100755 --- a/website/docs/node-operators/scripts/build-info-docker.sh +++ b/website/docs/node-operators/scripts/build-info-docker.sh @@ -1 +1,2 @@ +#!/bin/bash docker run --rm o1labs/mina-rust:latest build-info diff --git a/website/docs/node-operators/scripts/build-info-native-path.sh b/website/docs/node-operators/scripts/build-info-native-path.sh index 8745d38e1..c0d8d9e20 100755 --- a/website/docs/node-operators/scripts/build-info-native-path.sh +++ b/website/docs/node-operators/scripts/build-info-native-path.sh @@ -1 +1,2 @@ +#!/bin/bash ./target/release/mina build-info diff --git a/website/docs/node-operators/scripts/build-info-native.sh b/website/docs/node-operators/scripts/build-info-native.sh index 511f5f991..20936722d 100755 --- a/website/docs/node-operators/scripts/build-info-native.sh +++ b/website/docs/node-operators/scripts/build-info-native.sh @@ -1 +1,2 @@ +#!/bin/bash mina build-info diff --git a/website/docs/node-operators/scripts/check-build-info-format.sh b/website/docs/node-operators/scripts/check-build-info-format.sh new file mode 100644 index 000000000..9c0d7bf27 --- /dev/null +++ b/website/docs/node-operators/scripts/check-build-info-format.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# Verify that build-info output format matches the documented example + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +EXAMPLE_FILE="$SCRIPT_DIR/../example-output/build-info-example.txt" + +# Get actual build-info output +echo "Getting build-info output..." +ACTUAL_OUTPUT=$(docker run --rm o1labs/mina-rust:latest build-info) + +# Extract field names from example file (everything before the colon) +echo "Checking that all expected fields are present..." +EXPECTED_FIELDS=( + "Version" + "Build time" + "Commit SHA" + "Commit time" + "Commit branch" + "Rustc channel" + "Rustc version" +) + +# Check that each expected field exists in the actual output +MISSING_FIELDS=() +for field in "${EXPECTED_FIELDS[@]}"; do + if ! echo "$ACTUAL_OUTPUT" | grep -q "^${field}:"; then + MISSING_FIELDS+=("$field") + fi +done + +if [ ${#MISSING_FIELDS[@]} -gt 0 ]; then + echo "ERROR: Missing fields in build-info output:" + printf ' - %s\n' "${MISSING_FIELDS[@]}" + echo "" + echo "Expected fields:" + printf ' - %s\n' "${EXPECTED_FIELDS[@]}" + echo "" + echo "Actual output:" + echo "$ACTUAL_OUTPUT" + exit 1 +fi + +# Verify field order matches the example +echo "Checking that field order matches the example..." +EXAMPLE_ORDER=$(grep -o '^[^:]*:' "$EXAMPLE_FILE") +ACTUAL_ORDER=$(echo "$ACTUAL_OUTPUT" | grep -o '^[^:]*:') + +if [ "$EXAMPLE_ORDER" != "$ACTUAL_ORDER" ]; then + echo "ERROR: Field order doesn't match the example" + echo "" + echo "Expected order:" + echo "$EXAMPLE_ORDER" + echo "" + echo "Actual order:" + echo "$ACTUAL_ORDER" + exit 1 +fi + +echo "✓ Build-info format matches the documented example" +echo "" +echo "Actual output:" +echo "$ACTUAL_OUTPUT" diff --git a/website/docs/node-operators/scripts/check-system-resources.sh b/website/docs/node-operators/scripts/check-system-resources.sh new file mode 100644 index 000000000..26ef207c6 --- /dev/null +++ b/website/docs/node-operators/scripts/check-system-resources.sh @@ -0,0 +1,8 @@ +#!/bin/bash +if command -v free &> /dev/null; then + free -h +else + vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+([^:]+)[^\d]+(\d+)/ and printf("%-16s % 16.2f Mi\n", "$1:", $2 * $size / 1048576);' +fi +df -h +docker stats diff --git a/website/docs/node-operators/scripts/create-empty-env.sh b/website/docs/node-operators/scripts/create-empty-env.sh new file mode 100644 index 000000000..7ae9caf30 --- /dev/null +++ b/website/docs/node-operators/scripts/create-empty-env.sh @@ -0,0 +1,2 @@ +#!/bin/bash +touch .env diff --git a/website/docs/node-operators/scripts/create-env-archive.sh b/website/docs/node-operators/scripts/create-env-archive.sh new file mode 100644 index 000000000..940295b10 --- /dev/null +++ b/website/docs/node-operators/scripts/create-env-archive.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cat > .env << EOF +POSTGRES_PASSWORD=mina +PG_PORT=5432 +PG_DB=archive +MINA_RUST_TAG=latest +EOF diff --git a/website/docs/node-operators/scripts/create-env-custom.sh b/website/docs/node-operators/scripts/create-env-custom.sh new file mode 100644 index 000000000..3cadf1e6d --- /dev/null +++ b/website/docs/node-operators/scripts/create-env-custom.sh @@ -0,0 +1,9 @@ +#!/bin/bash +cat > .env << EOF +MINA_RUST_TAG=latest +MINA_FRONTEND_TAG=latest +MINA_LIBP2P_PORT=8302 +MINA_LIBP2P_EXTERNAL_IP= +MINA_PRIVKEY_PASS= +COINBASE_RECEIVER= +EOF diff --git a/website/docs/node-operators/scripts/manage-file-permissions.sh b/website/docs/node-operators/scripts/manage-file-permissions.sh new file mode 100644 index 000000000..72e5758e1 --- /dev/null +++ b/website/docs/node-operators/scripts/manage-file-permissions.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Check file ownership +ls -la mina-workdir/ + +# Fix ownership for all files in mina-workdir +sudo chown -R "$(id -u)":"$(id -g)" mina-workdir/ + +# Set appropriate permissions for the producer key +chmod 600 mina-workdir/producer-key diff --git a/website/docs/node-operators/scripts/verify-build-info-docker.sh b/website/docs/node-operators/scripts/verify-build-info-docker.sh index a44bf7ddb..0e5fa0e4b 100755 --- a/website/docs/node-operators/scripts/verify-build-info-docker.sh +++ b/website/docs/node-operators/scripts/verify-build-info-docker.sh @@ -1 +1,2 @@ +#!/bin/bash docker run --rm o1labs/mina-rust:latest build-info | grep "Version\|branch" diff --git a/website/docs/node-operators/scripts/verify-build-info-native.sh b/website/docs/node-operators/scripts/verify-build-info-native.sh index cde5061b9..699acaf50 100755 --- a/website/docs/node-operators/scripts/verify-build-info-native.sh +++ b/website/docs/node-operators/scripts/verify-build-info-native.sh @@ -1 +1,2 @@ +#!/bin/bash mina build-info | grep "Version\|branch" From ba1fd92382cc196e57174f29d22b15a656e6d402 Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:26:32 +0200 Subject: [PATCH 5/9] CI: fix Colima startup failure on macOS runners The VZ (Virtualization.framework) driver was failing to start on GitHub Actions macOS runners with disk mounting errors. Switch to the QEMU driver which is more reliable in CI environments, with explicit resource limits to ensure consistent behavior. --- .github/workflows/test-docs-scripts-node-operators.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-docs-scripts-node-operators.yaml b/.github/workflows/test-docs-scripts-node-operators.yaml index 97c962fdc..eb90d49d9 100644 --- a/.github/workflows/test-docs-scripts-node-operators.yaml +++ b/.github/workflows/test-docs-scripts-node-operators.yaml @@ -25,7 +25,7 @@ jobs: run: | brew install docker brew install colima - colima start + colima start --driver qemu --cpu 2 --memory 4 - name: Test build-info-docker script run: | From c3ae61a67d75f40692df3a7517f19a394db2214c Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:30:19 +0200 Subject: [PATCH 6/9] CHANGELOG: add entry for patch 1511 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 118808c5a..941893066 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#1513](https://github.com/o1-labs/mina-rust/pull/1513)) - **scan_state**: refactorize `transaction_logic.rs` in smaller modules ([#1515](https://github.com/o1-labs/mina-rust/pull/1515)) +- **Website/CI**: run most commands from the page node management in CI after + moving them into scripts imported on the page + ([#1511](https://github.com/o1-labs/mina-rust/pull/1511)) ## v0.17.0 From ec4f3945299d78879cea8acf41299fe0dfc16252 Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:31:51 +0200 Subject: [PATCH 7/9] CI/node-management: remove macos-latest --- .../test-docs-scripts-node-operators.yaml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test-docs-scripts-node-operators.yaml b/.github/workflows/test-docs-scripts-node-operators.yaml index eb90d49d9..472deb148 100644 --- a/.github/workflows/test-docs-scripts-node-operators.yaml +++ b/.github/workflows/test-docs-scripts-node-operators.yaml @@ -14,19 +14,12 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04, macos-latest] + os: [ubuntu-22.04, ubuntu-24.04] steps: - name: Checkout repository uses: actions/checkout@v5 - - name: Install Docker on macOS - if: runner.os == 'macOS' - run: | - brew install docker - brew install colima - colima start --driver qemu --cpu 2 --memory 4 - - name: Test build-info-docker script run: | bash website/docs/node-operators/scripts/build-info-docker.sh @@ -48,18 +41,12 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04, macos-latest] + os: [ubuntu-22.04, ubuntu-24.04] steps: - name: Checkout repository uses: actions/checkout@v5 - - name: Install timeout on macOS - if: runner.os == 'macOS' - run: | - brew install coreutils - sudo ln -s /opt/homebrew/bin/gtimeout /usr/local/bin/timeout || sudo ln -s /usr/local/bin/gtimeout /usr/local/bin/timeout - - name: Create test environment run: | mkdir -p mina-workdir/producer-key From af4278b6e3d54f08c9c4a653ea76aed67fc428da Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Mon, 6 Oct 2025 19:33:49 +0200 Subject: [PATCH 8/9] CI: rename file to correspond to the page --- ...de-operators.yaml => test-docs-scripts-node-management.yaml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{test-docs-scripts-node-operators.yaml => test-docs-scripts-node-management.yaml} (99%) diff --git a/.github/workflows/test-docs-scripts-node-operators.yaml b/.github/workflows/test-docs-scripts-node-management.yaml similarity index 99% rename from .github/workflows/test-docs-scripts-node-operators.yaml rename to .github/workflows/test-docs-scripts-node-management.yaml index 472deb148..968c90b2b 100644 --- a/.github/workflows/test-docs-scripts-node-operators.yaml +++ b/.github/workflows/test-docs-scripts-node-management.yaml @@ -2,7 +2,7 @@ name: Test Documentation Scripts - Node Operators # Test node-operators documentation scripts to ensure they work correctly # These scripts demonstrate node management commands for users -# Run locally: gh act -W .github/workflows/test-docs-scripts-node-operators.yaml +# Run locally: gh act -W .github/workflows/test-docs-scripts-node-management.yaml on: push: branches: [main, develop] From d225320d29333be8cf5fb83cec63d6aa5d720d4b Mon Sep 17 00:00:00 2001 From: Danny Willems Date: Thu, 9 Oct 2025 16:03:40 +0200 Subject: [PATCH 9/9] CI/node-management: update to support macos --- .../test-docs-scripts-node-management.yaml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-docs-scripts-node-management.yaml b/.github/workflows/test-docs-scripts-node-management.yaml index 968c90b2b..cf8ad3147 100644 --- a/.github/workflows/test-docs-scripts-node-management.yaml +++ b/.github/workflows/test-docs-scripts-node-management.yaml @@ -14,12 +14,20 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04] + os: [ubuntu-22.04, ubuntu-24.04, macos-latest] steps: - name: Checkout repository uses: actions/checkout@v5 + - name: Install Docker on macOS + if: runner.os == 'macOS' + run: | + brew install docker + brew install colima + colima delete + colima start + - name: Test build-info-docker script run: | bash website/docs/node-operators/scripts/build-info-docker.sh @@ -41,12 +49,18 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04] + os: [ubuntu-22.04, ubuntu-24.04, macos-latest] steps: - name: Checkout repository uses: actions/checkout@v5 + - name: Install timeout on macOS + if: runner.os == 'macOS' + run: | + brew install coreutils + sudo ln -s /opt/homebrew/bin/gtimeout /usr/local/bin/timeout || sudo ln -s /usr/local/bin/gtimeout /usr/local/bin/timeout + - name: Create test environment run: | mkdir -p mina-workdir/producer-key