Skip to content

Commit

Permalink
Add docker based E2E step in release pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
Github Action committed Jul 1, 2024
1 parent 1b34245 commit 2cf5231
Show file tree
Hide file tree
Showing 5 changed files with 136 additions and 18 deletions.
17 changes: 15 additions & 2 deletions .buildkite/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ steps:
agents:
system: x86_64-linux

- group: "Docker E2E"
- group: "Docker"
key: "docker-e2e"
steps:
- block: 'Docker build and test'
Expand All @@ -64,7 +64,7 @@ steps:
agents:
system: x86_64-linux

- label: 'Smoke test docker-compose'
- label: 'Smoke test of docker-compose'
depends_on:
- build-docker
timeout_in_minutes: 2
Expand All @@ -76,3 +76,16 @@ steps:
NODE_STATE_DIR: "${STATE_DIR?}/node/preprod"
agents:
system: x86_64-linux

- label: 'Run docker e2e suite'
depends_on:
- build-docker
timeout_in_minutes: 180
commands:
- ./scripts/buildkite/release/docker-e2e.sh
artifact_paths:
- "./logs/*"
env:
NODE_STATE_DIR: "${STATE_DIR?}/node/preprod"
agents:
system: x86_64-linux
35 changes: 22 additions & 13 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
version: "3.5"


services:
cardano-node:
container_name: cardano-node-on-${WALLET_PORT:-8090}
image: cardanofoundation/cardano-wallet:${WALLET_TAG}
environment:
NETWORK:
CARDANO_NODE_SOCKET_PATH: /ipc/${NODE_SOCKET_NAME}
CARDANO_NODE_SOCKET_PATH: /ipc/${NODE_SOCKET_NAME:-node.socket}
NETWORK: ${NETWORK:-preprod}
volumes:
- ${NODE_DB}:/data
- ${NODE_SOCKET_DIR}:/ipc
Expand All @@ -22,10 +23,12 @@ services:
command: >
cardano-node run --topology /configs/${NETWORK}/topology.json
--database-path /data
--socket-path /ipc/node.socket
--socket-path ${CARDANO_NODE_SOCKET_PATH}
--config /configs/${NETWORK}/config.json
+RTS -N3
cardano-wallet:
container_name: cardano-wallet-on-${WALLET_PORT}
image: cardanofoundation/cardano-wallet:${WALLET_TAG}
volumes:
- ${WALLET_DB}:/wallet-db
Expand All @@ -34,13 +37,19 @@ services:
ports:
- ${WALLET_PORT}:8090
entrypoint: []
command: bash -c "
([[ $$NETWORK == \"mainnet\" ]] && $$CMD --mainnet) ||
($$CMD --testnet /configs/${NETWORK}/byron-genesis.json)
"
command: |
NETWORK_OPTION=$([[ $$NETWORK == \"mainnet\" ]] && echo --mainnet \
|| echo --testnet /configs/${NETWORK}/byron-genesis.json)
cardano-wallet serve \
--node-socket ${CARDANO_NODE_SOCKET_PATH} \
--database /wallet-db \
--listen-address 0.0.0.0 \
$$NETWORK_OPTION \
+RTS -N3
environment:
CMD: "cardano-wallet serve --node-socket /ipc/${NODE_SOCKET_NAME} --database /wallet-db --listen-address 0.0.0.0"
NETWORK:
WALLET_PORT: ${WALLET_PORT:-8090}
CARDANO_NODE_SOCKET_PATH: /ipc/${NODE_SOCKET_NAME:-node.socket}
NETWORK: ${NETWORK:-preprod}
user: ${USER_ID}
restart: on-failure
logging:
Expand All @@ -51,8 +60,8 @@ services:
max-size: "50m"
icarus:
image: piotrstachyra/icarus:v2023-04-14
container_name: icarus-on-${WALLET_PORT}
network_mode: "host"
restart: on-failure

volumes:
node-ipc:
environment:
WALLET_PORT: ${WALLET_PORT:-8090}
82 changes: 82 additions & 0 deletions scripts/buildkite/release/docker-e2e.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#! /usr/bin/env -S nix shell 'nixpkgs#docker-compose' 'nixpkgs#rsync' 'nixpkgs#jq' --command bash
# shellcheck shell=bash

set -euox pipefail


NETWORK=preprod
export NETWORK

TESTS_NODE_DB="$(pwd)/state/node_db"

mkdir -p "$TESTS_NODE_DB"
export TESTS_NODE_DB

rsync -a --delete "$NODE_STATE_DIR/db/" "$TESTS_NODE_DB"

WALLET_TAG=$(buildkite-agent meta-data get "release-cabal-version")
export WALLET_TAG

NODE_TAG="8.9.3"
export NODE_TAG

NODE_DB="$TESTS_NODE_DB"
export NODE_DB

WALLET_DB="$(pwd)/state/wallet_db"
mkdir -p "$WALLET_DB"
export WALLET_DB

WALLET_PORT=$(shuf -i 2000-65000 -n 1)
export WALLET_PORT

USER_ID=$(id -u)
export USER_ID

NODE_SOCKET_DIR=$(mktemp -d /tmp/node-preprod.XXXXXX)
export NODE_SOCKET_DIR

NODE_SOCKET_NAME="node.socket"
export NODE_SOCKET_NAME

COMPOSE_PROJECT_NAME="e2e-tests-$WALLET_PORT"
export COMPOSE_PROJECT_NAME

docker-compose down || true

docker-compose up -d

mkdir -p "$(pwd)/logs"

TESTS_LOGDIR="$(pwd)/logs"
export TESTS_LOGDIR

CARDANO_NODE_CONFIGS="$(pwd)/configs/cardano"
export CARDANO_NODE_CONFIGS

VERSION=$(buildkite-agent meta-data get "release-version")

TESTS_E2E_BINDIR="$(pwd)/cardano-wallet-$VERSION-linux64"
export TESTS_E2E_BINDIR

cd test/e2e

CARDANO_NODE_SOCKET_PATH="$NODE_SOCKET_DIR/$NODE_SOCKET_NAME"
export CARDANO_NODE_SOCKET_PATH

TESTS_E2E_STATEDIR=$(pwd)/state
export TESTS_E2E_STATEDIR

TESTS_E2E_TOKEN_METADATA=https://metadata.world.dev.cardano.org/
export TESTS_E2E_TOKEN_METADATA

TESTS_E2E_FIXTURES="$FIXTURE_DECRYPTION_KEY"

export TESTS_E2E_FIXTURES

nix develop -c rake wait_until_node_synced
nix develop -c rake spec

docker-compose down

rm -rf "$NODE_SOCKET_DIR"
19 changes: 17 additions & 2 deletions scripts/buildkite/release/docker-smoke-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ NETWORK=preprod
export NETWORK

TESTS_NODE_DB="$(pwd)/state/node_db"

mkdir -p "$TESTS_NODE_DB"
export TESTS_NODE_DB

Expand Down Expand Up @@ -38,6 +39,14 @@ tmpfile=$(mktemp -d /tmp/node-preprod.XXXXXX)
NODE_SOCKET_DIR="$tmpfile"
export NODE_SOCKET_DIR

NODE_SOCKET_NAME="node.socket"
export NODE_SOCKET_NAME

COMPOSE_PROJECT_NAME="docker-smoke-test-$WALLET_PORT"
export COMPOSE_PROJECT_NAME

docker compose down || true

docker-compose up -d

n=0
Expand All @@ -50,10 +59,10 @@ do
echo "$result" | jq
break
else
sleep 1
sleep 4
n=$((n+1))
fi
if [ "$n" -ge 20 ]
if [ "$n" -ge 30 ]
then break
fi
done
Expand All @@ -64,3 +73,9 @@ docker-compose logs > logs/docker-compose.log
docker-compose down

rm -rf "$tmpfile"

if [ "$result" == "wait" ];
then
echo "Failed to start the wallet server"
exit 1
fi
1 change: 0 additions & 1 deletion scripts/buildkite/release/linux-e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ CARDANO_NODE_CONFIGS="$(pwd)/configs/cardano"
export CARDANO_NODE_CONFIGS

VERSION=$(buildkite-agent meta-data get "release-version")
echo "VERSION=$VERSION"

buildkite-agent artifact \
download "result/linux/cardano-wallet-$VERSION-linux64.tar.gz" "."
Expand Down

0 comments on commit 2cf5231

Please sign in to comment.