Skip to content
Merged
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
99 changes: 99 additions & 0 deletions content/p2p/ift/2026q4-nimlibp2p-nimbus-downstream-ci.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---

title: Nimbus Testnet Deployment
tags:
- "2026q4"
- "p2p"
- "ift"
draft: false
description: Automate the deployment of a nim-libp2p change to Nimbus testnet nodes, with the start time and duration set by the p2p team

---

`ift-ts:p2p:ift:2026q4-nimlibp2p-nimbus-downstream-ci`

## Description

Today a deployment of a nim-libp2p change to a testnet node is manual.
The automation builds Nimbus with the nim-libp2p commit, deploys it to testnet nodes, collects metrics, restores the nodes, and reports the result.
The p2p team operates the levers of each run.

The workflow deploys any nim-libp2p commit.
A pull request with the `test-nimbus` label gets a build for each new commit.
A team member can also start a run on a standalone commit, e.g. a master commit or a commit on a branch with no pull request.

## Task List

### Nimbus Build For A nim-libp2p Commit

* fully qualified name: `ift-ts:p2p:ift:2026q4-nimlibp2p-nimbus-downstream-ci:build`
* owner: not assigned yet
* status: not started
* start-date: 2026/10/01
* end-date: 2026/12/31

#### Description

Each nim-libp2p commit to test gets its own nimbus-eth2 branch.
A pull request with the `test-nimbus` label uses `nim-libp2p-test-pr-<number>`, and a standalone commit uses `nim-libp2p-test-<short-hash>`.
Set `vendor/nim-libp2p` to the commit.
Read the dependency pins in `libp2p.nimble` and move each matching nimbus-eth2 `vendor/` submodule to that pin, because nimbus-eth2 ignores `libp2p.nimble`.
Build the beacon node from this branch.
Delete a pull request branch when the pull request closes or the `test-nimbus` label is removed.
Delete a standalone commit branch when its run ends.

#### Deliverables

- A beacon node binary for each pull request with the `test-nimbus` label
- A beacon node binary on request for any standalone commit
- Builds for different commits that run in parallel, with no change to `DEPENDENCIES_AUTOBUMP_ENABLED`
- Branch cleanup on pull request close and at the end of a standalone run


### Testnet Deployment Automation

* fully qualified name: `ift-ts:p2p:ift:2026q4-nimlibp2p-nimbus-downstream-ci:deployment`
* owner: not assigned yet
* status: not started
* start-date: 2026/10/01
* end-date: 2026/12/31

#### Description

Add a workflow that deploys the beacon node binary of a nim-libp2p commit to testnet nodes.
The workflow takes a commit hash or a pull request number, the start time, and the duration as inputs.
The workflow resolves a pull request number to the head commit of the pull request.
A commit hash needs no pull request and no label.
At the end of the desired duration, the workflow restores the previous binary on each node.
A lock on each node stops two runs from using the same node.
The team can stop a run before its end, and the workflow then restores the nodes at once.

#### Deliverables

- A deployment workflow with commit or pull request, start time, and duration inputs
- Automatic restore of the nodes at the end of a run or on stop
- A node lock that prevents overlapping runs
- Contributor documentation for how to start, schedule, and stop a run


### Metrics And Reporting

* fully qualified name: `ift-ts:p2p:ift:2026q4-nimlibp2p-nimbus-downstream-ci:reporting`
* owner: not assigned yet
* status: not started
* start-date: 2026/10/01
* end-date: 2026/12/31

#### Description

Run a baseline node on nim-libp2p master next to the deployed nodes.
Collect the libp2p and beacon node metrics from the deployed nodes and the baseline for the duration of the run.
Compare peer count, connection churn, gossipsub message delivery, block and attestation arrival delay, sync status, CPU, and memory.
Post the comparison on the pull request, with links to the node logs and dashboards.
For a standalone commit, write the comparison to the workflow run summary.

#### Deliverables

- A baseline node on nim-libp2p master
- A metrics comparison between the deployed nodes and the baseline for each run
- A run report on the pull request, or in the workflow run summary for a standalone commit, with logs and dashboards
1 change: 1 addition & 0 deletions content/p2p/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ Major future work items on nim-libp2p (also beyond this reporting period are cap
* [[p2p/ift/2026q4-nimlibp2p-kademlia-provider-storage|nimlibp2p-kademlia-provider-storage]]
* [[p2p/ift/2026q4-nimlibp2p-maintenance|nimlibp2p-maintenance]]
* [[p2p/ift/2026q4-nimlibp2p-mdns|nimlibp2p-mdns]]
* [[p2p/ift/2026q4-nimlibp2p-nimbus-downstream-ci|nimlibp2p-nimbus-downstream-ci]]
* [[p2p/ift/2026q4-nimlibp2p-quic-datagrams|nimlibp2p-quic-datagrams]]
* [[p2p/ift/2026q4-nimlibp2p-quic-ech|nimlibp2p-quic-ech]]
* [[p2p/ift/2026q4-nimlibp2p-reachability-relay-lifecycle|nimlibp2p-reachability-relay-lifecycle]]
Expand Down
Loading