Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2428 distribution #1810

Closed
42 tasks done
jpraynaud opened this issue Jul 9, 2024 · 1 comment
Closed
42 tasks done

Release 2428 distribution #1810

jpraynaud opened this issue Jul 9, 2024 · 1 comment
Assignees
Labels

Comments

@jpraynaud
Copy link
Member

jpraynaud commented Jul 9, 2024

Why

In order to deploy new features, improvements and bug fixes, we need to release a new distribution.

What

Create and release a new distribution 2428

How

Phase 1: Prepare distribution

  • Upgrade repository dependencies
  • Check that all minor versions of all crates have been bumped for breaking change (if needed)
  • Check if versions of repository linked crates are correct for publication to crates.io(mithril-common, mithril-client)
  • Check if Cardano minimum supported versions in networks.json must be updated following the runbook
  • Merge a PR for rotating the CHANGELOG.md (set the distribution version)
  • Create a draft PR for rotating the documentation
  • Warmup Cardano node 9.0.0 on pre-release-preview
  • Warmup Cardano node 9.0.0 on release-preprod
  • Warmup Cardano node 9.0.0 on release-mainnet

Phase 2: Rollout pre-release distribution

  • Tag and deploy a 2428.0-pre pre-release distribution on the pre-release-preview network
  • Fill 'Highlights' and release notes section in the pre-release page on GitHub
  • Switch Cardano database with warmed-up node in pre-release-preview
  • Make sure pre-release-preview is working as expected
  • Make sure libraries version next have been published on npm registry
  • Run an all green client multi-platform test in the CI
  • Run an all green aggregator stress test in the CI
  • Run a Cardano transaction prover benchmark:
    • Store results in the issue
    • Make sure that there is no performance drop since last release
  • Announce the pre-release on discord channel
  • Announce any breaking change in #cardano-scaling slack channel for pre-release
  • Announce any breaking change in #mithril-lace slack channel for pre-release
  • Wait for at least 3 signers running the new version (could be more if era change is tested) over at least 2 epochs

Phase 3: Rollout release distribution

  • Tag and deploy a 2428.0 release distribution on the pre-release-preview network
  • Fill highlights and release notes section in the release page on GitHub
  • Make sure pre-release-preview is working as expected
  • Update networks compatibility table in release notes
  • Release the 2428.0 distribution
  • Switch Cardano database with warmed-up node in release-mainnet
  • Make sure release-mainnet is working as expected
  • Switch Cardano database with warmed-up node in release-preprod
  • Make sure release-preprod is working as expected
  • Make sure libraries have been published on crates.io
  • Make sure libraries version latest have been published on npm registry
  • Merge the PR for rotating the documentation
  • Merge a PR for rotating the CHANGELOG.md (release date of the distribution)
  • Announce the release on discord channel (with breaking-change)
  • Announce any breaking/new feature change in:
    • #cardano-scaling slack channel for release
    • #mithril-lace slack channel for release
    • Dev blog post:
      • TBD
@jpraynaud jpraynaud added the release 📦 Release label Jul 9, 2024
@jpraynaud
Copy link
Member Author

jpraynaud commented Jul 9, 2024

Here is the process to warm up the nodes and switch of the database:

# Select the Mithril network
## Connect to pre-release-preview
export NETWORK=preview
export AGGREGATOR_ENDPOINT=https://aggregator.pre-release-preview.api.mithril.network/aggregator
export GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey)

### release-preprod
export NETWORK=preprod
export AGGREGATOR_ENDPOINT=https://aggregator.release-preprod.api.mithril.network/aggregator
export GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey)

### release-mainnet 
export NETWORK=mainnet
export AGGREGATOR_ENDPOINT=https://aggregator.release-mainnet.api.mithril.network/aggregator
export GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-mainnet/genesis.vkey)

# Phase 1: Warmup a temporary Cardano node from a Mithril snapshot
## Create temp dir
rm -rf /home/curry/data/temp
mkdir -p /home/curry/data/temp
cd /home/curry/data/temp

## Download Mithril client
wget https://github.com/input-output-hk/mithril/releases/download/2423.0/mithril-2423.0-linux-x64.tar.gz
tar xzf mithril-2423.0-linux-x64.tar.gz mithril-client
chmod u+x mithril-client
./mithril-client --version

## Download latest snapshot
./mithril-client cardano-db download latest

## Restore the Cardano node
docker run -d --name cardano-node-warmup -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/curry/data/temp/db",target=/data/db/ -e NETWORK=${NETWORK} ghcr.io/intersectmbo/cardano-node:9.0.0
docker logs -f --tail 100 cardano-node-warmup

# Phase 2: Switch Cardano database from the main node with the warmed-up one
## Copy Cardano database to aggregator
docker stop cardano-node-warmup
docker stop cardano-node-aggregator
mv /home/curry/data/$NETWORK/mithril-aggregator/cardano/db /home/curry/data/$NETWORK/mithril-aggregator/cardano/db.bak
mv /home/curry/data/temp/db /home/curry/data/$NETWORK/mithril-aggregator/cardano/db
sudo chown -R curry /home/curry/data/$NETWORK/mithril-aggregator/cardano/db
sudo chgrp -R curry /home/curry/data/$NETWORK/mithril-aggregator/cardano/db
docker start cardano-node-aggregator
docker logs -f --tail 100 cardano-node-aggregator

## Cleanup directory (when node is back up)
docker rm cardano-node-warmup
rm -rf /home/curry/data/$NETWORK/mithril-aggregator/cardano/db.bak
cd /home/curry/
rm -rf /home/curry/data/temp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants