Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 17 additions & 1 deletion .github/actions/regtest/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ inputs:
package_version:
description: "Version of packages to build/install"
required: false
default: '0.0.3-1'
default: '0.0.4-1'

runs:
using: composite
Expand Down Expand Up @@ -159,6 +159,22 @@ runs:
sudo apt install -y nodejs
shell: bash

- name: Install smithy
id: install-smithy
run: |
git clone https://github.com/eth-pkg/smithy.git
cd smithy

npm run install
npm run build

chmod +x ${HOME}/smithy/bin/smithy

echo "${HOME}/smithy/bin" >> $GITHUB_PATH
echo "PATH=$PATH:${HOME}/smithy/dist" >> $GITHUB_ENV

shell: bash

# caches packages not to hit the repository in each CI run
- name: Cache apt packages
id: cache-packages
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/regtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@ on:
push:
branches:
- feat/non-existant
# - fix/genesis-pectra-changes
- beta/eth-nodes-regtest

jobs:
test:
name: regtest
runs-on: ubuntu-24.04
strategy:
matrix:
el_name: [besu, geth, nethermind, erigon, reth]
cl_name: [lighthouse, lodestar, nimbus-eth2, prysm, teku]
validator_name: [lighthouse, lodestar, nimbus-eth2, prysm, teku]
# el_name: [besu, geth, nethermind, erigon, reth]
el_name: [besu]
# cl_name: [lighthouse, lodestar, nimbus-eth2, prysm, teku]
cl_name: [lighthouse]
# validator_name: [lighthouse, lodestar, nimbus-eth2, prysm, teku]
validator_name: [lighthouse]
exclude:
- cl_name: lighthouse
validator_name: prysm
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name = "eth-node-regtest-full"
architecture = "all"
summary = "regtest network for eth-nodes"
conflicts = ["eth-node-regtest"]
recommends = []
provides = ["eth-node", "eth-node-regtest"]
suggests = []
## There will be two packages, with all deps
## and with no deps
depends = [
"eth-node-besu",
"eth-node-erigon",
"eth-node-geth",
"eth-node-lighthouse",
"eth-node-lodestar",
"eth-node-nethermind",
"eth-node-nimbus-eth2",
"eth-node-prysm",
"eth-node-reth",
"eth-node-teku",
"ethereum-genesis-generator (>=4.0.3-4)",
"ntp"
]
add_files = []
add_links = []
add_manpages = []
long_doc = """eth-node-regtest
Package that install two random Ethereum consensus and execution client and
starts them running.
This package comes without validator. If you would like to have validator running
please install eth-node-regtest-with-validator instead.
This package contains all clients (el + cl) as hard dependency due to debian dependency
limitation doesn't allow to select interchangeable packages as dependency.
"""
add_files = [
## package itself
"debian/regtest /var/lib/eth-node-regtest",
"debian/conf /etc/eth-node-regtest",
## config
"debian/regtest/regtest /var/lib/eth-node-regtest/regtest",
"debian/regtest/config /etc/eth-node-regtest/regtest/",
"debian/regtest/defaults /etc/eth-node-regtest/regtest/",
## besu (execution client)
"debian/clients/besu/scripts/* /usr/lib/eth-node-regtest/besu",
"debian/clients/besu/eth-node-besu-regtest.service /lib/systemd/system/",
## erigon (execution client)
"debian/clients/erigon/scripts/* /usr/lib/eth-node-regtest/erigon",
"debian/clients/erigon/eth-node-erigon-regtest.service /lib/systemd/system/",
## geth (execution client)
"debian/clients/geth/scripts/* /usr/lib/eth-node-regtest/geth",
"debian/clients/geth/eth-node-geth-regtest.service /lib/systemd/system/",
## nethermind (execution client)
"debian/clients/nethermind/scripts/* /usr/lib/eth-node-regtest/nethermind",
"debian/clients/nethermind/eth-node-nethermind-regtest.service /lib/systemd/system/",
## reth (execution client)
"debian/clients/reth/scripts/* /usr/lib/eth-node-regtest/reth",
"debian/clients/reth/eth-node-reth-regtest.service /lib/systemd/system/",
## lighthouse (consensus client)
"debian/clients/lighthouse/scripts/* /usr/lib/eth-node-regtest/lighthouse",
"debian/clients/lighthouse/eth-node-lighthouse-regtest.service /lib/systemd/system/",
## lighthouse validator
"debian/clients/lighthouse-validator/scripts/* /usr/lib/eth-node-regtest/lighthouse-validator",
"debian/clients/lighthouse-validator/eth-node-lighthouse-validator-regtest.service /lib/systemd/system/",
"debian/clients/lighthouse-validator/validator/* /var/lib/eth-node-regtest/lighthouse-validator",
## lodestar (consensus client)
"debian/clients/lodestar/scripts/* /usr/lib/eth-node-regtest/lodestar",
"debian/clients/lodestar/eth-node-lodestar-regtest.service /lib/systemd/system/",
## lodestar validator
"debian/clients/lodestar-validator/scripts/* /usr/lib/eth-node-regtest/lodestar-validator",
"debian/clients/lodestar-validator/eth-node-lodestar-validator-regtest.service /lib/systemd/system/",
"debian/clients/lodestar-validator/validator/* /var/lib/eth-node-regtest/lodestar-validator",
## nimbus-eth2 (consensus client)
"debian/clients/nimbus-eth2/scripts/* /usr/lib/eth-node-regtest/nimbus-eth2",
"debian/clients/nimbus-eth2/eth-node-nimbus-eth2-regtest.service /lib/systemd/system/",
## nimbus-eth2 validator
"debian/clients/nimbus-eth2-validator/scripts/* /usr/lib/eth-node-regtest/nimbus-eth2-validator",
"debian/clients/nimbus-eth2-validator/eth-node-nimbus-eth2-validator-regtest.service /lib/systemd/system/",
"debian/clients/nimbus-eth2-validator/validator/* /var/lib/eth-node-regtest/nimbus-eth2-validator",
## prysm (consensus client)
"debian/clients/prysm/scripts/* /usr/lib/eth-node-regtest/prysm",
"debian/clients/prysm/eth-node-prysm-regtest.service /lib/systemd/system/",
## prysm validator
"debian/clients/prysm-validator/scripts/* /usr/lib/eth-node-regtest/prysm-validator",
"debian/clients/prysm-validator/eth-node-prysm-validator-regtest.service /lib/systemd/system/",
"debian/clients/prysm-validator/validator/* /var/lib/eth-node-regtest/prysm-validator",
## teku (consensus client)
"debian/clients/teku/scripts/* /usr/lib/eth-node-regtest/teku",
"debian/clients/teku/eth-node-teku-regtest.service /lib/systemd/system/",
## teku validator
"debian/clients/teku-validator/scripts/* /usr/lib/eth-node-regtest/teku-validator",
"debian/clients/teku-validator/eth-node-teku-validator-regtest.service /lib/systemd/system/",
"debian/clients/teku-validator/validator/* /var/lib/eth-node-regtest/teku-validator",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
eth-node-regtest (0.0.4-1) noble; urgency=medium

* add smithy

-- Eniko Nagy <mail+ethnodes@eenagy.com> Fri, 13 May 2025 08:32:29 +0100

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name = "eth-node-regtest"
maintainer = "Eniko Nagy <mail+ethnodes@eenagy.com>"
section = "net"
variants = []
build_depends = []
# TODO list all other packages in regtest dir
packages = ["eth-node-regtest-full"]
skip_debug_symbols = true
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[verify]
package_hash = [
# debian timestamps are again broken, this is a debian bug
# { hash="07dee9a67a9204bfe45ee9f67c2f7c5fefe4769b", name= "eth-node-regtest_1.0.0-1.dsc"},
{ hash = "b35f46d5fb424aee57b5d666e61b2eff83543aad", name = "eth-node-regtest_0.0.4.orig.tar.gz" },
# { hash="6333d13341a88585cc4e7c4542241f2775bcc54e", name= "eth-node-regtest_1.0.0-1.debian.tar.xz"},
{ hash = "a5e3d60499306d1bb6e3ea320aab19f5fcd4f657", name = "eth-node-regtest-full_0.0.4-1_all.deb" },
]
24 changes: 24 additions & 0 deletions upcoming/noble/all/eth-node-regtest/0.0.4-1/pkg-builder.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[package_fields]
spec_file = "eth-node-regtest.sss"
package_name = "eth-node-regtest"
version_number = "0.0.4"
revision_number = "1"
homepage = "https://github.com/eth-pkg/eth-nodes"

[package_type]
package_type = "virtual"

[build_env]
codename = "noble numbat"
arch = "amd64"
pkg_builder_version = "0.2.11"
debcrafter_version = "8189263"
run_lintian = true
run_piuparts = true
run_autopkgtest = false
lintian_version = "2.116.3"
piuparts_version = "1.1.7"
autopkgtest_version = "5.28"
sbuild_version = "0.85.6"
# package directory
workdir = "~/.pkg-builder/packages/noble"
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
[Unit]
Description=service file for eth-node-besu for network: regtest
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/lib/eth-node-regtest/besu/run-besu-service.sh $DEBCRAFTER_EXTRA_SERVICE_ARGS
User=eth-node-besu-regtest
Group=eth-node-besu-regtest
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
RuntimeDirectory=eth-node-besu-regtest
RuntimeDirectoryMode=750
# no need to specify, these come from debcrafter
# User=eth-node-besu-regtest
# NoNewPrivileges=true
# ProtectHome=true
# PrivateTmp=true
# PrivateDevices=true

# additional flags not specified by debcrafter
CapabilityBoundingSet=
IPAddressDeny=none
LockPersonality=true
PrivateIPC=true
PrivateUsers=true
ProtectClock=true
ProtectControlGroups=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ReadWritePaths=/var/lib/eth-node-regtest/besu
ReadOnlyPaths=/var/lib/eth-node-regtest
RemoveIPC=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK

RestrictNamespaces=true
RestrictRealtime=true
RestrictSUIDSGID=true
SystemCallArchitectures=native
SystemCallFilter=@system-service
UMask=0077
WorkingDirectory=/var/lib/eth-node-regtest/besu


[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Properties>
<Property name="root.log.level">INFO</Property>
<!-- Define log file name and location -->
<Property name="logPath">/var/logs/eth-node-regtest/besu/besu.log</Property>
</Properties>

<Appenders>
<!-- Console appender -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSSZZZ} | %t | %-5level | %c{1} | %msg %throwable{short.message}%n" />
</Console>

<!-- File appender for logging to a file -->
<File name="File" fileName="${logPath}">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSSZZZ} | %t | %-5level | %c{1} | %msg %throwable{short.message}%n" />
</File>
</Appenders>

<Loggers>
<Root level="${sys:root.log.level}">
<!-- Log to both console and file -->
<AppenderRef ref="Console" />
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

CLIENT="besu"

exec /usr/lib/eth-node-regtest/${CLIENT}/run-${CLIENT}.sh \
--conf-file /etc/eth-node-regtest/conf/eth-node-regtest.conf \
--conf-file /etc/eth-node-regtest/conf/eth-node-${CLIENT}-regtest.conf
Loading
Loading