codex-factory/scripts/environment.sh
nugaon b8e451e57e
feat: bee 1.0.0 (#41)
* feat: new Price Oracle bytecode

* refactor: remove file smth.txt

* feat: new PostageStamp contract

* feat: change contract deploy workflow

* feat: bee-1.0.0-rc2 compatible runner

* feat: build from source (#47)

* feat: extend build-envrionment.sh with building bee image from source

* ci: new workflow option parameter - beeVersionAsCommitHash

* fix(ci): try to overwrite BEE_VERSION sys variable

* fix: do not export BEE_VERSION after env build

* fix(ci): run build-environment without source command

* fix(ci): try to retrieve built BEE_VERSION value

* fix: save build BEE_VERSION value

* fix(ci): retrieve built image tag in the last step

* refactor: echoerr

* refactor(ci): export sys variables

* feat: disable warmup time (#46)

* feat: disable warmup time

* fix: place warmup-time to the correct place

* fix: put quote back where it truly belongs

* feat: state commit (#45)

* refactor: remove payment treshold option because it causes performance issues

* docs: design planned parameters for the new build workflow

* feat: build environment with traffic gen option

* fix(log): rephrase traffic gen log

* feat: special bee version tagging when state commit happens

* build: new env variable STATE_COMMIT

* ci: STATE_COMMIT

* feat: state commit scripts

* refactor: destroy containers after state producing

* refactor: remove unnecessary echo

* fix: blockchain version at state commit

* build: bumo bee-js version

* build: update package-lock

* fix: fixes

* ci: build environment workflow with state commit

* refactor: buy larger stamp

* fix: publish workflow

* refactor: increase stamp depth

* fix: bee version fetch at commit

* refactor: start containers normally instead of ephemeral for debugging

* fix(ci): add chown for bee user on bee-data-dirs in order to write bee state

* fix: try out the permission on bee data dir with 777 chmod

* fix(ci): give folder permission in the build environment phrase

* refactor(ci): raise sleep between uploads in order to generate cheques

* refactor: wait 11 secs after batch purchase

* fix: commit version tag string true instead of boolean

* fix: add state commit check for set COMMIT_VERSION_TAG

* chore: bump bee version

Co-authored-by: Cafe137 <77121044+Cafe137@users.noreply.github.com>
2021-06-21 16:10:55 +02:00

130 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
usage() {
cat << USAGE >&2
USAGE:
$ environment.sh [COMMAND] [PARAMETERS]
COMMANDS:
start create Bee cluster with the given parameters
stop stop Bee cluster
PARAMETERS:
--ephemeral create ephemeral container for bee-client. Data won't be persisted.
--workers=number all Bee nodes in the test environment. Default is 4.
--detach It will not log the output of Queen node at the end of the process.
--port-maps=number map ports of the cluster nodes to the hosting machine in the following manner:
1. 1633:1635
2. 11633:11635
3. 21633:21635 (...)
number represents the nodes number to map from. Default is 2.
USAGE
exit 1
}
stop() {
#Stop Bee nodes
docker stop "$SWARM_BLOCKCHAIN_NAME"
#Stop blockchain nodes
"$MY_PATH/bee.sh" stop
trap - SIGINT
exit 0;
}
MY_PATH=$(dirname "$0") # relative
MY_PATH=$( cd "$MY_PATH" && pwd ) # absolutized and normalized
# Check used system variable set
BEE_ENV_PREFIX=$("$MY_PATH/utils/env-variable-value.sh" BEE_ENV_PREFIX)
BEE_IMAGE_PREFIX=$("$MY_PATH/utils/env-variable-value.sh" BEE_IMAGE_PREFIX)
BLOCKCHAIN_VERSION=$("$MY_PATH/utils/env-variable-value.sh" BLOCKCHAIN_VERSION)
# Init variables
EPHEMERAL=false
WORKERS=4
LOG=true
SWARM_BLOCKCHAIN_NAME="$BEE_ENV_PREFIX-blockchain"
SWARM_NETWORK="$BEE_ENV_PREFIX-network"
PORT_MAPS=2
# Decide script action
case "$1" in
start)
shift 1
;;
stop)
stop
;;
*)
echoerr "Unknown command: $1"
usage
;;
esac
# Alter variables from flags
while [ $# -gt 0 ]
do
case "$1" in
--ephemeral)
EPHEMERAL=true
shift 1
;;
--workers=*)
WORKERS=${1#*=}
shift 1
;;
--port-maps=*)
PORT_MAPS="${1#*=}"
shift 1
;;
--detach)
LOG=false
shift 1
;;
--help)
usage
;;
*)
echoerr "Unknown argument: $1"
usage
;;
esac
done
echo "Create Docker network..."
"$MY_PATH/network.sh"
# Start blockchain node
echo "Start Blockchain node..."
BLOCKCHAIN_CONTAINER=$(docker container ls -qaf name=$SWARM_BLOCKCHAIN_NAME)
if [ -z "$BLOCKCHAIN_CONTAINER" ] ; then
BLOCKCHAIN_ARGUMENTS="--name $SWARM_BLOCKCHAIN_NAME --network $SWARM_NETWORK -p 127.0.0.1:9545:9545 -d"
if $EPHEMERAL ; then
BLOCKCHAIN_ARGUMENTS="$BLOCKCHAIN_ARGUMENTS --rm"
fi
docker run $BLOCKCHAIN_ARGUMENTS $BEE_IMAGE_PREFIX/$SWARM_BLOCKCHAIN_NAME:$BLOCKCHAIN_VERSION
else
docker start $BLOCKCHAIN_CONTAINER
fi
# Wait for blockchain service initializes
sleep 5
# Build up bee.sh parameters
BEE_SH_ARGUMENTS="--workers=$WORKERS --own-image --port-maps=$PORT_MAPS"
if $EPHEMERAL ; then
BEE_SH_ARGUMENTS="$BEE_SH_ARGUMENTS --ephemeral"
fi
if ! $LOG ; then
BEE_SH_ARGUMENTS="$BEE_SH_ARGUMENTS --detach"
fi
# Call bee.sh with the passed arguments
echo "Start Bee nodes..."
"$MY_PATH/bee.sh" start $BEE_SH_ARGUMENTS
# If the code run reach this point without detach flag,
# then the user interrupted the log process in the bee.sh
if $LOG ; then
docker stop $SWARM_BLOCKCHAIN_NAME
fi