-
Notifications
You must be signed in to change notification settings - Fork 221
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci(starship-action): add helper scripts
- Loading branch information
1 parent
da814dc
commit 5aff548
Showing
2 changed files
with
234 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
#!/bin/bash | ||
|
||
## Script used to install the helm chart for the devnet from a config file | ||
## Usage: | ||
## ./scripts/install.sh --coinfig <config_file> | ||
## Options: | ||
## -c|--config: config file to use (default: config.yaml) | ||
## -v|--version: helm chart version (default: 0.1.43) | ||
|
||
set -euo pipefail | ||
|
||
# read config file from args into variable | ||
CONFIGFILE="config.yaml" | ||
|
||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||
echo "Script dir: ${SCRIPT_DIR}" | ||
|
||
# default values | ||
DRY_RUN="" | ||
TIMEOUT="" | ||
NAMESPACE="" | ||
HELM_NAME="starship" | ||
HELM_CHART="starship/devnet" | ||
HELM_CHART_VERSION="0.2.3" | ||
|
||
function set_helm_args() { | ||
if [[ $TIMEOUT ]]; then | ||
args="$args --timeout $TIMEOUT --wait --debug" | ||
fi | ||
if [[ $NAMESPACE ]]; then | ||
args="$args --namespace $NAMESPACE --create-namespace" | ||
fi | ||
if [[ $DRY_RUN ]]; then | ||
args="$args --dry-run" | ||
fi | ||
num_chains=$(yq -r ".chains | length - 1" ${CONFIGFILE}) | ||
if [[ $num_chains -lt 0 ]]; then | ||
echo "No chains to parse: num: $num_chains" | ||
return 0 | ||
fi | ||
for i in $(seq 0 $num_chains); do | ||
scripts=$(yq -r ".chains[$i].scripts" ${CONFIGFILE}) | ||
if [[ "$scripts" == "null" ]]; then | ||
return 0 | ||
fi | ||
datadir="$(cd "$(dirname -- "${CONFIGFILE}")" >/dev/null; pwd -P)" | ||
for script in $(yq -r ".chains[$i].scripts | keys | .[]" ${CONFIGFILE}); do | ||
args="$args --set-file chains[$i].scripts.$script.data=$datadir/$(yq -r ".chains[$i].scripts.$script.file" ${CONFIGFILE})" | ||
done | ||
done | ||
} | ||
|
||
function install_chart() { | ||
args="" | ||
set_helm_args | ||
echo "args: $args" | ||
helm install ${HELM_NAME} ${HELM_CHART} --version ${HELM_CHART_VERSION} -f ${CONFIGFILE} $args | ||
} | ||
|
||
while [ $# -gt 0 ]; do | ||
case "$1" in | ||
-c|--config) | ||
CONFIGFILE="$2" | ||
shift 2 # past argument=value | ||
;; | ||
-v|--version) | ||
HELM_CHART_VERSION="$2" | ||
shift 2 # past argument | ||
;; | ||
-t|--timeout) | ||
TIMEOUT="$2" | ||
shift 2 # past argument | ||
;; | ||
-n|--name) | ||
HELM_NAME="$2" | ||
shift 2 # past argument | ||
;; | ||
--namespace) | ||
NAMESPACE="$2" | ||
shift 2 # past argument | ||
;; | ||
--chart) | ||
HELM_CHART="$2" | ||
shift 2 # past argument | ||
;; | ||
--dry-run) | ||
DRY_RUN=1 | ||
shift 2 # past argument | ||
;; | ||
-*|--*) | ||
echo "Unknown option $1" | ||
exit 1 | ||
;; | ||
*) | ||
;; | ||
esac | ||
done | ||
|
||
install_chart |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
#!/bin/bash | ||
|
||
set -euo pipefail | ||
|
||
function color() { | ||
local color=$1 | ||
shift | ||
local black=30 red=31 green=32 yellow=33 blue=34 magenta=35 cyan=36 white=37 | ||
local color_code=${!color:-$green} | ||
printf "\033[%sm%s\033[0m\n" "$color_code" "$*" | ||
} | ||
|
||
function stop_port_forward() { | ||
color green "Trying to stop all port-forward, if any...." | ||
PIDS=$(ps -ef | grep -i -e 'kubectl port-forward' | grep -v 'grep' | cat | awk '{print $2}') || true | ||
for p in $PIDS; do | ||
kill -15 $p | ||
done | ||
sleep 2 | ||
} | ||
|
||
# Default values | ||
CHAIN_RPC_PORT=26657 | ||
CHAIN_COMETMOCK_PORT=22331 | ||
CHAIN_GRPC_PORT=9090 | ||
CHAIN_LCD_PORT=1317 | ||
CHAIN_EXPOSER_PORT=8081 | ||
CHAIN_FAUCET_PORT=8000 | ||
RELAYER_REST_PORT=3000 | ||
RELAYER_EXPOSER_PORT=8081 | ||
EXPLORER_LCD_PORT=8080 | ||
REGISTRY_LCD_PORT=8080 | ||
REGISTRY_GRPC_PORT=9090 | ||
MONITORING_PROMETHEUS_PORT=8080 | ||
MONITORING_GRAFANA_PORT=8080 | ||
|
||
for i in "$@"; do | ||
case $i in | ||
-c=*|--config=*) | ||
CONFIGFILE="${i#*=}" | ||
shift # past argument=value | ||
;; | ||
-n=*|--namespace=*) | ||
NAMESPACE="${i#*=}" | ||
shift # past argument=value | ||
;; | ||
-*|--*) | ||
echo "Unknown option $i" | ||
exit 1 | ||
;; | ||
*) | ||
;; | ||
esac | ||
done | ||
|
||
stop_port_forward | ||
|
||
echo "Port forwarding for config ${CONFIGFILE}" | ||
echo "Port forwarding all chains" | ||
num_chains=$(yq -r ".chains | length - 1" ${CONFIGFILE}) | ||
if [[ $num_chains -gt -1 ]]; then | ||
for i in $(seq 0 $num_chains); do | ||
# derive chain pod name from chain id | ||
# https://github.com/cosmology-tech/starship/blob/main/charts/devnet/templates/_helpers.tpl#L56 | ||
chain=$(yq -r ".chains[$i].id" ${CONFIGFILE} ) | ||
chain=${chain/_/"-"} | ||
localrpc=$(yq -r ".chains[$i].ports.rpc" ${CONFIGFILE} ) | ||
localgrpc=$(yq -r ".chains[$i].ports.grpc" ${CONFIGFILE} ) | ||
locallcd=$(yq -r ".chains[$i].ports.rest" ${CONFIGFILE} ) | ||
localexp=$(yq -r ".chains[$i].ports.exposer" ${CONFIGFILE}) | ||
localfaucet=$(yq -r ".chains[$i].ports.faucet" ${CONFIGFILE}) | ||
color yellow "chains: forwarded $chain" | ||
if [[ $(yq -r ".chains[$i].cometmock.enabled" $CONFIGFILE) == "true" ]]; | ||
then | ||
[[ "$localrpc" != "null" ]] && color yellow " cometmock rpc to http://localhost:$localrpc" && kubectl port-forward pods/$chain-cometmock-0 $localrpc:$CHAIN_COMETMOCK_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
else | ||
[[ "$localrpc" != "null" ]] && color yellow " rpc to http://localhost:$localrpc" && kubectl port-forward pods/$chain-genesis-0 $localrpc:$CHAIN_RPC_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
fi | ||
[[ "$localgrpc" != "null" ]] && color yellow " grpc to http://localhost:$localgrpc" && kubectl port-forward pods/$chain-genesis-0 $localgrpc:$CHAIN_GRPC_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
[[ "$locallcd" != "null" ]] && color yellow " lcd to http://localhost:$locallcd" && kubectl port-forward pods/$chain-genesis-0 $locallcd:$CHAIN_LCD_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
[[ "$localexp" != "null" ]] && color yellow " exposer to http://localhost:$localexp" && kubectl port-forward pods/$chain-genesis-0 $localexp:$CHAIN_EXPOSER_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
[[ "$localfaucet" != "null" ]] && color yellow " faucet to http://localhost:$localfaucet" && kubectl port-forward pods/$chain-genesis-0 $localfaucet:$CHAIN_FAUCET_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
sleep 1 | ||
done | ||
else | ||
echo "No chains to port-forward: num: $num_chains" | ||
fi | ||
|
||
|
||
echo "Port forward relayers" | ||
num_relayers=$(yq -r ".relayers | length - 1" ${CONFIGFILE}) | ||
if [[ $num_relayers -gt -1 ]]; then | ||
for i in $(seq 0 $num_relayers); do | ||
# derive chain pod name from chain id | ||
# https://github.com/cosmology-tech/starship/blob/main/charts/devnet/templates/_helpers.tpl#L56 | ||
relayer=$(yq -r ".relayers[$i].name" ${CONFIGFILE} ) | ||
relayer=$(yq -r ".relayers[$i].type" ${CONFIGFILE} )-${relayer/_/"-"} | ||
localrest=$(yq -r ".relayers[$i].ports.rest" ${CONFIGFILE} ) | ||
localexposer=$(yq -r ".relayers[$i].ports.exposer" ${CONFIGFILE} ) | ||
color yellow "relayers: forwarded $relayer" | ||
[[ "$localrest" != "null" ]] && color yellow " rpc to http://localhost:$localrest" && kubectl port-forward pods/$relayer-0 $localrest:$RELAYER_REST_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
[[ "$localexposer" != "null" ]] && color yellow " rpc to http://localhost:$localexposer" && kubectl port-forward pods/$relayer-0 $localexposer:$RELAYER_EXPOSER_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
sleep 1 | ||
done | ||
else | ||
echo "No relayer to port-forward: num: $num_relayers" | ||
fi | ||
|
||
|
||
echo "Port forward services" | ||
|
||
if [[ $(yq -r ".registry.enabled" $CONFIGFILE) == "true" ]]; | ||
then | ||
kubectl port-forward service/registry 8081:$REGISTRY_LCD_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
kubectl port-forward service/registry 9091:$REGISTRY_GRPC_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
sleep 1 | ||
color yellow "registry: forwarded registry lcd to grpc http://localhost:8081, to http://localhost:9091" | ||
fi | ||
|
||
if [[ $(yq -r ".explorer.enabled" $CONFIGFILE) == "true" ]]; | ||
then | ||
kubectl port-forward service/explorer 8080:$EXPLORER_LCD_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
sleep 1 | ||
color green "Open the explorer to get started.... http://localhost:8080" | ||
fi | ||
|
||
if [[ $(yq -r ".monitoring.enabled" $CONFIGFILE) == "true" ]]; | ||
then | ||
color yellow "monitoring port forward:" | ||
localgrafana=$(yq -r ".monitoring.ports.grafana" ${CONFIGFILE}) | ||
localprometheus=$(yq -r ".monitoring.ports.prometheus" ${CONFIGFILE}) | ||
[[ "$localgrafana" != "null" ]] && color yellow " grafana to http://localhost:$localgrafana" && kubectl port-forward service/grafana $localgrafana:$MONITORING_GRAFANA_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
[[ "$localprometheus" != "null" ]] && color yellow " prometheus to http://localhost:$localprometheus" && kubectl port-forward service/prometheus-service $localprometheus:$MONITORING_PROMETHEUS_PORT --namespace $NAMESPACE > /dev/null 2>&1 & | ||
sleep 1 | ||
fi |