fabric-samples/test-network-k8s-operator/justfile
Josh Kneubuhl 05e4b03283 Move fabric-kube-test-network from Hyperledgendary -> samples
Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>
2023-02-10 04:46:31 -05:00

189 lines
7.3 KiB
Makefile

#
# Copyright contributors to the Hyperledgendary Full Stack Asset Transfer project
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Main justfile to run all the development scripts
# To install 'just' see https://github.com/casey/just#installation
###############################################################################
#
###############################################################################
# Ensure all properties are exported as shell env-vars
set export
# Use environment variables from the (git-ignored and hidden) .env files
set dotenv-load
# set the current directory, and the location of the test dats
CWDIR := justfile_directory()
_default:
@just -f {{justfile()}} --list
# Run the check script to validate third party dependencies
check:
${CWDIR}/scripts/check.sh
###############################################################################
# Environment and just parameters
###############################################################################
CLUSTER_NAME := env_var_or_default("TEST_NETWORK_CLUSTER_NAME", "kind")
NAMESPACE := env_var_or_default("TEST_NETWORK_NAMESPACE", "test-network")
OPERATOR_IMAGE := env_var_or_default("TEST_NETWORK_OPERATOR_IMAGE", "ghcr.io/hyperledger-labs/fabric-operator:1.0")
FABRIC_VERSION := env_var_or_default("TEST_NETWORK_FABRIC_VERSION", "2.5.0-beta")
FABRIC_CA_VERSION := env_var_or_default("TEST_NETWORK_FABRIC_CA_VERSION", "1.5.6-beta3")
CA_IMAGE := env_var_or_default("TEST_NETWORK_CA_IMAGE", "hyperledger/fabric-ca")
CA_IMAGE_TAG := env_var_or_default("TEST_NETWORK_CA_IMAGE_TAG", FABRIC_CA_VERSION)
PEER_IMAGE := env_var_or_default("TEST_NETWORK_PEER_IMAGE", "ghcr.io/hyperledger-labs/k8s-fabric-peer")
PEER_IMAGE_TAG := env_var_or_default("TEST_NETWORK_PEER_IMAGE_TAG", "v0.8.0")
ORDERER_IMAGE := env_var_or_default("TEST_NETWORK_ORDERER_IMAGE", "hyperledger/fabric-orderer")
ORDERER_IMAGE_TAG := env_var_or_default("TEST_NETWORK_ORDERER_IMAGE_TAG", FABRIC_VERSION)
CHANNEL_NAME := env_var_or_default("TEST_NETWORK_CHANNEL_NAME", "mychannel")
CHAINCODE_NAME := env_var_or_default("TEST_NETWORK_CHAINCODE_NAME", "asset-transfer")
CHAINCODE_VERSION := env_var_or_default("TEST_NETWORK_CHAINCODE_VERSION", "v0.1.4")
CHAINCODE_SEQUENCE := env_var_or_default("TEST_NETWORK_CHAINCODE_SEQUENCE","1")
CHAINCODE_PKG_NAME := env_var_or_default("TEST_NETWORK_CHAINCODE_PKG_NAME","asset-transfer-typescript-v0.1.4.tgz")
CHAINCODE_PKG_URL := env_var_or_default("TEST_NETWORK_CHAINCODE_PKG_URL", "https://github.com/hyperledgendary/full-stack-asset-transfer-guide/releases/download/v0.1.4/" + CHAINCODE_PKG_NAME)
###############################################################################
# KIND / k8s targets
###############################################################################
# Start a local KIND cluster with nginx ingress
kind: check unkind
scripts/kind_with_nginx.sh {{CLUSTER_NAME}}
# Shut down the KIND cluster
unkind:
#!/usr/bin/env bash
kind delete cluster --name {{CLUSTER_NAME}}
if docker inspect kind-registry &>/dev/null; then
echo "Stopping container registry"
docker kill kind-registry
docker rm kind-registry
fi
###############################################################################
# TL/DR actions. These don't exist, other than for convenience to run the
# entire flow without splitting across multiple "org" terminals.
###############################################################################
start-network:
just start org0
just start org1
just start org2
# Shut down the test network and remove all certificates
destroy:
#!/usr/bin/env bash
rm -rf organizations/org0/enrollments && echo "org0 enrollments deleted"
rm -rf organizations/org1/enrollments && echo "org1 enrollments deleted"
rm -rf organizations/org2/enrollments && echo "org2 enrollments deleted"
rm -rf organizations/org0/chaincode && echo "org0 chaincode packages deleted"
rm -rf organizations/org1/chaincode && echo "org1 chaincode packages deleted"
rm -rf organizations/org2/chaincode && echo "org2 chaincode packages deleted"
rm -rf channel-config/organizations && echo "consortium MSP deleted"
rm channel-config/{{CHANNEL_NAME}}_genesis_block.pb && echo {{CHANNEL_NAME}} " genesis block deleted"
kubectl delete ns org0 --ignore-not-found=true
kubectl delete ns org1 --ignore-not-found=true
kubectl delete ns org2 --ignore-not-found=true
# Check that all network services are running
check-network:
scripts/check-network.sh
###############################################################################
# Test Network
###############################################################################
# Create the org namespace and start the operator for an org
init org:
#!/usr/bin/env bash
export NAMESPACE={{org}} # todo: move to an org directory?
scripts/start_operator.sh
# Start the nodes for an org
start org: (init org)
organizations/{{org}}/start.sh
# todo: clear enrollments, cc packages, etc.
# Stop the nodes for an org
stop org:
kubectl delete ns {{org}} --ignore-not-found=true
# todo: + dependency (start org)?
# Enroll the users for an org
enroll org:
organizations/{{org}}/enroll.sh
###############################################################################
# Channel Construction
###############################################################################
# Create the channel genesis block
create-genesis-block: check-network gather-msp
channel-config/create_genesis_block.sh
# todo: include this? Which org is running the target?
# Export the MSP certificates for all orgs
gather-msp:
just export-msp org0
just export-msp org1
just export-msp org2
# Export org MSP certificates to the consortium organizer
export-msp org:
organizations/{{org}}/export_msp.sh
# inspect the genesis block
inspect-genesis-block:
#!/usr/bin/env bash
configtxgen -inspectBlock channel-config/mychannel_genesis_block.pb | jq
# Join an org to the channel
join org:
organizations/{{org}}/join_channel.sh
###############################################################################
# Chaincode and Gateway Appplication Development
###############################################################################
# Install a smart contract on all peers in an org
install-cc org:
organizations/{{org}}/install_chaincode.sh
# Display env for targeting a peer with the Fabric binaries
show-context msp org peer:
#!/usr/bin/env bash
. {{CWDIR}}/scripts/utils.sh
appear_as {{msp}} {{org}} {{peer}}
# use export to load the peer context into the current environment:
# export $(just show-context Org1MSP org1 peer1)
printenv | egrep "CORE_PEER|FABRIC_|ORDERER_" | sort