From 29d2c0fdac255c5fa9ce5064327779a9159be17d Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo.trentesaux@lilo.org>
Date: Mon, 13 Mar 2023 18:46:17 +0100
Subject: [PATCH] document bootstrap process (nodes/rust/duniter-v2s!114)

* wip smooth

* wip tmp

* wip review

* wip document bootstrap process
---
 docs/dev/img/pipeline_screenshot.png | Bin 0 -> 27237 bytes
 docs/dev/launch-a-live-network.md    |  75 +++++++++++++++++++++------
 docs/dev/release-new-runtime.md      |  41 +++++++++++++++
 3 files changed, 100 insertions(+), 16 deletions(-)
 create mode 100644 docs/dev/img/pipeline_screenshot.png
 create mode 100644 docs/dev/release-new-runtime.md

diff --git a/docs/dev/img/pipeline_screenshot.png b/docs/dev/img/pipeline_screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c2870de4baa32f9f9f0a5a18bb280c7be926366
GIT binary patch
literal 27237
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

literal 0
HcmV?d00001

diff --git a/docs/dev/launch-a-live-network.md b/docs/dev/launch-a-live-network.md
index 833edeb3d..cc87050d8 100644
--- a/docs/dev/launch-a-live-network.md
+++ b/docs/dev/launch-a-live-network.md
@@ -1,22 +1,43 @@
 # How to launch a live network
 
-## 1. Choose the currency type
+Launching a new live network is more difficult than spawning a local blockchain. Follow this process if you know what you are doing and you already experimented a bit with local blockchains. Part of this process is automated with Rust scripts, including interaction with GitLab's GraphQL API. Do not hesitate to improve and complete it (see TODOs inside `xtask/**/*.rs` files).
 
-Ensure that the currency type you want has the requirements.
+## Requirements
+
+In order to build in a standardized environment, you need Docker. 
+
+- see docker docs to [install docker](https://docs.docker.com/engine/install/)
+- make sure you can run docker as non-root user with `docker info` or so
+
+## Preparation
+
+When launching a new network, you're likely to use a new runtime. See how to [release a new runtime](./release-new-runtime.md).
+
+### Inject runtime in chainspec
+
+ÄžDev runtime is automatically embeded in the raw chainspec with the `include_bytes!` macro. An other way to inject the runtime is to use "inject-runtime-code" xtask:
+
+```bash
+cargo xtask inject-runtime-code --runtime runtime/gdev/target/srtool/release/wbuild/gdev-runtime/gdev_runtime.compact.compressed.wasm --raw-spec resources/gdev-raw.json 
+```
+
+## Bootstraping
+
+### Choose the currency type
 
 For now, only `gdev` is supported.
 
 In the commands that will be indicated afterwards, you will have to replace `CURRENCY` by the
 currency type you have chosen.
 
-## 2. Choose the docker image
+### Choose the docker image
 
-Choose or build the docker image that contains the version of the code thut you want to use.
+Choose the docker image that contains the version of the code that you want to use.
 
 In the commands that will be indicated afterwards, you will have to replace `TAG` by the tag of the
-docker image that you have chosen.
+docker image that you have chosen (example : runtime-400).
 
-## 3. Generate the session keys of genesis authority
+### Generate the session keys of genesis authority
 
 Generate a random secret phrase:
 
@@ -39,11 +60,11 @@ $ docker run --rm duniter/duniter-v2s:TAG -- key generate-session-keys --chain C
 Session Keys: 0x87189d723e1b2826c243bc433c718ac26ba60526932216a09102a254d54462b890a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d6290a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d6290a0c2866034db9d05f8193a95fe5af8d5e12ab295a501c17c95cdbeaf226d62
 ```
 
-## 4. Paste sessions keys in the genesis configuration file
+### Paste sessions keys in the genesis configuration file
 
-An example of genesis configuration file: `resources/gdev.json`
+An example of genesis configuration file: `resources/gdev.json`. Paste your session keys in your `smith` identity with key `session_keys`.
 
-## 5. Generate raw spec
+### Generate raw spec
 
 ```docker
 docker run -v $HOME/dev/duniter-v2s/resources:/var/lib/duniter/resources -e DUNITER_GENESIS_CONFIG=/var/lib/duniter/resources/gdev.json --rm duniter/duniter-v2s:TAG -- build-spec -lerror --chain=gdev-gl --raw > name-raw.json
@@ -53,24 +74,46 @@ docker run -v $HOME/dev/duniter-v2s/resources:/var/lib/duniter/resources -e DUNI
 ./scripts/gen-live-network-raw-spec.sh CURRENCY "<path/to/your/genesis/config/file>"
 ```
 
-## 6. Generate the docker compose and prepare nodes keys
+This builds the specs using debug version of Duniter.
+
+### Generate the docker compose and prepare nodes keys
 
 ```bash
 ./scripts/create-live-network.sh "<your secret phrase>" CURRENCY "<path/to/dist/folder>"
 ```
 
-The distribution folder can then be copied to a server, then the compose must be launched from the
-root of the distribution folder:
+The new distribution folder can be copied to a server
 
 ```bash
-scp -r -P SSH_PORT "<path/to/dist/folder>" user@ip:/remote/dist/path
-cd "<path/to/dist/folder>"
-docker compose up -d
+scp -r "<path/to/dist/folder>" <server>:/remote/dist/path
 ```
 
-Then, on the server:
+then on the server, launch the compose file from the the distribution folder's root:
 
 ```bash
+ssh <server>
 cd "<path/to/dist/folder>"
 docker compose up -d
 ```
+
+This is the first node of the new live network.
+
+## Finalization
+
+The following steps should be completed once you are satisfied with the new live network.
+
+### Rotate session keys
+
+You should rotate session keys for more secured keys produced on the server (the one you used before are still in your develop machine bash history and clipboard).
+
+### Publish image
+
+With these new session keys in the chainspec and the runtime build with srtool, you can release the new runtime again with: 
+
+```bash
+cargo xtask release-runtime 400
+```
+
+### Tell the other smith
+
+Once you completed all these steps, the other smith can pull the docker image with a genesis containing your bootnode with the correct session keys. They can base their `docker-compose.yml` on the `duniter-validator` template.
diff --git a/docs/dev/release-new-runtime.md b/docs/dev/release-new-runtime.md
new file mode 100644
index 000000000..43920e1c5
--- /dev/null
+++ b/docs/dev/release-new-runtime.md
@@ -0,0 +1,41 @@
+# Release a new runtime
+
+Here you will learn how to release a new runtime using `gitlab ci` and `cargo xtask`.
+
+## Runtime tag and spec version
+
+Our runtime tags use `xxyy` version numbers where `x` corresponds to major change and `y` hotfix.
+
+1. Make sure to move any issue or merge request assigned to the choosen milestone `runtime-xxyy` to the next one. This prevents from forgetting unfinished work.
+1. Check that the [CI on release/runtime-XX00](https://git.duniter.org/nodes/rust/duniter-v2s/-/pipelines?scope=all&page=1&ref=runtime-400) (runtime major release branch) is passing. This is necessary to build the docker images.
+1. Increment the `spec_version` in the code. Example `spec_version: 300` -> `spec_version: 400`.
+
+Publish the `runtime-400` branch. Go to the pipelines and run the manual tasks as shown on the screenshot below.
+
+- `build_release_manual`
+- `deploy_docker_release_sha`
+
+![pipeline screenshot](./img/pipeline_screenshot.png)
+
+## Release runtime
+
+We choose [`xtask`](https://github.com/matklad/cargo-xtask/) to run Rust scripts using `cargo`. To build these scripts, just run:
+
+```bash
+cargo xtask -h # this will build the scripts and show the available commands
+```
+
+To interact with GitLab, the `release_runtime` script uses the environment variable `GITLAB_TOKEN` which must contain a token with write permission on the repository. Go to your [personal access token preferences](https://git.duniter.org/-/profile/personal_access_tokens) to generate one and `export` it (you might want to add it to your `.bashrc`). You can then run this command:
+
+```bash
+cargo xtask release-runtime 400 # requires to run docker as non-root user
+```
+
+This command does the following things (use your system monitor to track the progress as it produces not log):
+
+1. Download the [`paritytech/srtool`](https://docs.substrate.io/reference/command-line-tools/srtool/) (Substrate Runtime TOOLbox) docker image (about 2 minutes with a good connection). It is a docker container enabling to build the Substrate WebAssembly runtime in a deterministic way (machine-independant).
+1. Build gdev runtime in release mode using `srtool` (about 5 minutes depending on your computing power). The target is put in the `runtime/gdev/target` folder (about 2GB).
+1. Generate release notes using the template in `xtask/res`
+1. Publish the release with the notes on GitLab using your `GITLAB_TOKEN`
+
+This release will trigger a GitLab CI publishing a docker image of the Substrate client with embeded runtime. 
\ No newline at end of file
-- 
GitLab