mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
- Node latest LTS - Go latest stable - Fabric 2.5.14, 3.1.3 - Just 1.43.0 - k9s 0.50.15 - Kind 0.30.0 - yq 4.48.1 - nvm 0.40.3 This addresses build breakages due to back-level versions. Signed-off-by: Mark S. Lewis <Mark.S.Lewis@outlook.com>
167 lines
5.6 KiB
Bash
Executable file
167 lines
5.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
SUCCESS="✅"
|
|
WARN="⚠️ "
|
|
EXIT=0
|
|
|
|
if ! command -v docker &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install Docker; suggested install commands:"
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} Docker found:\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
KUBECTL_VERSION=v1.28.2 # $(curl -L -s https://dl.k8s.io/release/stable.txt)
|
|
if ! command -v kubectl &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install kubectl if you want to use k8s; suggested install commands:"
|
|
|
|
if [ $(uname -s) = Darwin ]; then
|
|
if [ $(uname -m) = arm64 ]; then
|
|
echo "curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/darwin/arm64/kubectl"
|
|
echo "chmod +x ./kubectl"
|
|
echo "sudo mv ./kubectl /usr/local/bin/kubectl"
|
|
echo "sudo chown root: /usr/local/bin/kubectl"
|
|
else
|
|
echo "curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/darwin/amd64/kubectl"
|
|
echo "chmod +x ./kubectl"
|
|
echo "sudo mv ./kubectl /usr/local/bin/kubectl"
|
|
echo "sudo chown root: /usr/local/bin/kubectl"
|
|
fi
|
|
else
|
|
echo "curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
|
|
echo "sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl"
|
|
fi
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} kubectl found:\t$(cat /tmp/cmdpath)"
|
|
|
|
KUBECTL_CLIENT_VERSION=$(kubectl version --client --output=yaml | grep gitVersion | cut -c 15-)
|
|
KUBECTL_CLIENT_MINOR_VERSION=$(kubectl version --client --output=yaml | grep minor | cut -c 11-12)
|
|
if [ "${KUBECTL_CLIENT_MINOR_VERSION}" -lt "24" ]; then
|
|
echo -e "${WARN} Found kubectl client version ${KUBECTL_CLIENT_VERSION}, which may be out of date. Please ensure client version >= ${KUBECTL_VERSION}"
|
|
EXIT=1
|
|
fi
|
|
fi
|
|
|
|
# Install kind
|
|
KIND_VERSION=0.20.0
|
|
if ! command -v kind &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install kind; suggested install commands:"
|
|
echo
|
|
if [ $(uname -s) = Darwin ]; then
|
|
if [ $(uname -m) = arm64 ]; then
|
|
echo "sudo curl --fail --silent --show-error -L https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-darwin-arm64 -o /usr/local/bin/kind"
|
|
else
|
|
echo "sudo curl --fail --silent --show-error -L https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-darwin-amd64 -o /usr/local/bin/kind"
|
|
fi
|
|
else
|
|
echo "sudo curl --fail --silent --show-error -L https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64 -o /usr/local/bin/kind"
|
|
fi
|
|
echo "sudo chmod 755 /usr/local/bin/kind"
|
|
echo
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} kind found:\t\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
# Install k9s
|
|
K9S_VERSION=0.25.3
|
|
if ! command -v k9s &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install k9s; suggested install commands:"
|
|
echo
|
|
if [ $(uname -s) = Darwin ]; then
|
|
if [ $(uname -m) = arm64 ]; then
|
|
echo "curl --fail --silent --show-error -L https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_Darwin_arm64.tar.gz -o /tmp/k9s_Darwin_arm64.tar.gz"
|
|
echo "tar -zxf /tmp/k9s_Darwin_arm64.tar.gz -C /usr/local/bin k9s"
|
|
else
|
|
echo "curl --fail --silent --show-error -L https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_Darwin_amd64.tar.gz -o /tmp/k9s_Darwin_amd64.tar.gz"
|
|
echo "tar -zxf /tmp/k9s_Darwin_amd64.tar.gz -C /usr/local/bin k9s"
|
|
fi
|
|
else
|
|
echo "curl --fail --silent --show-error -L https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_Linux_amd64.tar.gz -o /tmp/k9s_Linux_amd64.tar.gz"
|
|
echo "tar -zxf /tmp/k9s_Linux_amd64.tar.gz -C /usr/local/bin k9s"
|
|
fi
|
|
echo "sudo chown root /usr/local/bin/k9s"
|
|
echo "sudo chmod 755 /usr/local/bin/k9s"
|
|
echo
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} k9s found:\t\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
# Install just
|
|
JUST_VERSION=1.2.0
|
|
if ! command -v just &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install just; suggested install commands:"
|
|
echo "curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --tag ${JUST_VERSION} --to /usr/local/bin"
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} Just found:\t\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
# Install weft
|
|
if ! command -v weft &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install weft; suggested install commands:"
|
|
echo "npm install -g @hyperledger-labs/weft"
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} weft found:\t\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
# Install jq
|
|
if ! command -v jq &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install jq; suggested install commands:"
|
|
echo "sudo apt-update && sudo apt-install -y jq"
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} jq found:\t\t$(cat /tmp/cmdpath)"
|
|
fi
|
|
|
|
|
|
if ! command -v peer &> /tmp/cmdpath
|
|
then
|
|
echo "${WARN} Please install the peer; suggested install commands:"
|
|
echo "curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh | bash -s -- binary"
|
|
echo 'export WORKSHOP_PATH=$(pwd)'
|
|
echo 'export PATH=${WORKSHOP_PATH}/bin:$PATH'
|
|
echo 'export FABRIC_CFG_PATH=${WORKSHOP_PATH}/config'
|
|
EXIT=1
|
|
else
|
|
echo -e "${SUCCESS} peer found:\t\t$(cat /tmp/cmdpath)"
|
|
|
|
# double-check that the peer binary is compiled for the correct arch. This can occur when installing fabric
|
|
# binaries into a multipass VM, then running the Linux binaries from a Mac or windows Host OS via the volume share.
|
|
peer version &> /dev/null
|
|
rc=$?
|
|
if [ $rc -ne 0 ]; then
|
|
echo -e "${WARN} Could not execute peer. Was it compiled for the correct architecture?"
|
|
peer version
|
|
fi
|
|
fi
|
|
|
|
# tests if varname is defined in the env AND it's an existing directory
|
|
function must_declare() {
|
|
local varname=$1
|
|
|
|
if [[ ! -d ${!varname} ]]; then
|
|
echo "${WARN} ${varname} must be set to a directory"
|
|
EXIT=1
|
|
|
|
else
|
|
echo -e "${SUCCESS} ${varname}:\t${!varname}"
|
|
fi
|
|
}
|
|
|
|
must_declare "FABRIC_CFG_PATH"
|
|
must_declare "WORKSHOP_PATH"
|
|
|
|
rm /tmp/cmdpath &> /dev/null
|
|
|
|
exit $EXIT
|