mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-23 01:55:10 +00:00
189 lines
7.3 KiB
Makefile
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
|